From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (NAM11-CO1-obe.outbound.protection.outlook.com [52.100.173.219]) by mx.groups.io with SMTP id smtpd.web12.7341.1608125161683424093 for ; Wed, 16 Dec 2020 05:26:01 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@os.amperecomputing.com header.s=selector2 header.b=qwhAhknU; spf=pass (domain: os.amperecomputing.com, ip: 52.100.173.219, mailfrom: quan@os.amperecomputing.com) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=DZmodUdZ/cqhvzQ2yikXrkptYmsPBYvkDBZ8J/G4gIAOnEUlkZajkjErsb8ItpQOsLJkdrbKQcONNooASGgVVmwnmyEjSbft01rnSZ2r+AatzsNPczQAPQD8PpXbG7pod0AuwFQa2QDNe3FMN8ShtxQNiUp6J3KNwa8fs9N5QMY3O0mh4BZti4PqL+id3eB6xqfCn2aO0j4ypeQqAIzDV6hzJU//SbzeaLtHLRxfMM0RkHNeJDtWjiegZLQEB4YvUCnuPdHK4fLQGY0HooNpI+R2dpfvakBZToAuUr6W91v2JlbkpMCtcTJZEqtay3t5yT+iEjx+irv+fMH8RN7DIQ== 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=/+kYVHFxjWJ8N5a14OQnCZH9C7RPpFRDLxTCUQZSAYQ=; b=XrFPZ/YXqlxPzNL45sYYPEuv3dm729ZTw18Q/GSLWIs8tr6xocNpF4RTCTVfnT7f3VQ+7EFEyEbJDHGu+zXOXUjgBGFJ1UZTRrwoXyj/Z1G5jn8Pja/JrbLjltgDJOW65EkHsD/6vcwXnS+k4ByRuRqxOLHEhp63Hx+JlP3oJPPolvRCbu/SjQZ3iNBEQ+amvoQBQcNjLpx5VkeOiKzgsHOdtEBM4oBV0t7ckzEcj/d7auZaInpg7/TtNefQy/uUcCg2ATB11JpHf/uXSI7tPb2+hE4AtQUzmGGj0uobH2da9u1HI2B0e6DsgkS+RuoYcEp9vRYd2xGlXgRMeVevWw== 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=/+kYVHFxjWJ8N5a14OQnCZH9C7RPpFRDLxTCUQZSAYQ=; b=qwhAhknUbQTStfqn7gOUjEXvDPpJbowvwFPhOVudB29R0OsYzvo01TSYu+bgp+mOgjvJd2Y5lEKtXhEB9wI/i28f0BFd6+tawgY426qKJSwtg6WqeqF8bvp7A3eRc2IjmMCp0/6AS9NdFbzpleIWp5pZS69eAy/QP7RwnnjE5TE= Authentication-Results: edk2.groups.io; dkim=none (message not signed) header.d=none;edk2.groups.io; dmarc=none action=none header.from=os.amperecomputing.com; Received: from MW2PR0102MB3482.prod.exchangelabs.com (2603:10b6:302:c::32) by MW4PR01MB6321.prod.exchangelabs.com (2603:10b6:303:7b::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3654.24; Wed, 16 Dec 2020 13:25:57 +0000 Received: from MW2PR0102MB3482.prod.exchangelabs.com ([fe80::e903:700a:f17:7a17]) by MW2PR0102MB3482.prod.exchangelabs.com ([fe80::e903:700a:f17:7a17%7]) with mapi id 15.20.3654.020; Wed, 16 Dec 2020 13:25:57 +0000 From: "Quan Nguyen" To: devel@edk2.groups.io Cc: Leif Lindholm , Ard Biesheuvel , Victor Gallardo , Open Source Submission , Quan Nguyen Subject: [PATCH v2 1/2] ArmPkg/ArmGicLib: Add ArmGicSetInterruptPriority() helper function Date: Wed, 16 Dec 2020 20:25:20 +0700 Message-Id: <20201216132521.5915-2-quan@os.amperecomputing.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201216132521.5915-1-quan@os.amperecomputing.com> References: <20201216132521.5915-1-quan@os.amperecomputing.com> X-Originating-IP: [118.69.219.201] X-ClientProxiedBy: HK2PR02CA0140.apcprd02.prod.outlook.com (2603:1096:202:16::24) To MW2PR0102MB3482.prod.exchangelabs.com (2603:10b6:302:c::32) 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 HK2PR02CA0140.apcprd02.prod.outlook.com (2603:1096:202:16::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3654.12 via Frontend Transport; Wed, 16 Dec 2020 13:25:55 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: cffe708c-3710-43b4-11ce-08d8a1c61f7e X-MS-TrafficTypeDiagnostic: MW4PR01MB6321: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:6430; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 5sWWdehYuMvvpqEX+mqsPnOO8bCn+nTwyYEsbApN68PxIqeh13BXVjC0SEOJdqIHWOj3+a2bsOKU6zkhqy9lIeskW4bJcBIVfmwHCHPPVJYerx/0rkLa122dXAlC1NiB7VlxmHVIQZ1P+Z6gAcs+7ElSBgbSiQvdnTQDfcs3qpg7ckruVYy5bG2xxKxR7LIgx5p9wvrnRbCsvWOHcthTr75PSRxUt2my5WqpttontgtevER1MVLWB4bESn6iiNkAPwrZaRF34Wv+S8OUhUcGme2x+Eu+uWdRVogegJLNjtDzd/scMw3ErZFzU6P2GKCX4FbbVEa1VBzLM7UQ5Na4k8zdxdwynnPMU9dIl+7Q1YEcStJfAoUbqsGjnVf7HGY0t9SfbQxE0bkagvCQJ3JMv9+yVLsmJ58skIF5kpxixtshTDDn/miNF+ipUWs9z0LsPI2iVJf0B6brcF9Tcbbd/igm65p9//Kr6eLJSnSqQxgLFdyUVLYuobiZaoDpqVwhRcE58YuAhfVlAKRuJ62pIhlCqkNDT7Ml7Bzcltxb0QnLYZICg4FyHvAf7TwASJycS4q843ZtLCjbM1Ufy1deVZtHcNKOHaHmZrYxZ3xiRqbFbVwYhzPXoakXs6FuQTVxIho2irlvfhUIwMJeDqFL55TTP8qQGNLrVXzq8NaQY3Y/G3i//xjo9qvPCoh/ovcOjmTZgWRuBrhnFfkA6gFffw== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:5;SRV:;IPV:NLI;SFV:SPM;H:MW2PR0102MB3482.prod.exchangelabs.com;PTR:;CAT:OSPM;SFS:(4636009)(346002)(366004)(136003)(376002)(396003)(39850400004)(8676002)(83380400001)(6486002)(2616005)(316002)(86362001)(5660300002)(2906002)(478600001)(66946007)(6512007)(54906003)(956004)(8936002)(6506007)(16526019)(6666004)(66556008)(107886003)(52116002)(66476007)(26005)(1076003)(4326008)(6916009)(186003)(213903007)(11215385002);DIR:OUT;SFP:1501; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?TGTaG5jpDdQaNSQwlG+aeoPP1YuHH3tgXMhjeCDsZnyg1i9BtyN6fcI8TYIt?= =?us-ascii?Q?0KFYkVYdUSm/8LhdkMlJ0td2EGr3ZuPyGLObLbEGfG507LCvBWSRyhMK/k+7?= =?us-ascii?Q?KHUaoSilMgbWvos9E8spZq1SRNwxV5Nnt+Dop7Cb2LvFHQ6Bc1f/jLo6Ia59?= =?us-ascii?Q?MFJjaAEzq3izCr+CsBU83WbNOpVXu4VmS6Ku6AW+cXxyQa4dNe/l878b3xo8?= =?us-ascii?Q?3JRR25xN5g7AnujgC6zQ+9Wmg688Pzzc6ChsKYudzha3lAefFR6nxUYgPgJM?= =?us-ascii?Q?Xyv0WamXzT/t4HFsQhP8Sw1Trz/i1MnhLeCgU111/VtQW5Jczqkbn0clkRdf?= =?us-ascii?Q?55gIdLYNdCXkw0rdzUMJRej1aAAWwauK+O6R7ecqO1IOJibFrxFu/IZYsnKK?= =?us-ascii?Q?ubbs5edBSu3dECFpXFok/xSdtDYaASPJMZ2bsz4/0vbNmhkNcmZ3GTwrGHl3?= =?us-ascii?Q?xNri6SqpyyHSQbxvXROZVMUK/wSuPwkctGHSWqjvbJ9UZMzB252AYWlYGWms?= =?us-ascii?Q?3i47AJtg8hozNPMuSykdl+Z/u6xSJYyAF9G3q0tdA38kYg7mLZ3TLswRjapJ?= =?us-ascii?Q?RgrVjtazyrTEgQdH+t5Vr3NCC8ePqU6DFS27OdTWPw6GJmsw0hKkMhIr28Sw?= =?us-ascii?Q?/E+RiakaXD78Pxh+tivXigJMs65IHlMx+rVbHdr1BuShrzjQXlCZRCY4p+KZ?= =?us-ascii?Q?EPnDHdNeKzdPdk3lvQ+jG1IAgovtdw1wINAwDOu0l1mcXh+sNNp8CAzxmJVW?= =?us-ascii?Q?5tm7SYvqkqqxZ1Sb7HajOqUkRWzWffM3+xFKuTxX9XEqUMo8iOgmLf4xR+X/?= =?us-ascii?Q?TluOxmdsBNEJZWxV/6S2j92gkYvy1+pBnObKqBgxUsosqrUTTbz2E8heFdwa?= =?us-ascii?Q?CAIXVZovLZkeg3TM5tAkJ+ylipTJguLS45zU6SgqnVm2buDuvDUHn6SiwRii?= =?us-ascii?Q?o1KXhUelua19gFKdxZ1XFFgwNwrTYXzNRiMhBL5mt4mdRxvmLS8dOFB9QzYs?= =?us-ascii?Q?3wty?= X-OriginatorOrg: os.amperecomputing.com X-MS-Exchange-CrossTenant-AuthSource: MW2PR0102MB3482.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Dec 2020 13:25:57.5938 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3bc2b170-fd94-476d-b0ce-4229bdc904a7 X-MS-Exchange-CrossTenant-Network-Message-Id: cffe708c-3710-43b4-11ce-08d8a1c61f7e X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: KC0C3c7mnQqLzMzGKTWOsQdz0yhoMf3I0v4rNDpRpwjkW17SXVvaXE8TJJhjmngpFdqHfJZ03F0Oy5miXBX0ZYAU408ZUdGYa+SkTxiXwiI= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR01MB6321 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain According to ARM IHI 0069F, section 11.9.18 GICD_IPRIORITYR, Interrupt Priority Registers, n =3D 0 - 254, 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). As setting interrupt priority for SGIs and PPIs are handled using difference registers depends on the mode, this patch instroduces ArmGicSetInterruptPriority() helper function to handle the discrepancy. Cc: Leif Lindholm Cc: Ard Biesheuvel Signed-off-by: Quan Nguyen --- ArmPkg/Drivers/ArmGic/ArmGicLib.c | 44 ++++++++++++++++++++++++++++++ ArmPkg/Include/Library/ArmGicLib.h | 9 ++++++ 2 files changed, 53 insertions(+) diff --git a/ArmPkg/Drivers/ArmGic/ArmGicLib.c b/ArmPkg/Drivers/ArmGic/ArmG= icLib.c index 001e6b143104..8ef32b33a154 100644 --- a/ArmPkg/Drivers/ArmGic/ArmGicLib.c +++ b/ArmPkg/Drivers/ArmGic/ArmGicLib.c @@ -199,6 +199,50 @@ ArmGicEndOfInterrupt ( }=0D }=0D =0D +VOID=0D +EFIAPI=0D +ArmGicSetInterruptPriority (=0D + IN UINTN GicDistributorBase,=0D + IN UINTN GicRedistributorBase,=0D + IN UINTN Source,=0D + IN UINTN Priority=0D + )=0D +{=0D + UINT32 RegOffset;=0D + UINTN RegShift;=0D + ARM_GIC_ARCH_REVISION Revision;=0D + UINTN GicCpuRedistributorBase;=0D +=0D + // Calculate register offset and bit position=0D + RegOffset =3D Source / 4;=0D + RegShift =3D (Source % 4) * 8;=0D +=0D + Revision =3D ArmGicGetSupportedArchRevision ();=0D + if ((Revision =3D=3D ARM_GIC_ARCH_REVISION_2) ||=0D + FeaturePcdGet (PcdArmGicV3WithV2Legacy) ||=0D + SourceIsSpi (Source)) {=0D + MmioAndThenOr32 (=0D + GicDistributorBase + ARM_GIC_ICDIPR + (4 * RegOffset),=0D + ~(0xff << RegShift),=0D + Priority << RegShift=0D + );=0D + } else {=0D + GicCpuRedistributorBase =3D GicGetCpuRedistributorBase (=0D + GicRedistributorBase,=0D + Revision=0D + );=0D + if (GicCpuRedistributorBase =3D=3D 0) {=0D + return;=0D + }=0D +=0D + MmioAndThenOr32 (=0D + GicCpuRedistributorBase + ARM_GIC_ICDIPR + (4 * RegOffset),=0D + ~(0xff << RegShift),=0D + Priority << RegShift=0D + );=0D + }=0D +}=0D +=0D VOID=0D EFIAPI=0D ArmGicEnableInterrupt (=0D diff --git a/ArmPkg/Include/Library/ArmGicLib.h b/ArmPkg/Include/Library/Ar= mGicLib.h index 55093189638b..7bcfc001115b 100644 --- a/ArmPkg/Include/Library/ArmGicLib.h +++ b/ArmPkg/Include/Library/ArmGicLib.h @@ -208,6 +208,15 @@ ArmGicSetPriorityMask ( IN INTN PriorityMask=0D );=0D =0D +VOID=0D +EFIAPI=0D +ArmGicSetInterruptPriority (=0D + IN UINTN GicDistributorBase,=0D + IN UINTN GicRedistributorBase,=0D + IN UINTN Source,=0D + IN UINTN Priority=0D + );=0D +=0D VOID=0D EFIAPI=0D ArmGicEnableInterrupt (=0D --=20 2.28.0