Re: [PATCH] kvm: x86: Improve virtual machine startup performance

From: Sean Christopherson
Date: Tue Mar 08 2022 - 11:04:48 EST


On Tue, Mar 08, 2022, Paolo Bonzini wrote:
> On 3/8/22 03:03, Sean Christopherson wrote:
> > On Thu, Mar 03, 2022, Hao Peng wrote:
> > > On Thu, Mar 3, 2022 at 9:29 AM Sean Christopherson <seanjc@xxxxxxxxxx> wrote:
> > > >
> > > > On Wed, Mar 02, 2022, Hao Peng wrote:
> > > > > Thanks for pointing this out. However, other than shadow_root_level,
> > > > > other fields of context will not
> > > > > change during the entire operation, such as
> > > > > page_fault/sync_page/direct_map and so on under
> > > > > the condition of tdp_mmu.
> > > > > Is this patch still viable after careful confirmation of the fields
> > > > > that won't be modified?
> > > >
> > > > No, passing around the "init" flag is a hack.
> > > >
> > > > But, we can achieve what you want simply by initializing the constant data once
> > > > per vCPU. There's a _lot_ of state that is constant for a given MMU now that KVM
> > > > uses separate MMUs for L1 vs. L2 when TDP is enabled. I should get patches posted
> > > > tomorrow, just need to test (famous last words).
> >
> > Famous last words indeed. Long story short, the patches were mostly easy, but I
> > wandered deep into a rabbit hole when trying to make ->inject_page_fault() constant
> > per MMU. I'll get something posted this week, though exactly what that something is
> > remains to be seen :-)
>
> This is exactly what I have posted a few weeks ago:
>
> https://patchew.org/linux/20220221162243.683208-1-pbonzini@xxxxxxxxxx/

Heh, guess who's woefully behind on reviews... I'll respond to those threads.
Thanks for the heads up!

> See in particular
>
> KVM: nVMX/nSVM: do not monkey-patch inject_page_fault callback
> KVM: x86/mmu: initialize constant-value fields just once