On Sat, Oct 07, 2023, Like Xu wrote: > On 14/7/2023 2:50 pm, Yan Zhao wrote: > > Added helpers to check if KVM honors guest MTRRs. > > The inner helper __kvm_mmu_honors_guest_mtrrs() is also provided to > > outside callers for the purpose of checking if guest MTRRs were honored > > before stopping non-coherent DMA. > > > > Suggested-by: Sean Christopherson <seanjc@xxxxxxxxxx> > > Signed-off-by: Yan Zhao <yan.y.zhao@xxxxxxxxx> > > --- > > arch/x86/kvm/mmu.h | 7 +++++++ > > arch/x86/kvm/mmu/mmu.c | 15 +++++++++++++++ > > 2 files changed, 22 insertions(+) > > > > diff --git a/arch/x86/kvm/mmu.h b/arch/x86/kvm/mmu.h > > index 92d5a1924fc1..38bd449226f6 100644 > > --- a/arch/x86/kvm/mmu.h > > +++ b/arch/x86/kvm/mmu.h > > @@ -235,6 +235,13 @@ static inline u8 permission_fault(struct kvm_vcpu *vcpu, struct kvm_mmu *mmu, > > return -(u32)fault & errcode; > > } > > +bool __kvm_mmu_honors_guest_mtrrs(struct kvm *kvm, bool vm_has_noncoherent_dma); > > + > > +static inline bool kvm_mmu_honors_guest_mtrrs(struct kvm *kvm) > > +{ > > + return __kvm_mmu_honors_guest_mtrrs(kvm, kvm_arch_has_noncoherent_dma(kvm)); > > +} > > + > > void kvm_zap_gfn_range(struct kvm *kvm, gfn_t gfn_start, gfn_t gfn_end); > > int kvm_arch_write_log_dirty(struct kvm_vcpu *vcpu); > > diff --git a/arch/x86/kvm/mmu/mmu.c b/arch/x86/kvm/mmu/mmu.c > > index 1e5db621241f..b4f89f015c37 100644 > > --- a/arch/x86/kvm/mmu/mmu.c > > +++ b/arch/x86/kvm/mmu/mmu.c > > @@ -4516,6 +4516,21 @@ static int kvm_tdp_mmu_page_fault(struct kvm_vcpu *vcpu, > > } > > #endif > > +bool __kvm_mmu_honors_guest_mtrrs(struct kvm *kvm, bool vm_has_noncoherent_dma) > > According to the motivation provided in the comment, the function will no > longer need to be passed the parameter "struct kvm *kvm" but will rely on > the global parameters (plus vm_has_noncoherent_dma), removing "*kvm" ? Yeah, I'll fixup the commit to drop @kvm from the inner helper. Thanks!