From: Chao Gao <chao.gao@intel.com>
To: "Huang, Kai" <kai.huang@intel.com>
Cc: Sean Christopherson <seanjc@google.com>,
Paolo Bonzini <pbonzini@redhat.com>, <kvm@vger.kernel.org>,
<linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v2 3/6] KVM: Add a module param to allow enabling virtualization when KVM is loaded
Date: Thu, 23 May 2024 12:23:23 +0800 [thread overview]
Message-ID: <Zk7Eu0WS0j6/mmZT@chao-email> (raw)
In-Reply-To: <8b344a16-b28a-4f75-9c1a-a4edf2aa4a11@intel.com>
On Thu, May 23, 2024 at 10:27:53AM +1200, Huang, Kai wrote:
>
>
>On 22/05/2024 2:28 pm, Sean Christopherson wrote:
>> Add an off-by-default module param, enable_virt_at_load, to let userspace
>> force virtualization to be enabled in hardware when KVM is initialized,
>> i.e. just before /dev/kvm is exposed to userspace. Enabling virtualization
>> during KVM initialization allows userspace to avoid the additional latency
>> when creating/destroying the first/last VM. Now that KVM uses the cpuhp
>> framework to do per-CPU enabling, the latency could be non-trivial as the
>> cpuhup bringup/teardown is serialized across CPUs, e.g. the latency could
>> be problematic for use case that need to spin up VMs quickly.
>
>How about we defer this until there's a real complain that this isn't
>acceptable? To me it doesn't sound "latency of creating the first VM"
>matters a lot in the real CSP deployments.
I suspect kselftest and kvm-unit-tests will be impacted a lot because
hundreds of tests are run serially. And it looks clumsy to reload KVM
module to set enable_virt_at_load to make tests run faster. I think the
test slowdown is a more realistic problem than running an off-tree
hypervisor, so I vote to make enabling virtualization at load time the
default behavior and if we really want to support an off-tree hypervisor,
we can add a new module param to opt in enabling virtualization at runtime.
>
>The concern of adding a new module param is once we add it, we need to
>maintain it even it is no longer needed in the future for backward
>compatibility. Especially this param is in kvm.ko, and for all ARCHs.
>
>E.g., I think _IF_ the core cpuhp code is enhanced to call those callbacks in
>parallel in cpuhp_setup_state(), then this issue could be mitigated to an
>unnoticeable level.
>
>Or we just still do:
>
> cpus_read_lock();
> on_each_cpu(hardware_enable_nolock, ...);
> cpuhp_setup_state_nocalls_cpuslocked(...);
> cpus_read_unlock();
>
>I think the main benefit of series is to put all virtualization enabling
>related things into one single function. Whether using cpuhp_setup_state()
>or using on_each_cpu() shouldn't be the main point.
>
next prev parent reply other threads:[~2024-05-23 4:23 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-05-22 2:28 [PATCH v2 0/6] KVM: Register cpuhp/syscore callbacks when enabling virt Sean Christopherson
2024-05-22 2:28 ` [PATCH v2 1/6] KVM: Register cpuhp and syscore callbacks when enabling hardware Sean Christopherson
2024-05-22 6:10 ` Chao Gao
2024-05-29 14:29 ` Sean Christopherson
2024-05-22 2:28 ` [PATCH v2 2/6] KVM: Rename functions related to enabling virtualization hardware Sean Christopherson
2024-05-22 7:10 ` Chao Gao
2024-05-22 22:34 ` Huang, Kai
2024-05-22 2:28 ` [PATCH v2 3/6] KVM: Add a module param to allow enabling virtualization when KVM is loaded Sean Christopherson
2024-05-22 22:27 ` Huang, Kai
2024-05-23 4:23 ` Chao Gao [this message]
2024-05-23 23:11 ` Huang, Kai
2024-05-24 2:39 ` Chao Gao
2024-05-27 22:36 ` Huang, Kai
2024-05-29 15:01 ` Sean Christopherson
2024-05-29 22:45 ` Huang, Kai
2024-05-29 23:07 ` Sean Christopherson
2024-05-30 0:06 ` Huang, Kai
2024-05-22 2:28 ` [PATCH v2 4/6] KVM: Add arch hooks for enabling/disabling virtualization Sean Christopherson
2024-05-22 22:33 ` Huang, Kai
2024-05-28 22:50 ` Sean Christopherson
2024-05-23 5:31 ` Chao Gao
2024-05-22 2:28 ` [PATCH v2 5/6] x86/reboot: Unconditionally define cpu_emergency_virt_cb typedef Sean Christopherson
2024-05-22 22:35 ` Huang, Kai
2024-05-23 5:41 ` Chao Gao
2024-05-22 2:28 ` [PATCH v2 6/6] KVM: x86: Register "emergency disable" callbacks when virt is enabled Sean Christopherson
2024-05-22 22:37 ` Huang, Kai
2024-05-23 5:59 ` Chao Gao
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=Zk7Eu0WS0j6/mmZT@chao-email \
--to=chao.gao@intel.com \
--cc=kai.huang@intel.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=pbonzini@redhat.com \
--cc=seanjc@google.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox