[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v3 1/3] xen/arm: gic: Check the size of the CPU and vCPU interface retrieved from DT
On 06/10/15 15:11, Ian Campbell wrote: > On Mon, 2015-10-05 at 15:17 +0100, Julien Grall wrote: >> @@ -641,7 +643,29 @@ static int __init gicv2_init(void) >> panic("GICv2: Cannot find the maintenance IRQ"); >> gicv2_info.maintenance_irq = res; >> >> - /* TODO: Add check on distributor, cpu size */ >> + /* TODO: Add check on distributor */ >> + >> + /* >> + * The GICv2 CPU interface should at least be 8KB. Although, most of >> the DT >> + * doesn't correctly set it and use the GICv1 CPU interface size (i.e >> 4KB). >> + * Warn and then fixup. >> + */ >> + if ( csize < SZ_8K ) >> + { >> + printk(XENLOG_WARNING "GICv2: WARNING: " >> + "The GICC size is wrong: %#"PRIx64" expected %#x\n", >> + csize, SZ_8K); > > "is too small"? Ok. > >> + csize = SZ_8K; >> + } >> + >> + /* >> + * Check if the CPU interface and virtual CPU interface have the >> + * same size. >> + */ >> + if ( csize != vsize ) >> + printk(XENLOG_WARNING "GICv2: WARNING: " >> + "Sizes of GICC (%#"PRIpaddr") and GICV (%#"PRIpaddr") don't >> match\n", >> + csize, vsize); > > Should we also force them to be equal? Either > csize = vsize = min(csize,vsize) If we restrict csize we will get to some other troubles later because vsize may be only 4KB. > or > vsize = csize > > (probably the first)? None of them. > >> + /* >> + * Only allow support of GICv2 compatible when the CPU interface >> + * and virtual CPU interface are 8KB >> + * XXX: Handle other size? >> + */ >> + if ( csize != SZ_8K && vsize != SZ_8K ) > > I think you meant || ? Otherwise this is happy so long as one of them is > right rather than requiring both of them to be 8K. Right. > > WRT to the XXX I think I'd be happier if this was < SZ_8K for each. > Otherwise some future GIC which is compatible but has extensions to the > register space would needlessly require changes here. But I can live with > this. The GICv2 CPU interface is always at least 8KB. Having an higher value may mean that the GIC is aliased. GICv2 on GICv3 is only used for guest. I prefer to restrict the usage to known and safe value until we have someone using different size. This will avoid to expose unwanted data/value to a guest. Regards, -- Julien Grall _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |