ArmPkg/ArmGicV3Dxe: Use ArmGicSetInterruptPriority() to set priority

When Affinity Routing enabled, the GICR_IPRIORITYR<n> is used to set
priority for SGIs and PPIs instead of GICD_IPRIORITYR<n>.
This patch calls ArmGicSetInterruptPriority() helper function when
setting priority to handle the difference.

Cc: Leif Lindholm <leif@nuviainc.com>
Signed-off-by: Quan Nguyen <quan@os.amperecomputing.com>
Reviewed-off-by: Ard Biesheuvel <ard.biesheuvel@arm.com>
This commit is contained in:
Quan Nguyen 2020-12-16 20:25:21 +07:00 committed by mergify[bot]
parent 0d49b82e4f
commit 1159fc3230
1 changed files with 5 additions and 8 deletions

View File

@ -374,8 +374,6 @@ GicV3DxeInitialize (
{ {
EFI_STATUS Status; EFI_STATUS Status;
UINTN Index; UINTN Index;
UINT32 RegOffset;
UINTN RegShift;
UINT64 CpuTarget; UINT64 CpuTarget;
UINT64 MpId; UINT64 MpId;
@ -397,12 +395,11 @@ GicV3DxeInitialize (
GicV3DisableInterruptSource (&gHardwareInterruptV3Protocol, Index); GicV3DisableInterruptSource (&gHardwareInterruptV3Protocol, Index);
// Set Priority // Set Priority
RegOffset = Index / 4; ArmGicSetInterruptPriority (
RegShift = (Index % 4) * 8; mGicDistributorBase,
MmioAndThenOr32 ( mGicRedistributorsBase,
mGicDistributorBase + ARM_GIC_ICDIPR + (4 * RegOffset), Index,
~(0xff << RegShift), ARM_GIC_DEFAULT_PRIORITY
ARM_GIC_DEFAULT_PRIORITY << RegShift
); );
} }