On Fri, Apr 23, 2021 at 5:48 PM Sean Christopherson <seanjc@xxxxxxxxxx> wrote: > > Initialize constant VMCS state in vcpu_vcpu_reset() instead of in > vmx_vcpu_create(), which allows for the removal of the open coded "vCPU > load" sequence since ->vcpu_reset() is invoked while the vCPU is properly > loaded (which is the entire point of vCPU reset...). > > Deferring initialization is effectively a nop as it's impossible to > safely access the VMCS between the current call site and its new home, as > both the vCPU and the pCPU are put immediately after init_vmcs(), i.e. > the VMCS isn't guaranteed to be loaded. > > Note, task preemption is not a problem as vmx_sched_in() _can't_ touch > the VMCS as ->sched_in() is invoked before the vCPU, and thus VMCS, is > reloaded. I.e. the preemption path also can't consume VMCS state. > > Signed-off-by: Sean Christopherson <seanjc@xxxxxxxxxx> Reviewed-by: Reiji Watanabe <reijiw@xxxxxxxxxx>