]> git.proxmox.com Git - mirror_edk2.git/commitdiff
ArmPkg/ArmGicLib: Fix GICR_IPRIORITYR address wrong issue
authorMing Huang <huangming@linux.alibaba.com>
Thu, 25 Feb 2021 03:32:12 +0000 (11:32 +0800)
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Mon, 1 Mar 2021 13:09:24 +0000 (13:09 +0000)
The register address of GICR_IPRIORITYR is in SGI_base frame. Add
IPRIORITY_ADDRESS macro for getting GICR_IPRIORITYR address. Otherwise
GIC RAS error(Uncorrected software error) may report in ArmGicDxe.

This resolves BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=3236

Signed-off-by: Ming Huang <huangming@linux.alibaba.com>
Reviewed-by: Leif Lindholm <leif@nuviainc.com>
Tested-by: Ard Biesheuvel <ardb@kernel.org> # QEMU/kvm guest on ThunderX2
Tested-by: Quan Nguyen <quan@os.amperecomputing.com>
ArmPkg/Drivers/ArmGic/ArmGicLib.c

index 5d04ed3dac16eea92a6283a7dafed3061bd1f4f6..6b01c88206ad8adef3100dd44c0d57660db77783 100644 (file)
@@ -30,6 +30,9 @@
 #define ICENABLER_ADDRESS(base,offset) ((base) + \\r
           ARM_GICR_CTLR_FRAME_SIZE + ARM_GICR_ICENABLER + 4 * (offset))\r
 \r
+#define IPRIORITY_ADDRESS(base,offset) ((base) + \\r
+          ARM_GICR_CTLR_FRAME_SIZE + ARM_GIC_ICDIPR + 4 * (offset))\r
+\r
 /**\r
  *\r
  * Return whether the Source interrupt index refers to a shared interrupt (SPI)\r
@@ -236,7 +239,7 @@ ArmGicSetInterruptPriority (
     }\r
 \r
     MmioAndThenOr32 (\r
-      GicCpuRedistributorBase + ARM_GIC_ICDIPR + (4 * RegOffset),\r
+      IPRIORITY_ADDRESS (GicCpuRedistributorBase, RegOffset),\r
       ~(0xff << RegShift),\r
       Priority << RegShift\r
       );\r