From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by spool.mail.gandi.net (Postfix) with ESMTPS id A7C2E9413D0 for ; Tue, 19 Sep 2023 11:20:32 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=x+PAZGCJrsMKMqGqdSprDeVQ6DsczWjDjVpNIK6W33s=; c=relaxed/simple; d=groups.io; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Transfer-Encoding:Content-Type; s=20140610; t=1695122431; v=1; b=XBw7NyHbALX9lnJWBDKNz52TVf4SjRew/cQ8J35aaaSEvBeUPK30l4gXSN6CgXinxfbnASR0 0EHA1I7cNnWG6rxv+KhxevOVXVPIHbfEM49X+wVaZQM47CugvCrambbB8nhEIz2bh+0EfDTAw8v HU0zRrEUtE3lNM+N5bEm42AM= X-Received: by 127.0.0.2 with SMTP id Qd8pYY7687511xEAaSEXpCyt; Tue, 19 Sep 2023 04:20:31 -0700 X-Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) by mx.groups.io with SMTP id smtpd.web10.5888.1695122430751898776 for ; Tue, 19 Sep 2023 04:20:30 -0700 X-Received: from pps.filterd (m0279862.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 38JB0CeO006604; Tue, 19 Sep 2023 11:20:28 GMT X-Received: from nasanppmta05.qualcomm.com (i-global254.qualcomm.com [199.106.103.254]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 3t78upg6yg-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 19 Sep 2023 11:20:27 +0000 X-Received: from nasanex01c.na.qualcomm.com (nasanex01c.na.qualcomm.com [10.45.79.139]) by NASANPPMTA05.qualcomm.com (8.17.1.5/8.17.1.5) with ESMTPS id 38JBKRjN001516 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 19 Sep 2023 11:20:27 GMT X-Received: from qc-i7.qualcomm.com (10.80.80.8) by nasanex01c.na.qualcomm.com (10.45.79.139) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.36; Tue, 19 Sep 2023 04:20:25 -0700 From: "Leif Lindholm" To: CC: Peter Maydell , Ard Biesheuvel , Sami Mujawar Subject: [edk2-devel] [PATCH 2/2] ArmVirtPkg: handle virtual EL2 timer in DT Date: Tue, 19 Sep 2023 12:20:15 +0100 Message-ID: <20230919112015.229479-3-quic_llindhol@quicinc.com> In-Reply-To: <20230919112015.229479-1-quic_llindhol@quicinc.com> References: <20230919112015.229479-1-quic_llindhol@quicinc.com> MIME-Version: 1.0 X-Originating-IP: [10.80.80.8] X-ClientProxiedBy: nasanex01a.na.qualcomm.com (10.52.223.231) To nasanex01c.na.qualcomm.com (10.45.79.139) X-QCInternal: smtphost X-Proofpoint-GUID: NBc7EnEvXX4583LBHwc6bcNlKeMOvBe0 X-Proofpoint-ORIG-GUID: NBc7EnEvXX4583LBHwc6bcNlKeMOvBe0 Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,quic_llindhol@quicinc.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: OlGGCtyXcWUhI1yAR1w7YqcKx7686176AA= Content-Transfer-Encoding: 8bit Content-Type: text/plain X-GND-Status: LEGIT Authentication-Results: spool.mail.gandi.net; dkim=pass header.d=groups.io header.s=20140610 header.b=XBw7NyHb; dmarc=fail reason="SPF not aligned (relaxed), DKIM not aligned (relaxed)" header.from=quicinc.com (policy=none); spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce@groups.io FEAT_VHE, introduced in ARMv8.1, adds a virtual EL2 timer. However, this library verifies that exactly 3 or 4 12-byte timer interrupts are provided in input DT, ASSERTing when the new timer is added. Change the assert to >= 36. Extend the current logic, also initializing PcdArmArchTimerHypVirtIntrNum if 5 interrupts are provided. Signed-off-by: Leif Lindholm Reported-by: Peter Maydell Cc: Ard Biesheuvel Cc: Sami Mujawar --- ArmVirtPkg/ArmVirtQemu.dsc | 1 + ArmVirtPkg/Library/ArmVirtTimerFdtClientLib/ArmVirtTimerFdtClientLib.inf | 1 + ArmVirtPkg/Library/ArmVirtTimerFdtClientLib/ArmVirtTimerFdtClientLib.c | 13 +++++++++---- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/ArmVirtPkg/ArmVirtQemu.dsc b/ArmVirtPkg/ArmVirtQemu.dsc index 1e0225951aef..30e3cfc8b9cc 100644 --- a/ArmVirtPkg/ArmVirtQemu.dsc +++ b/ArmVirtPkg/ArmVirtQemu.dsc @@ -253,6 +253,7 @@ [PcdsDynamicDefault.common] gArmTokenSpaceGuid.PcdArmArchTimerIntrNum|0x0 gArmTokenSpaceGuid.PcdArmArchTimerVirtIntrNum|0x0 gArmTokenSpaceGuid.PcdArmArchTimerHypIntrNum|0x0 + gArmTokenSpaceGuid.PcdArmArchTimerHypVirtIntrNum|0x0 # # ARM General Interrupt Controller diff --git a/ArmVirtPkg/Library/ArmVirtTimerFdtClientLib/ArmVirtTimerFdtClientLib.inf b/ArmVirtPkg/Library/ArmVirtTimerFdtClientLib/ArmVirtTimerFdtClientLib.inf index 9e6f6f63a5a2..f8fc013700ad 100644 --- a/ArmVirtPkg/Library/ArmVirtTimerFdtClientLib/ArmVirtTimerFdtClientLib.inf +++ b/ArmVirtPkg/Library/ArmVirtTimerFdtClientLib/ArmVirtTimerFdtClientLib.inf @@ -40,6 +40,7 @@ [Pcd] gArmTokenSpaceGuid.PcdArmArchTimerIntrNum gArmTokenSpaceGuid.PcdArmArchTimerVirtIntrNum gArmTokenSpaceGuid.PcdArmArchTimerHypIntrNum + gArmTokenSpaceGuid.PcdArmArchTimerHypVirtIntrNum [Depex] gFdtClientProtocolGuid diff --git a/ArmVirtPkg/Library/ArmVirtTimerFdtClientLib/ArmVirtTimerFdtClientLib.c b/ArmVirtPkg/Library/ArmVirtTimerFdtClientLib/ArmVirtTimerFdtClientLib.c index 38dd6c533329..3b8491525eb3 100644 --- a/ArmVirtPkg/Library/ArmVirtTimerFdtClientLib/ArmVirtTimerFdtClientLib.c +++ b/ArmVirtPkg/Library/ArmVirtTimerFdtClientLib/ArmVirtTimerFdtClientLib.c @@ -34,7 +34,8 @@ ArmVirtTimerFdtClientLibConstructor ( FDT_CLIENT_PROTOCOL *FdtClient; CONST INTERRUPT_PROPERTY *InterruptProp; UINT32 PropSize; - INT32 SecIntrNum, IntrNum, VirtIntrNum, HypIntrNum; + INT32 SecIntrNum, IntrNum, VirtIntrNum, HypIntrNum, + HypVirtIntrNum; RETURN_STATUS PcdStatus; Status = gBS->LocateProtocol ( @@ -66,10 +67,10 @@ ArmVirtTimerFdtClientLibConstructor ( } // - // - interrupts : Interrupt list for secure, non-secure, virtual and - // hypervisor timers, in that order. + // - interrupts : Interrupt list for secure, non-secure, virtual, + // hypervisor and hypervisor virtual timers, in that order. // - ASSERT (PropSize == 36 || PropSize == 48); + ASSERT (PropSize >= 36); SecIntrNum = SwapBytes32 (InterruptProp[0].Number) + (InterruptProp[0].Type ? 16 : 0); @@ -79,6 +80,8 @@ ArmVirtTimerFdtClientLibConstructor ( + (InterruptProp[2].Type ? 16 : 0); HypIntrNum = PropSize < 48 ? 0 : SwapBytes32 (InterruptProp[3].Number) + (InterruptProp[3].Type ? 16 : 0); + HypVirtIntrNum = PropSize < 60 ? 0 : SwapBytes32 (InterruptProp[4].Number) + + (InterruptProp[4].Type ? 16 : 0); DEBUG (( DEBUG_INFO, @@ -97,6 +100,8 @@ ArmVirtTimerFdtClientLibConstructor ( ASSERT_RETURN_ERROR (PcdStatus); PcdStatus = PcdSet32S (PcdArmArchTimerHypIntrNum, HypIntrNum); ASSERT_RETURN_ERROR (PcdStatus); + PcdStatus = PcdSet32S (PcdArmArchTimerHypVirtIntrNum, HypVirtIntrNum); + ASSERT_RETURN_ERROR (PcdStatus); return EFI_SUCCESS; } -- 2.30.2 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#108825): https://edk2.groups.io/g/devel/message/108825 Mute This Topic: https://groups.io/mt/101453750/7686176 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/leave/12367111/7686176/1913456212/xyzzy [rebecca@openfw.io] -=-=-=-=-=-=-=-=-=-=-=-