]> xenbits.xensource.com Git - people/dwmw2/xen.git/commitdiff
xen/Arm: GICv3: Enable GICv3 for AArch32
authorAyan Kumar Halder <ayan.kumar.halder@amd.com>
Mon, 5 Dec 2022 13:26:37 +0000 (13:26 +0000)
committerJulien Grall <jgrall@amazon.com>
Thu, 15 Dec 2022 11:27:06 +0000 (11:27 +0000)
One can now use GICv3 on AArch32 systems. However, ITS is not supported.
The reason being currently we are trying to validate GICv3 on an AArch32_v8R
system. Refer ARM DDI 0568A.c ID110520, B1.3.1,
"A Generic Interrupt Controller (GIC) implemented with an Armv8-R PE must not
implement LPI support."

By default GICv3 is disabled on AArch32 and enabled on AArch64.

Updated SUPPORT.md to state that GICv3 on Arm32 is not security supported.

Signed-off-by: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
Reviewed-by: Michal Orzel <michal.orzel@amd.com>
Acked-by: Julien Grall <jgrall@amazon.com>
SUPPORT.md
xen/arch/arm/Kconfig
xen/arch/arm/include/asm/cpufeature.h

index ab71464cf672e796c74fce2c43f358171fe841b9..295369998e6ac07f11c1a4e0783bd5a87ee948e9 100644 (file)
@@ -76,6 +76,13 @@ For the Cortex A57 r0p0 - r1p1, see Errata 832075.
     Status, ARM SMMUv3: Tech Preview
     Status, Renesas IPMMU-VMSA: Supported, not security supported
 
+### ARM/GICv3
+
+GICv3 is an interrupt controller specification designed by Arm.
+
+    Status, Arm64: Security supported
+    Status, Arm32: Supported, not security supported
+
 ### ARM/GICv3 ITS
 
 Extension to the GICv3 interrupt controller to support MSI.
index 52a05f704da5255bcb513a2f89e15d3a76cf4859..239d3aed3c7f892fd8fa435ccdb6089c50cff22f 100644 (file)
@@ -41,16 +41,17 @@ config ARM_EFI
 
 config GICV3
        bool "GICv3 driver"
-       depends on ARM_64 && !NEW_VGIC
-       default y
+       depends on !NEW_VGIC
+       default n if ARM_32
+       default y if ARM_64
        ---help---
 
          Driver for the ARM Generic Interrupt Controller v3.
-         If unsure, say Y
+         If unsure, use the default setting.
 
 config HAS_ITS
         bool "GICv3 ITS MSI controller support (UNSUPPORTED)" if UNSUPPORTED
-        depends on GICV3 && !NEW_VGIC
+        depends on GICV3 && !NEW_VGIC && !ARM_32
 
 config HVM
         def_bool y
index c86a2e7f291c4cc5d2aa866435f87f0498bc45be..c62cf6293fd69e2ebb78c21d9d8452342a2829e0 100644 (file)
@@ -33,6 +33,7 @@
 #define cpu_has_aarch32   (cpu_has_arm || cpu_has_thumb)
 
 #ifdef CONFIG_ARM_32
+#define cpu_has_gicv3     (boot_cpu_feature32(gic) >= 1)
 #define cpu_has_gentimer  (boot_cpu_feature32(gentimer) == 1)
 /*
  * On Armv7, the value 0 is used to indicate that PMUv2 is not