Message ID | 1404817748-31302-5-git-send-email-marc.zyngier@arm.com |
---|---|
State | Superseded |
Headers | show |
On Tue, Jul 08, 2014 at 12:09:03PM +0100, Marc Zyngier wrote: > We now have the information about the number of CPU interfaces in > the distributor itself. Let's get rid of VGIC_MAX_CPUS, and just > rely on KVM_MAX_VCPUS where we don't have the choice. Yet. > > Signed-off-by: Marc Zyngier <marc.zyngier@arm.com> > --- > include/kvm/arm_vgic.h | 3 +-- > virt/kvm/arm/vgic.c | 6 +++--- > 2 files changed, 4 insertions(+), 5 deletions(-) > > diff --git a/include/kvm/arm_vgic.h b/include/kvm/arm_vgic.h > index b8a6337..99ad8af 100644 > --- a/include/kvm/arm_vgic.h > +++ b/include/kvm/arm_vgic.h > @@ -29,13 +29,12 @@ > #define VGIC_NR_SGIS 16 > #define VGIC_NR_PPIS 16 > #define VGIC_NR_PRIVATE_IRQS (VGIC_NR_SGIS + VGIC_NR_PPIS) > -#define VGIC_MAX_CPUS KVM_MAX_VCPUS > > #define VGIC_V2_MAX_LRS (1 << 6) > #define VGIC_V3_MAX_LRS 16 > > /* Sanity checks... */ > -#if (VGIC_MAX_CPUS > 8) > +#if (KVM_MAX_VCPUS > 8) > #error Invalid number of CPU interfaces > #endif > > diff --git a/virt/kvm/arm/vgic.c b/virt/kvm/arm/vgic.c > index 6f7cf85..3cb667c 100644 > --- a/virt/kvm/arm/vgic.c > +++ b/virt/kvm/arm/vgic.c > @@ -1206,7 +1206,7 @@ static bool vgic_queue_sgi(struct kvm_vcpu *vcpu, int irq) > > sources = *vgic_get_sgi_sources(dist, vcpu_id, irq); > > - for_each_set_bit(c, &sources, VGIC_MAX_CPUS) { > + for_each_set_bit(c, &sources, dist->nr_cpus) { > if (vgic_queue_irq(vcpu, c, irq)) > clear_bit(c, &sources); > } > @@ -1583,7 +1583,7 @@ int kvm_vgic_vcpu_init(struct kvm_vcpu *vcpu) > struct vgic_dist *dist = &vcpu->kvm->arch.vgic; > int i; > > - if (vcpu->vcpu_id >= VGIC_MAX_CPUS) > + if (vcpu->vcpu_id >= dist->nr_cpus) > return -EBUSY; > > for (i = 0; i < VGIC_NR_IRQS; i++) { > @@ -1724,7 +1724,7 @@ static int vgic_init_maps(struct kvm *kvm) > int nr_cpus, nr_irqs; > int ret, i; > > - nr_cpus = dist->nr_cpus = VGIC_MAX_CPUS; > + nr_cpus = dist->nr_cpus = KVM_MAX_VCPUS; > nr_irqs = dist->nr_irqs = VGIC_NR_IRQS; > > ret = vgic_init_bitmap(&dist->irq_enabled, nr_cpus, nr_irqs); > -- > 2.0.0 > Reviewed-by: Christoffer Dall <christoffer.dall@linaro.org>
diff --git a/include/kvm/arm_vgic.h b/include/kvm/arm_vgic.h index b8a6337..99ad8af 100644 --- a/include/kvm/arm_vgic.h +++ b/include/kvm/arm_vgic.h @@ -29,13 +29,12 @@ #define VGIC_NR_SGIS 16 #define VGIC_NR_PPIS 16 #define VGIC_NR_PRIVATE_IRQS (VGIC_NR_SGIS + VGIC_NR_PPIS) -#define VGIC_MAX_CPUS KVM_MAX_VCPUS #define VGIC_V2_MAX_LRS (1 << 6) #define VGIC_V3_MAX_LRS 16 /* Sanity checks... */ -#if (VGIC_MAX_CPUS > 8) +#if (KVM_MAX_VCPUS > 8) #error Invalid number of CPU interfaces #endif diff --git a/virt/kvm/arm/vgic.c b/virt/kvm/arm/vgic.c index 6f7cf85..3cb667c 100644 --- a/virt/kvm/arm/vgic.c +++ b/virt/kvm/arm/vgic.c @@ -1206,7 +1206,7 @@ static bool vgic_queue_sgi(struct kvm_vcpu *vcpu, int irq) sources = *vgic_get_sgi_sources(dist, vcpu_id, irq); - for_each_set_bit(c, &sources, VGIC_MAX_CPUS) { + for_each_set_bit(c, &sources, dist->nr_cpus) { if (vgic_queue_irq(vcpu, c, irq)) clear_bit(c, &sources); } @@ -1583,7 +1583,7 @@ int kvm_vgic_vcpu_init(struct kvm_vcpu *vcpu) struct vgic_dist *dist = &vcpu->kvm->arch.vgic; int i; - if (vcpu->vcpu_id >= VGIC_MAX_CPUS) + if (vcpu->vcpu_id >= dist->nr_cpus) return -EBUSY; for (i = 0; i < VGIC_NR_IRQS; i++) { @@ -1724,7 +1724,7 @@ static int vgic_init_maps(struct kvm *kvm) int nr_cpus, nr_irqs; int ret, i; - nr_cpus = dist->nr_cpus = VGIC_MAX_CPUS; + nr_cpus = dist->nr_cpus = KVM_MAX_VCPUS; nr_irqs = dist->nr_irqs = VGIC_NR_IRQS; ret = vgic_init_bitmap(&dist->irq_enabled, nr_cpus, nr_irqs);
We now have the information about the number of CPU interfaces in the distributor itself. Let's get rid of VGIC_MAX_CPUS, and just rely on KVM_MAX_VCPUS where we don't have the choice. Yet. Signed-off-by: Marc Zyngier <marc.zyngier@arm.com> --- include/kvm/arm_vgic.h | 3 +-- virt/kvm/arm/vgic.c | 6 +++--- 2 files changed, 4 insertions(+), 5 deletions(-)