lkml.org 
[lkml]   [2021]   [Jul]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: [RFC PATCH v2 21/69] KVM: Add max_vcpus field in common 'struct kvm'
    From
    Date
    Please replace "Add" with "Move" and add a couple lines to the commit 
    message.

    Paolo

    On 03/07/21 00:04, isaku.yamahata@intel.com wrote:
    > From: Sean Christopherson <sean.j.christopherson@intel.com>
    >
    > Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
    > Signed-off-by: Isaku Yamahata <isaku.yamahata@intel.com>
    > ---
    > arch/arm64/include/asm/kvm_host.h | 3 ---
    > arch/arm64/kvm/arm.c | 7 ++-----
    > arch/arm64/kvm/vgic/vgic-init.c | 6 +++---
    > include/linux/kvm_host.h | 1 +
    > virt/kvm/kvm_main.c | 3 ++-
    > 5 files changed, 8 insertions(+), 12 deletions(-)
    >
    > diff --git a/arch/arm64/include/asm/kvm_host.h b/arch/arm64/include/asm/kvm_host.h
    > index 7cd7d5c8c4bc..96a0dc3a8780 100644
    > --- a/arch/arm64/include/asm/kvm_host.h
    > +++ b/arch/arm64/include/asm/kvm_host.h
    > @@ -106,9 +106,6 @@ struct kvm_arch {
    > /* VTCR_EL2 value for this VM */
    > u64 vtcr;
    >
    > - /* The maximum number of vCPUs depends on the used GIC model */
    > - int max_vcpus;
    > -
    > /* Interrupt controller */
    > struct vgic_dist vgic;
    >
    > diff --git a/arch/arm64/kvm/arm.c b/arch/arm64/kvm/arm.c
    > index e720148232a0..a46306cf3106 100644
    > --- a/arch/arm64/kvm/arm.c
    > +++ b/arch/arm64/kvm/arm.c
    > @@ -145,7 +145,7 @@ int kvm_arch_init_vm(struct kvm *kvm, unsigned long type)
    > kvm_vgic_early_init(kvm);
    >
    > /* The maximum number of VCPUs is limited by the host's GIC model */
    > - kvm->arch.max_vcpus = kvm_arm_default_max_vcpus();
    > + kvm->max_vcpus = kvm_arm_default_max_vcpus();
    >
    > set_default_spectre(kvm);
    >
    > @@ -220,7 +220,7 @@ int kvm_vm_ioctl_check_extension(struct kvm *kvm, long ext)
    > case KVM_CAP_MAX_VCPUS:
    > case KVM_CAP_MAX_VCPU_ID:
    > if (kvm)
    > - r = kvm->arch.max_vcpus;
    > + r = kvm->max_vcpus;
    > else
    > r = kvm_arm_default_max_vcpus();
    > break;
    > @@ -299,9 +299,6 @@ int kvm_arch_vcpu_precreate(struct kvm *kvm, unsigned int id)
    > if (irqchip_in_kernel(kvm) && vgic_initialized(kvm))
    > return -EBUSY;
    >
    > - if (id >= kvm->arch.max_vcpus)
    > - return -EINVAL;
    > -
    > return 0;
    > }
    >
    > diff --git a/arch/arm64/kvm/vgic/vgic-init.c b/arch/arm64/kvm/vgic/vgic-init.c
    > index 58cbda00e56d..089ac00c55d7 100644
    > --- a/arch/arm64/kvm/vgic/vgic-init.c
    > +++ b/arch/arm64/kvm/vgic/vgic-init.c
    > @@ -97,11 +97,11 @@ int kvm_vgic_create(struct kvm *kvm, u32 type)
    > ret = 0;
    >
    > if (type == KVM_DEV_TYPE_ARM_VGIC_V2)
    > - kvm->arch.max_vcpus = VGIC_V2_MAX_CPUS;
    > + kvm->max_vcpus = VGIC_V2_MAX_CPUS;
    > else
    > - kvm->arch.max_vcpus = VGIC_V3_MAX_CPUS;
    > + kvm->max_vcpus = VGIC_V3_MAX_CPUS;
    >
    > - if (atomic_read(&kvm->online_vcpus) > kvm->arch.max_vcpus) {
    > + if (atomic_read(&kvm->online_vcpus) > kvm->max_vcpus) {
    > ret = -E2BIG;
    > goto out_unlock;
    > }
    > diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h
    > index e87f07c5c601..ddd4d0f68cdf 100644
    > --- a/include/linux/kvm_host.h
    > +++ b/include/linux/kvm_host.h
    > @@ -544,6 +544,7 @@ struct kvm {
    > * and is accessed atomically.
    > */
    > atomic_t online_vcpus;
    > + int max_vcpus;
    > int created_vcpus;
    > int last_boosted_vcpu;
    > struct list_head vm_list;
    > diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
    > index dc752d0bd3ec..52d40ea75749 100644
    > --- a/virt/kvm/kvm_main.c
    > +++ b/virt/kvm/kvm_main.c
    > @@ -910,6 +910,7 @@ static struct kvm *kvm_create_vm(unsigned long type)
    > mutex_init(&kvm->irq_lock);
    > mutex_init(&kvm->slots_lock);
    > INIT_LIST_HEAD(&kvm->devices);
    > + kvm->max_vcpus = KVM_MAX_VCPUS;
    >
    > BUILD_BUG_ON(KVM_MEM_SLOTS_NUM > SHRT_MAX);
    >
    > @@ -3329,7 +3330,7 @@ static int kvm_vm_ioctl_create_vcpu(struct kvm *kvm, u32 id)
    > return -EINVAL;
    >
    > mutex_lock(&kvm->lock);
    > - if (kvm->created_vcpus == KVM_MAX_VCPUS) {
    > + if (kvm->created_vcpus >= kvm->max_vcpus) {
    > mutex_unlock(&kvm->lock);
    > return -EINVAL;
    > }
    >

    \
     
     \ /
      Last update: 2021-07-06 16:40    [W:4.736 / U:0.184 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site