[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH 2/2] xen/arm: gic-v3: Allow Xen to run on hardware reporting GICv4
It seems that there is some hardware which report start to report GICv4 in the GIC*_PIDR2 register. As GICv4 is a superset of GICv3, it should just work on Xen. Reported-by: Andre Przywara <andre.przywara@xxxxxxx> Signed-off-by: Julien Grall <julien.grall@xxxxxxxxxx> --- xen/arch/arm/gic-v3.c | 4 ++-- xen/include/asm-arm/gic_v3_defs.h | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/xen/arch/arm/gic-v3.c b/xen/arch/arm/gic-v3.c index 4d623bf..1e3c19b 100644 --- a/xen/arch/arm/gic-v3.c +++ b/xen/arch/arm/gic-v3.c @@ -640,7 +640,7 @@ static int __init gicv3_populate_rdist(void) void __iomem *ptr = gicv3.rdist_regions[i].map_base; reg = readl_relaxed(ptr + GICR_PIDR2) & GIC_PIDR2_ARCH_MASK; - if ( reg != GIC_PIDR2_ARCH_GICv3 ) + if ( reg != GIC_PIDR2_ARCH_GICv3 && reg != GIC_PIDR2_ARCH_GICv4 ) { dprintk(XENLOG_ERR, "GICv3: No redistributor present @%"PRIpaddr"\n", @@ -1194,7 +1194,7 @@ static int __init gicv3_init(void) panic("GICv3: Failed to ioremap for GIC distributor\n"); reg = readl_relaxed(GICD + GICD_PIDR2) & GIC_PIDR2_ARCH_MASK; - if ( reg != GIC_PIDR2_ARCH_GICv3 ) + if ( reg != GIC_PIDR2_ARCH_GICv3 && reg != GIC_PIDR2_ARCH_GICv4 ) panic("GICv3: no distributor detected\n"); if ( !dt_property_read_u32(node, "#redistributor-regions", diff --git a/xen/include/asm-arm/gic_v3_defs.h b/xen/include/asm-arm/gic_v3_defs.h index b0ac6ff..c6d73df 100644 --- a/xen/include/asm-arm/gic_v3_defs.h +++ b/xen/include/asm-arm/gic_v3_defs.h @@ -43,6 +43,7 @@ /* Common between GICD_PIDR2 and GICR_PIDR2 */ #define GIC_PIDR2_ARCH_MASK (0xf0) #define GIC_PIDR2_ARCH_GICv3 (0x30) +#define GIC_PIDR2_ARCH_GICv4 (0x40) #define GICC_SRE_EL2_SRE (1UL << 0) #define GICC_SRE_EL2_DFB (1UL << 1) -- 2.1.4 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |