[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH V4 8/8] xen/arm: make domain_max_vcpus return value according to vGIC version
On 28/05/15 11:15, Chen Baozi wrote: > From: Chen Baozi <baozich@xxxxxxxxx> > > When a guest uses vGICv2, the maximum number of vCPU it can support > should not be as many as MAX_VIRT_CPUS, which is 128 at the moment. > So the domain_max_vcpus should return the value according to the vGIC > version the domain uses. > > We didn't keep it as the old static inline form because it will break > compilation when access the member of struct domain: > > In file included from xen/include/xen/domain.h:6:0, > from xen/include/xen/sched.h:10, > from arm64/asm-offsets.c:10: > xen/include/asm/domain.h: In function âdomain_max_vcpusâ: > xen/include/asm/domain.h:266:10: error: dereferencing pointer to incomplete > type > if (d->arch.vgic.version == GIC_V2) > ^ > > Signed-off-by: Chen Baozi <baozich@xxxxxxxxx> Looks much better! It is a shame about the compilation issue - I had a similar issue on the x86 side. At some point, I need to untangle the rats nest which is our currently header file layout, so that we don't have to rely on tricks like this to keep it compiling. ~Andrew > --- > xen/arch/arm/domain.c | 6 ++++++ > xen/include/asm-arm/domain.h | 5 +---- > xen/include/asm-arm/gic.h | 3 +++ > 3 files changed, 10 insertions(+), 4 deletions(-) > > diff --git a/xen/arch/arm/domain.c b/xen/arch/arm/domain.c > index 0cf147c..78b77b1 100644 > --- a/xen/arch/arm/domain.c > +++ b/xen/arch/arm/domain.c > @@ -890,6 +890,12 @@ void vcpu_block_unless_event_pending(struct vcpu *v) > vcpu_unblock(current); > } > > +unsigned int domain_max_vcpus(const struct domain *d) > +{ > + return ((d->arch.vgic.version == GIC_V2) ? > + GICV2_MAX_CPUS : GICV3_MAX_CPUS); > +} > + > /* > * Local variables: > * mode: C > diff --git a/xen/include/asm-arm/domain.h b/xen/include/asm-arm/domain.h > index 603a20b..c4cb15d 100644 > --- a/xen/include/asm-arm/domain.h > +++ b/xen/include/asm-arm/domain.h > @@ -261,10 +261,7 @@ struct arch_vcpu > void vcpu_show_execution_state(struct vcpu *); > void vcpu_show_registers(const struct vcpu *); > > -static inline unsigned int domain_max_vcpus(const struct domain *d) > -{ > - return MAX_VIRT_CPUS; > -} > +unsigned int domain_max_vcpus(const struct domain *); > > /* > * Due to the restriction of GICv3, the number of vCPUs in AFF0 is > diff --git a/xen/include/asm-arm/gic.h b/xen/include/asm-arm/gic.h > index 463fffb..a7bc0d1 100644 > --- a/xen/include/asm-arm/gic.h > +++ b/xen/include/asm-arm/gic.h > @@ -18,6 +18,9 @@ > #ifndef __ASM_ARM_GIC_H__ > #define __ASM_ARM_GIC_H__ > > +#define GICV2_MAX_CPUS 8 > +#define GICV3_MAX_CPUS 128 > + > #define NR_GIC_LOCAL_IRQS NR_LOCAL_IRQS > #define NR_GIC_SGI 16 > #define MAX_RDIST_COUNT 4 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |