[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v2 40/45] ARM: new VGIC: vgic-init: register VGIC
Hi, On 20/03/18 01:17, Julien Grall wrote: > Hi Andre, > > On 03/15/2018 08:30 PM, Andre Przywara wrote: >> diff --git a/xen/arch/arm/vgic/vgic.c b/xen/arch/arm/vgic/vgic.c >> index 002fec57e6..4b9664f313 100644 >> --- a/xen/arch/arm/vgic/vgic.c >> +++ b/xen/arch/arm/vgic/vgic.c >> @@ -946,6 +946,28 @@ void vgic_sync_hardware_irq(struct domain *d, >> spin_unlock_irqrestore(&desc->lock, flags); >> } >> +unsigned int vgic_max_vcpus(const struct domain *d) >> +{ >> + unsigned int vgic_vcpu_limit; >> + >> + switch ( d->arch.vgic.version ) >> + { >> +#ifdef CONFIG_HAS_GICV3 >> + case GIC_V3: >> + vgic_vcpu_limit = VGIC_V3_MAX_CPUS; >> + break; >> +#endif > > It is a bit strange that you handle GICV3 here but don't in > domain_vgic_register. Fair enough. >> + case GIC_V2: >> + vgic_vcpu_limit = VGIC_V2_MAX_CPUS; >> + break; >> + default: >> + vgic_vcpu_limit = MAX_VIRT_CPUS; > > I feel this is a bit odd. We only support GICv2 and GICv3 and the enum > has two values. Likely GCC will complain if CONFIG_HAS_GICV3 is set > because default label is not used. AFAICT (and have tested) at least my GCC never complains about "default:", even if every enum member has already been used. I think it's good style to catch those cases should the enum get extended for some reason. Plus we have this already in arch_domain_create() (in switch get_hw_version()). > Lastly, I can't see how you handle the corner case mentioned in the > current vGIC: > > /* > * Since evtchn_init would call domain_max_vcpus for poll_mask > * allocation when the vgic_ops haven't been initialised yet, > * we return MAX_VIRT_CPUS if d->arch.vgic.handler is null. > */ Do we need this still with Andrew's latest patch? > The comment in the code would also be very useful as the reason to call > vgic_max_vcpus before the full initialization is not that straightforward. Otherwise this smells like we need to have enum gic_version extended, to reserve the 0 case? enum gic_version {GIC_INVALID, GIC_V2, GIC_V3};? That should cover the not-yet-initialised case, shouldn't it? Cheers, Andre. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |