Hi Andrew,
On 08/15/2018 02:50 PM, Andrew Cooper wrote:
On 15/08/18 14:17, Julien Grall wrote:
diff --git a/xen/arch/arm/vgic/vgic.c b/xen/arch/arm/vgic/vgic.c
index 832632a..4124817 100644
--- a/xen/arch/arm/vgic/vgic.c
+++ b/xen/arch/arm/vgic/vgic.c
@@ -951,27 +951,7 @@ void vgic_sync_hardware_irq(struct domain *d,
unsigned int vgic_max_vcpus(const struct domain *d)
{
- unsigned int vgic_vcpu_limit;
-
- switch ( d->arch.vgic.version )
- {
- case GIC_INVALID:
- /*
- * Since evtchn_init would call domain_max_vcpus for poll_mask
- * allocation before the VGIC has been initialised, we need to
- * return some safe value in this case. As this is for
allocation
- * purposes, go with the maximum value.
- */
- vgic_vcpu_limit = MAX_VIRT_CPUS;
- break;
- case GIC_V2:
- vgic_vcpu_limit = VGIC_V2_MAX_CPUS;
- break;
- default:
- BUG();
- }
-
- return min_t(unsigned int, MAX_VIRT_CPUS, vgic_vcpu_limit);
+ return min_t(unsigned int, MAX_VIRT_CPUS,
d->arch.vgic.handler->max_vcpus);
}
Since both implementations are equal now, can you place this in vgic.h
as a static inline function?
vgic/vgic.c is part of the new vGIC implementation (selectable at th e
compilation time) and using a different layout for the vgic_dist
structure. The structure is described in asm/new_vgic.h and does not
store the max vcpus anymore.
Instead, the switch should be retained and only the case GIC_INVALID
should be dropped.
What about GIC_V3? VGIC_V3_MAX_CPUS seems to be 255 at the moment.
GICv3 is not yet supported by the new vGIC and disabled at compile time.
So we should never reach this code with d->arch.vgic.version == GIC_V3.
Cheers,
--
Julien Grall
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel