All of lore.kernel.org
 help / color / mirror / Atom feed
From: Eduardo Habkost <ehabkost@redhat.com>
To: Juergen Gross <jgross@suse.com>
Cc: kvm@vger.kernel.org, x86@kernel.org,
	linux-kernel@vger.kernel.org, maz@kernel.org,
	Paolo Bonzini <pbonzini@redhat.com>,
	Sean Christopherson <seanjc@google.com>,
	Vitaly Kuznetsov <vkuznets@redhat.com>,
	Wanpeng Li <wanpengli@tencent.com>,
	Jim Mattson <jmattson@google.com>, Joerg Roedel <joro@8bytes.org>,
	Thomas Gleixner <tglx@linutronix.de>,
	Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>,
	"H. Peter Anvin" <hpa@zytor.com>
Subject: Re: [PATCH v2 3/6] x86/kvm: introduce per cpu vcpu masks
Date: Tue, 7 Sep 2021 14:34:57 -0400	[thread overview]
Message-ID: <20210907183457.53ws6tqqqpzkeil4@habkost.net> (raw)
In-Reply-To: <20210903130808.30142-4-jgross@suse.com>

On Fri, Sep 03, 2021 at 03:08:04PM +0200, Juergen Gross wrote:
> In order to support high vcpu numbers per guest don't use on stack
> vcpu bitmasks. As all those currently used bitmasks are not used in
> functions subject to recursion it is fairly easy to replace them with
> percpu bitmasks.
> 
> Disable preemption while such a bitmask is being used in order to
> avoid double usage in case we'd switch cpus.
> 
> Signed-off-by: Juergen Gross <jgross@suse.com>
> ---
> V2:
> - use local_lock() instead of preempt_disable() (Paolo Bonzini)
> ---
>  arch/x86/include/asm/kvm_host.h | 10 ++++++++++
>  arch/x86/kvm/hyperv.c           | 25 ++++++++++++++++++-------
>  arch/x86/kvm/irq_comm.c         |  9 +++++++--
>  arch/x86/kvm/x86.c              | 22 +++++++++++++++++++++-
>  4 files changed, 56 insertions(+), 10 deletions(-)
> 
> diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h
> index 3513edee8e22..a809a9e4fa5c 100644
> --- a/arch/x86/include/asm/kvm_host.h
> +++ b/arch/x86/include/asm/kvm_host.h
> @@ -15,6 +15,7 @@
>  #include <linux/cpumask.h>
>  #include <linux/irq_work.h>
>  #include <linux/irq.h>
> +#include <linux/local_lock.h>
>  
>  #include <linux/kvm.h>
>  #include <linux/kvm_para.h>
> @@ -1591,6 +1592,15 @@ extern bool kvm_has_bus_lock_exit;
>  /* maximum vcpu-id */
>  unsigned int kvm_max_vcpu_id(void);
>  
> +/* per cpu vcpu bitmasks, protected by kvm_pcpu_mask_lock */
> +DECLARE_PER_CPU(local_lock_t, kvm_pcpu_mask_lock);
> +extern unsigned long __percpu *kvm_pcpu_vcpu_mask;
> +#define KVM_VCPU_MASK_SZ	\
> +	(sizeof(*kvm_pcpu_vcpu_mask) * BITS_TO_LONGS(KVM_MAX_VCPUS))
> +extern u64 __percpu *kvm_hv_vp_bitmap;
> +#define KVM_HV_MAX_SPARSE_VCPU_SET_BITS DIV_ROUND_UP(KVM_MAX_VCPUS, 64)
> +#define KVM_HV_VPMAP_SZ		(sizeof(u64) * KVM_HV_MAX_SPARSE_VCPU_SET_BITS)

I have just realized that the Hyper-V sparse bitmap format can
support only up to 4096 CPUs, and the current implementation of
sparse_set_to_vcpu_mask() won't even work correctly if
KVM_MAX_VCPUS is larger than 4096.

This means vp_bitmap can't and will never be larger than 512
bytes.  Isn't a per-CPU variable for vp_bitmap overkill in this
case?

> [...]

-- 
Eduardo


  parent reply	other threads:[~2021-09-07 18:35 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-03 13:08 [PATCH v2 0/6] x86/kvm: add boot parameters for max vcpu configs Juergen Gross
2021-09-03 13:08 ` Juergen Gross
2021-09-03 13:08 ` Juergen Gross
2021-09-03 13:08 ` [PATCH v2 1/6] x86/kvm: remove non-x86 stuff from arch/x86/kvm/ioapic.h Juergen Gross
2021-09-03 13:08 ` [PATCH v2 2/6] x86/kvm: add boot parameter for adding vcpu-id bits Juergen Gross
2021-09-03 13:43   ` Vitaly Kuznetsov
2021-09-03 13:53     ` Juergen Gross
2021-09-03 19:48   ` Eduardo Habkost
2021-09-06  4:46     ` Juergen Gross
2021-09-28 16:41   ` Paolo Bonzini
2021-09-03 13:08 ` [PATCH v2 3/6] x86/kvm: introduce per cpu vcpu masks Juergen Gross
2021-09-03 16:05   ` Eduardo Habkost
2021-09-06  4:34     ` Juergen Gross
2021-09-07 18:34   ` Eduardo Habkost [this message]
2021-09-08  8:41     ` Vitaly Kuznetsov
2021-09-03 13:08 ` [PATCH v2 4/6] kvm: use kvfree() in kvm_arch_free_vm() Juergen Gross
2021-09-03 13:08   ` Juergen Gross
2021-09-03 13:08   ` Juergen Gross
2021-09-28 16:48   ` Paolo Bonzini
2021-09-28 16:48     ` Paolo Bonzini
2021-09-28 16:48     ` Paolo Bonzini
2021-09-03 13:08 ` [PATCH v2 5/6] kvm: allocate vcpu pointer array separately Juergen Gross
2021-09-03 13:08   ` Juergen Gross
2021-09-03 13:08   ` Juergen Gross
2021-09-03 14:41   ` Marc Zyngier
2021-09-03 14:41     ` Marc Zyngier
2021-09-03 14:41     ` Marc Zyngier
2021-09-06  4:33     ` Juergen Gross
2021-09-06  4:33       ` Juergen Gross
2021-09-06  4:33       ` Juergen Gross
2021-09-06  9:46       ` Marc Zyngier
2021-09-06  9:46         ` Marc Zyngier
2021-09-06  9:46         ` Marc Zyngier
2021-09-09 20:28         ` Sean Christopherson
2021-09-09 20:28           ` Sean Christopherson
2021-09-09 20:28           ` Sean Christopherson
2021-09-03 13:08 ` [PATCH v2 6/6] x86/kvm: add boot parameter for setting max number of vcpus per guest Juergen Gross
2021-09-06  0:45   ` Yao Yuan
2021-09-06  4:47     ` Juergen Gross

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210907183457.53ws6tqqqpzkeil4@habkost.net \
    --to=ehabkost@redhat.com \
    --cc=bp@alien8.de \
    --cc=hpa@zytor.com \
    --cc=jgross@suse.com \
    --cc=jmattson@google.com \
    --cc=joro@8bytes.org \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=maz@kernel.org \
    --cc=mingo@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=seanjc@google.com \
    --cc=tglx@linutronix.de \
    --cc=vkuznets@redhat.com \
    --cc=wanpengli@tencent.com \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.