[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <b6323953-1766-ff6a-2b3c-428606144e5f@redhat.com>
Date: Tue, 6 Jul 2021 15:49:07 +0200
From: Paolo Bonzini <pbonzini@...hat.com>
To: isaku.yamahata@...el.com, Thomas Gleixner <tglx@...utronix.de>,
Ingo Molnar <mingo@...hat.com>, Borislav Petkov <bp@...en8.de>,
"H . Peter Anvin" <hpa@...or.com>,
Vitaly Kuznetsov <vkuznets@...hat.com>,
Wanpeng Li <wanpengli@...cent.com>,
Jim Mattson <jmattson@...gle.com>,
Joerg Roedel <joro@...tes.org>, erdemaktas@...gle.com,
Connor Kuehl <ckuehl@...hat.com>,
Sean Christopherson <seanjc@...gle.com>, x86@...nel.org,
linux-kernel@...r.kernel.org, kvm@...r.kernel.org
Cc: isaku.yamahata@...il.com,
Sean Christopherson <sean.j.christopherson@...el.com>
Subject: Re: [RFC PATCH v2 21/69] KVM: Add max_vcpus field in common 'struct
kvm'
Please replace "Add" with "Move" and add a couple lines to the commit
message.
Paolo
On 03/07/21 00:04, isaku.yamahata@...el.com wrote:
> From: Sean Christopherson <sean.j.christopherson@...el.com>
>
> Signed-off-by: Sean Christopherson <sean.j.christopherson@...el.com>
> Signed-off-by: Isaku Yamahata <isaku.yamahata@...el.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;
> }
>
Powered by blists - more mailing lists