On Wed, 2025-02-05 at 18:23 +0000, Yosry Ahmed wrote: > The handling for the entry and exit TLB flushes will diverge > significantly in the following changes. Instead of adding an 'is_vmenter' > argument like nested_vmx_transition_tlb_flush(), just split the function > into two variants for 'entry' and 'exit'. > > No functional change intended. > > Signed-off-by: Yosry Ahmed <yosry.ahmed@xxxxxxxxx> > --- > arch/x86/kvm/svm/nested.c | 16 +++++++++++++--- > 1 file changed, 13 insertions(+), 3 deletions(-) > > diff --git a/arch/x86/kvm/svm/nested.c b/arch/x86/kvm/svm/nested.c > index bbe4f3ac9f250..2eba36af44f22 100644 > --- a/arch/x86/kvm/svm/nested.c > +++ b/arch/x86/kvm/svm/nested.c > @@ -482,7 +482,7 @@ static void nested_save_pending_event_to_vmcb12(struct vcpu_svm *svm, > vmcb12->control.exit_int_info = exit_int_info; > } > > -static void nested_svm_transition_tlb_flush(struct kvm_vcpu *vcpu) > +static void nested_svm_entry_tlb_flush(struct kvm_vcpu *vcpu) > { > /* Handle pending Hyper-V TLB flush requests */ > kvm_hv_nested_transtion_tlb_flush(vcpu, npt_enabled); > @@ -503,6 +503,16 @@ static void nested_svm_transition_tlb_flush(struct kvm_vcpu *vcpu) > kvm_make_request(KVM_REQ_TLB_FLUSH_CURRENT, vcpu); > } > > +static void nested_svm_exit_tlb_flush(struct kvm_vcpu *vcpu) > +{ > + /* Handle pending Hyper-V TLB flush requests */ > + kvm_hv_nested_transtion_tlb_flush(vcpu, npt_enabled); > + > + /* See nested_svm_entry_tlb_flush() */ > + kvm_make_request(KVM_REQ_MMU_SYNC, vcpu); > + kvm_make_request(KVM_REQ_TLB_FLUSH_CURRENT, vcpu); > +} > + > /* > * Load guest's/host's cr3 on nested vmentry or vmexit. @nested_npt is true > * if we are emulating VM-Entry into a guest with NPT enabled. > @@ -645,7 +655,7 @@ static void nested_vmcb02_prepare_control(struct vcpu_svm *svm, > u32 pause_count12; > u32 pause_thresh12; > > - nested_svm_transition_tlb_flush(vcpu); > + nested_svm_entry_tlb_flush(vcpu); > > /* Enter Guest-Mode */ > enter_guest_mode(vcpu); > @@ -1131,7 +1141,7 @@ int nested_svm_vmexit(struct vcpu_svm *svm) > > kvm_vcpu_unmap(vcpu, &map); > > - nested_svm_transition_tlb_flush(vcpu); > + nested_svm_exit_tlb_flush(vcpu); > > nested_svm_uninit_mmu_context(vcpu); > Looks reasonable, Reviewed-by: Maxim Levitsky <mlevitsk@xxxxxxxxxx> Best regards, Maxim Levitsky