From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (NAM12-MW2-obe.outbound.protection.outlook.com [52.100.167.249]) by mx.groups.io with SMTP id smtpd.web08.2163.1603848143364585051 for ; Tue, 27 Oct 2020 18:22:23 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@os.amperecomputing.com header.s=selector2 header.b=f/JhLWD3; spf=pass (domain: os.amperecomputing.com, ip: 52.100.167.249, mailfrom: quan@os.amperecomputing.com) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=OOX6MHokJO5ejoE06TWmCDmTNIxcQclTlRxaqvLJQy/lnm6X0+8yDlvPr6J9S6PI1zos6dw7oNELzjo6XlheNNvIpBtC8DYknpkee/MY6V+DQO9r/l3+qaaNaXzOOdnWRzosqM1ZrxWNLGWDeWdp5k6+ZsYH5HPnplbH+C/GEulFXZrxHYsRDGQPtnSIw/BE404S0ik4EVnKw0DzuUKAblvvb/p+UFo/DTrRQE/cSlQMt6xnagJjY3ziKBeY5Ik5tCFKaq7ePgs6CfRR3ZD0aTh33aAv8CnAK1MfTG8mRswBgS9jhsXP7vMpsGua6QNdzP44OCgZuP+GN7OHKGqgyg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ZlBsp7Covmp+ZGfraipZSA7njNQQoOUNWC6dbUU351s=; b=GHgQY53G2OKGbHdNKHtnp3rNkxLS6TzihV6nBTwpHs0Okhoa9jBn/Kq4+w8CH2FftXJxs9K0AsIujHBIwkzuLbpkxZRrznO6fH7kp5N/JfSK4WV/u5BXBwI5xZAXmV8OLzYIbgu+aD5UBTrobNZ4AD6ZIpLA6Oz0f5x1q95EUh559qUqOPjZGb5VOlpjtWOlF/i4lBn95njxKxsnHnx0xxxf10hczKQPTj+LqOn9b/q/HN1snte7f0jzSC2fwk05iWmTqCI7+WPkUUIaxD+Yep9u5WpYq4MxkMZwNzWnda2fDqFHzMYzyqNT3/CcwBaiUidudlu8NCCSKEaJl5pOKw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=os.amperecomputing.com; dmarc=pass action=none header.from=os.amperecomputing.com; dkim=pass header.d=os.amperecomputing.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=os.amperecomputing.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ZlBsp7Covmp+ZGfraipZSA7njNQQoOUNWC6dbUU351s=; b=f/JhLWD35QyYSEpIDvydIK4ur4dPdhr755gu5N2kEEkLF5GoxYv9L2aRGyjprm7zuxoLKKaCsli47vJyR1A5HXB7gfT/oFsR2CYWZjDB+JXR+98W4DZJ5BpWxEOcqJhxnTp3mqi15Mh3dYTyWgTS1NMV7iDuLV3BaUTyrvXMX9Y= Authentication-Results: nuviainc.com; dkim=none (message not signed) header.d=none;nuviainc.com; dmarc=none action=none header.from=os.amperecomputing.com; Received: from SN6PR0102MB3487.prod.exchangelabs.com (2603:10b6:805:3::28) by SN6PR01MB3869.prod.exchangelabs.com (2603:10b6:805:1d::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3499.18; Wed, 28 Oct 2020 01:22:17 +0000 Received: from SN6PR0102MB3487.prod.exchangelabs.com ([fe80::c475:1e92:86f4:bafa]) by SN6PR0102MB3487.prod.exchangelabs.com ([fe80::c475:1e92:86f4:bafa%6]) with mapi id 15.20.3499.018; Wed, 28 Oct 2020 01:22:17 +0000 From: quan@os.amperecomputing.com To: Leif Lindholm , Ard Biesheuvel , devel@edk2.groups.io Cc: Open Source Review , Victor Gallardo , Quan Nguyen Subject: [PATCH v1 1/1] ArmPkg/ArmGicDxe: fix writes to GICD_IPRIORITYR when ARE enable Date: Wed, 28 Oct 2020 08:21:12 +0700 Message-Id: <20201028012112.12125-1-quan@os.amperecomputing.com> X-Mailer: git-send-email 2.28.0 X-Originating-IP: [118.69.219.201] X-ClientProxiedBy: HK0PR01CA0055.apcprd01.prod.exchangelabs.com (2603:1096:203:a6::19) To SN6PR0102MB3487.prod.exchangelabs.com (2603:10b6:805:3::28) Return-Path: quan@os.amperecomputing.com MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from hcm-sw-17.amperecomputing.com (118.69.219.201) by HK0PR01CA0055.apcprd01.prod.exchangelabs.com (2603:1096:203:a6::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3499.18 via Frontend Transport; Wed, 28 Oct 2020 01:22:15 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 33e4f521-98fe-4056-64e7-08d87adfe8af X-MS-TrafficTypeDiagnostic: SN6PR01MB3869: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:4714; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 1E3b1Q75Yi7tBMC5vEUKwNuFBi1sycxAPCsz5PiYAWrVF5sbyo83h65kjcKWzSb7odAK4lDC2x7QEEio2StVb7jUHEIvSE5o3/J8SIjkme+SspM9vNBWP5Yz+4B0w44yuxSrOaN651yLri6DyA7xJ+ts8yiyr4kb99LubEXP/BfQ0HpDm7TZu+jkgpB6pHN4gsoAhvAvD7VvPPdt2pflNKWX76YwIX6kYeI3ioCUlpshW9Le9PddTIvYlMyYdjUkN6Bo01/KmZEhTzzT18IsD+k/8tLsWN8796QcxLqhmuXeoztJ+UvNbfnKiavVX1qM7Jw+C5lHtKYlgmVMT4EAiDu+khsiImNzRUaxhgsC+g0L0edTgSfYwvPaIf6cMoSM2TSpzGMeqgZV7PvmxvBzKSoltR/OW6L2yEsjtakdAJ7pVdD5pbUQFQf6JYzPVrk8xkzMIneIHuEPCUBiNHu8Y6ie7v+k0UZ/+7Ne4suMzm3eY05IcRxfxgk6v/cGCzsZ94nz/gAbP2HhsylNjM6B3xCVXxIfC42CMtB4QRPa2rt493wP6PIhS+vutmVUIsCrMdDyHS0ijqvzHRwTDnw1KDmY8tFIZzPz/L+nCAEe+14SU/cFenOWsLjLjVEGqo0s+jd3NPpGCu6YU/OHaEMarBOFMo1UMZ7Lul3sqmOTUz9xoQn8PYB5PdMeadh9Opwj X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:5;SRV:;IPV:NLI;SFV:SPM;H:SN6PR0102MB3487.prod.exchangelabs.com;PTR:;CAT:OSPM;SFS:(4636009)(39830400003)(346002)(396003)(366004)(136003)(376002)(66556008)(2906002)(66476007)(52116002)(66946007)(4326008)(107886003)(956004)(6666004)(86362001)(5660300002)(110136005)(6506007)(316002)(83380400001)(8936002)(26005)(19627235002)(54906003)(2616005)(478600001)(16526019)(186003)(8676002)(6486002)(6512007)(1076003)(11215385002);DIR:OUT;SFP:1501; X-MS-Exchange-AntiSpam-MessageData: duqA0Ns5mEwzc4nqCDtzlmiZ+si9MHwH0bsqdBS6sPB+T16eFNWqlVYm6+asufC3JV/HnDp7jGq8DoTswt4IzJlgkeGK2y0iljzDGFonY+rEXL6jrnNVYKn0Ah3kYRS4HWBhgufm6Os8R4OMGwIz5nI0yUoh/TdHaQufH8aX0KFf9WZ6RxnMN0M2p9hJbSTV8LIQMESMIgQxLcIbYynGnI1jQkoYmEue+RFL56n9oxnU27YXNDROsiv2UW3fSGf30accCL9MbATItiODP/k2mrU8IwhUxkixEF1rJVQXgnwQbT0mOjUD0KA3Vq1IwriVvjdRu1dILhB6VQwvN3QbMV/iMN0ezjkxKc4tnx8dwa7XIK5iI1zLG+Wbp/TgG5Fjn/nOED9dAjjimhnzyzS3ku1pN+LbSzkECCFjj2xwKtu2lDU4gjvyiRvy+QnbEN5VjbDE+RS93K5yI3ysRwA1WcuSI0Cj32J3yj5UFG2No018tfWsm6P/3snHqAe7D+GATFn9na5h/Lt9/mnv5wYl7Syc4ckFS+n5BUqrxlRuyJ32o8DGPz9dwJgudw+Mylt7fTSP9TZW2WZdsMc9AmNMNNwb3PGrqrYszaZbdSoqHXQr9gdnTQ1rLsaFk76NbYt6i6RDASc4XURG7Ov8gqZxSg== X-OriginatorOrg: os.amperecomputing.com X-MS-Exchange-CrossTenant-Network-Message-Id: 33e4f521-98fe-4056-64e7-08d87adfe8af X-MS-Exchange-CrossTenant-AuthSource: SN6PR0102MB3487.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Oct 2020 01:22:17.6048 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3bc2b170-fd94-476d-b0ce-4229bdc904a7 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 0POct3QrV4LZmmlp+IpmD3xfLp2frrKBXZwUqKJlsR1MXEUsb2rtOVQmoI3HE2lpYNL8DmcpFmgicvcMTSO6o4DwcTXgDyzAT7uy3meLg1k= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN6PR01MB3869 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain According to ARM doc IHI 0069F, section 11.9.18, "Accessing the GICD_IPRIORITYR:", "These registers are always used when affinity routing is not enabled. When affinity routing is enabled for the Security state of an interrupt: * GICR_IPRIORITYR is used instead of GICD_IPRIORITYR where n =3D 0 to 7 (that is, for SGIs and PPIs)." The current ArmGicV3 code tries to initialize all the IPRIORITYR registers to a default state via the Distributor (GICD), so skip writes to the first eight IPRIORITYR registers when Affinity Routing is Enabled. Cc: Leif Lindholm Cc: Ard Biesheuvel Signed-off-by: Victor Gallardo Signed-off-by: Quan Nguyen --- ArmPkg/Drivers/ArmGic/GicV3/ArmGicV3Dxe.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/ArmPkg/Drivers/ArmGic/GicV3/ArmGicV3Dxe.c b/ArmPkg/Drivers/Arm= Gic/GicV3/ArmGicV3Dxe.c index d7da1f198d9e..bc543502481b 100644 --- a/ArmPkg/Drivers/ArmGic/GicV3/ArmGicV3Dxe.c +++ b/ArmPkg/Drivers/ArmGic/GicV3/ArmGicV3Dxe.c @@ -378,6 +378,7 @@ GicV3DxeInitialize ( UINTN RegShift;=0D UINT64 CpuTarget;=0D UINT64 MpId;=0D + BOOLEAN AffinityRoutingEnabled =3D FALSE;=0D =0D // Make sure the Interrupt Controller Protocol is not already installed = in=0D // the system.=0D @@ -391,11 +392,21 @@ GicV3DxeInitialize ( // Routing enabled. So ensure that the ARE bit is set.=0D if (!FeaturePcdGet (PcdArmGicV3WithV2Legacy)) {=0D MmioOr32 (mGicDistributorBase + ARM_GIC_ICDDCR, ARM_GIC_ICDDCR_ARE);=0D + // If Affinity Routing is Enabled, the first 32 interrupts (SGI and PP= I)=0D + // can be programmed only through Redistributor interface (GICR).=0D + // Initializing the GICD_IPRIORITYR registers for these interrupts can= be=0D + // skipped as the Redistributor will be powered up and initialized=0D + // at the appropriate time (e.g. in EL3 by trusted firmware).=0D + AffinityRoutingEnabled =3D TRUE;=0D }=0D =0D for (Index =3D 0; Index < mGicNumInterrupts; Index++) {=0D GicV3DisableInterruptSource (&gHardwareInterruptV3Protocol, Index);=0D =0D + if (AffinityRoutingEnabled && Index < 32) {=0D + continue;=0D + }=0D +=0D // Set Priority=0D RegOffset =3D Index / 4;=0D RegShift =3D (Index % 4) * 8;=0D --=20 2.28.0