Message ID | 20240522014013.1672962-6-seanjc@google.com (mailing list archive) |
---|---|
State | Handled Elsewhere |
Headers | show |
Series | KVM: Fold kvm_arch_sched_in() into kvm_arch_vcpu_load() | expand |
On 22/05/2024 1:40 pm, Sean Christopherson wrote: > Always set l1tf_flush_l1d during kvm_arch_vcpu_load() instead of setting > it only when the vCPU is being scheduled back in. The flag is processed > only when VM-Enter is imminent, and KVM obviously needs to load the vCPU > before VM-Enter, so attempting to precisely set l1tf_flush_l1d provides no > meaningful value. I.e. the flag _will_ be set either way, it's simply a > matter of when. Seems reasonable. > > Signed-off-by: Sean Christopherson <seanjc@google.com> > --- Acked-by: Kai Huang <kai.huang@intel.com> > arch/x86/kvm/x86.c | 11 +++++------ > 1 file changed, 5 insertions(+), 6 deletions(-) > > diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c > index 59aa772af755..60fea297f91f 100644 > --- a/arch/x86/kvm/x86.c > +++ b/arch/x86/kvm/x86.c > @@ -5006,12 +5006,11 @@ void kvm_arch_vcpu_load(struct kvm_vcpu *vcpu, int cpu) > { > struct kvm_pmu *pmu = vcpu_to_pmu(vcpu); > > - if (vcpu->scheduled_out) { > - vcpu->arch.l1tf_flush_l1d = true; > - if (pmu->version && unlikely(pmu->event_count)) { > - pmu->need_cleanup = true; > - kvm_make_request(KVM_REQ_PMU, vcpu); > - } > + vcpu->arch.l1tf_flush_l1d = true; > + > + if (vcpu->scheduled_out && pmu->version && pmu->event_count) { > + pmu->need_cleanup = true; > + kvm_make_request(KVM_REQ_PMU, vcpu); > } Nit, the unlikely() is lost, but I guess it is OK?
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index 59aa772af755..60fea297f91f 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -5006,12 +5006,11 @@ void kvm_arch_vcpu_load(struct kvm_vcpu *vcpu, int cpu) { struct kvm_pmu *pmu = vcpu_to_pmu(vcpu); - if (vcpu->scheduled_out) { - vcpu->arch.l1tf_flush_l1d = true; - if (pmu->version && unlikely(pmu->event_count)) { - pmu->need_cleanup = true; - kvm_make_request(KVM_REQ_PMU, vcpu); - } + vcpu->arch.l1tf_flush_l1d = true; + + if (vcpu->scheduled_out && pmu->version && pmu->event_count) { + pmu->need_cleanup = true; + kvm_make_request(KVM_REQ_PMU, vcpu); } /* Address WBINVD may be executed by guest */
Always set l1tf_flush_l1d during kvm_arch_vcpu_load() instead of setting it only when the vCPU is being scheduled back in. The flag is processed only when VM-Enter is imminent, and KVM obviously needs to load the vCPU before VM-Enter, so attempting to precisely set l1tf_flush_l1d provides no meaningful value. I.e. the flag _will_ be set either way, it's simply a matter of when. Signed-off-by: Sean Christopherson <seanjc@google.com> --- arch/x86/kvm/x86.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-)