From: Sean Christopherson <seanjc@google.com>
To: Peng Hao <flyingpenghao@gmail.com>
Cc: pbonzini@redhat.com, kvm@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] kvm: x86: Improve virtual machine startup performance
Date: Tue, 1 Mar 2022 17:54:53 +0000 [thread overview]
Message-ID: <Yh5d7XBD9D4FhEe3@google.com> (raw)
In-Reply-To: <20220301063756.16817-1-flyingpeng@tencent.com>
On Tue, Mar 01, 2022, Peng Hao wrote:
> From: Peng Hao <flyingpeng@tencent.com>
>
> vcpu 0 will repeatedly enter/exit the smm state during the startup
> phase, and kvm_init_mmu will be called repeatedly during this process.
> There are parts of the mmu initialization code that do not need to be
> modified after the first initialization.
>
> Statistics on my server, vcpu0 when starting the virtual machine
> Calling kvm_init_mmu more than 600 times (due to smm state switching).
> The patch can save about 36 microseconds in total.
>
> Signed-off-by: Peng Hao <flyingpeng@tencent.com>
> ---
> @@ -5054,7 +5059,7 @@ void kvm_mmu_after_set_cpuid(struct kvm_vcpu *vcpu)
> void kvm_mmu_reset_context(struct kvm_vcpu *vcpu)
> {
> kvm_mmu_unload(vcpu);
> - kvm_init_mmu(vcpu);
> + kvm_init_mmu(vcpu, false);
This is wrong, kvm_mmu_reset_context() is the "big hammer" and is expected to
unconditionally get the MMU to a known good state. E.g. failure to initialize
means this code:
context->shadow_root_level = kvm_mmu_get_tdp_level(vcpu);
will not update the shadow_root_level as expected in response to userspace changing
guest.MAXPHYADDR in such a way that KVM enables/disables 5-level paging.
The SMM transitions definitely need to be fixed, and we're slowly getting there,
but sadly there's no quick fix.
next prev parent reply other threads:[~2022-03-01 17:55 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-03-01 6:37 [PATCH] kvm: x86: Improve virtual machine startup performance Peng Hao
2022-03-01 17:54 ` Sean Christopherson [this message]
2022-03-02 1:30 ` Hao Peng
2022-03-03 1:29 ` Sean Christopherson
2022-03-03 2:56 ` Hao Peng
2022-03-08 2:03 ` Sean Christopherson
2022-03-08 8:13 ` Paolo Bonzini
2022-03-08 16:04 ` Sean Christopherson
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=Yh5d7XBD9D4FhEe3@google.com \
--to=seanjc@google.com \
--cc=flyingpenghao@gmail.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=pbonzini@redhat.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 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.