[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] xen: get GIC addresses from DT
At 12:08 +0000 on 30 Nov (1354277311), Stefano Stabellini wrote: > arm: add few checks to gic_init > > Check for: > - uninitialized GIC interface addresses; > - non-page aligned GIC interface addresses. > > Return in both cases with an error message. > Also remove the code from GICH and GICC to handle non-page aligned > interfaces. > > Signed-off-by: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx> > > diff --git a/xen/arch/arm/gic.c b/xen/arch/arm/gic.c > index 8efbeb3..301d223 100644 > --- a/xen/arch/arm/gic.c > +++ b/xen/arch/arm/gic.c > @@ -34,10 +34,8 @@ > > /* Access to the GIC Distributor registers through the fixmap */ > #define GICD ((volatile uint32_t *) FIXMAP_ADDR(FIXMAP_GICD)) > -#define GICC ((volatile uint32_t *) (FIXMAP_ADDR(FIXMAP_GICC1) \ > - + ((uint32_t) gic.cbase & 0xfff))) > -#define GICH ((volatile uint32_t *) (FIXMAP_ADDR(FIXMAP_GICH) \ > - + ((uint32_t) gic.hbase & 0xfff))) > +#define GICC ((volatile uint32_t *) FIXMAP_ADDR(FIXMAP_GICC1)) > +#define GICH ((volatile uint32_t *) FIXMAP_ADDR(FIXMAP_GICH)) > static void gic_restore_pending_irqs(struct vcpu *v); > > /* Global state */ > @@ -308,6 +306,23 @@ static void __cpuinit gic_hyp_disable(void) > /* Set up the GIC */ > void __init gic_init(void) > { > + if ( !early_info.gic.gic_dist_addr || Some hard tabs have snuck in here. > + !early_info.gic.gic_cpu_addr || > + !early_info.gic.gic_hyp_addr || > + !early_info.gic.gic_vcpu_addr ) > + { > + printk("error: incorrect physical address of the GIC > interfaces.\n"); > + return; Maybe panic() here (and below) rather than printk? > + } > + if ( (early_info.gic.gic_dist_addr & ((1 << PAGE_SHIFT) - 1)) || (foo & ~PAGE_MASK) is usual for that. Cheers, Tim. > + (early_info.gic.gic_cpu_addr & ((1 << PAGE_SHIFT) - 1)) > || > + (early_info.gic.gic_hyp_addr & ((1 << PAGE_SHIFT) - 1)) > || > + (early_info.gic.gic_vcpu_addr & ((1 << PAGE_SHIFT) - > 1)) ) > + { > + printk("error: GIC interfaces not page aligned.\n"); > + return; > + } > + > gic.dbase = early_info.gic.gic_dist_addr; > gic.cbase = early_info.gic.gic_cpu_addr; > gic.hbase = early_info.gic.gic_hyp_addr; > > _______________________________________________ > Xen-devel mailing list > Xen-devel@xxxxxxxxxxxxx > http://lists.xen.org/xen-devel _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |