[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v4 11/17] xen/arm: ITS: Add GICR register emulation
On Fri, 10 Jul 2015, vijay.kilari@xxxxxxxxx wrote: > From: Vijaya Kumar K <Vijaya.Kumar@xxxxxxxxxxxxxxxxxx> > > Emulate LPI related changes to GICR registers > > Signed-off-by: Vijaya Kumar K <Vijaya.Kumar@xxxxxxxxxxxxxxxxxx> > --- > v4: - Added LPI configuration table emulation > - Rename function inline with vits > - Copied guest lpi configuration table to xen > --- > xen/arch/arm/gic-v3.c | 15 ++++ > xen/arch/arm/gic.c | 10 +++ > xen/arch/arm/vgic-v3-its.c | 165 > +++++++++++++++++++++++++++++++++++++ > xen/arch/arm/vgic-v3.c | 85 +++++++++++++++++-- > xen/arch/arm/vgic.c | 4 + > xen/include/asm-arm/domain.h | 1 + > xen/include/asm-arm/gic-its.h | 11 +++ > xen/include/asm-arm/gic.h | 9 ++ > xen/include/asm-arm/gic_v3_defs.h | 3 + > 9 files changed, 295 insertions(+), 8 deletions(-) > > diff --git a/xen/arch/arm/gic-v3.c b/xen/arch/arm/gic-v3.c > index 904fe57..e6004d2 100644 > --- a/xen/arch/arm/gic-v3.c > +++ b/xen/arch/arm/gic-v3.c > @@ -677,6 +677,11 @@ static int __init gicv3_populate_rdist(void) > return -ENODEV; > } > > +static int gicv3_dist_supports_lpis(void) > +{ > + return readl_relaxed(GICD + GICD_TYPER) & GICD_TYPER_LPIS_SUPPORTED; > +} > > static int __cpuinit gicv3_cpu_init(void) > { > int i; > @@ -1293,10 +1298,20 @@ static int __init gicv3_init(void) > gicv3.rdist_regions[0].size, gicv3.rdist_regions[0].map_base, > gicv3_info.maintenance_irq); > > + reg = readl_relaxed(GICD + GICD_TYPER); > + > + gicv3.rdist_data.id_bits = ((reg >> 19) & 0x1f) + 1; > + gicv3_info.nr_id_bits = gicv3.rdist_data.id_bits; > + > spin_lock_init(&gicv3.lock); > > spin_lock(&gicv3.lock); > > + if ( gicv3_dist_supports_lpis() ) > + gicv3_info.lpi_supported = 1; > + else > + gicv3_info.lpi_supported = 0; > + Is it possible that a GICD returns "LPIs supported", without actually having an ITS? I don't think we want to support that scenario, right? To stay on the safe side we could turn this into: if ( gicv3_dist_supports_lpis() && its_enabled ) where its_enabled could be set to true at boot time by its_init, if the initialization is successful. > gicv3_dist_init(); > res = gicv3_cpu_init(); > gicv3_hyp_init(); _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |