On Fri, Mar 01, 2024, isaku.yamahata@xxxxxxxxx wrote: > From: Isaku Yamahata <isaku.yamahata@xxxxxxxxx> > > Another function will initialize struct kvm_page_fault. Add initializer > macro to unify the big struct initialization. > > No functional change intended. > > Signed-off-by: Isaku Yamahata <isaku.yamahata@xxxxxxxxx> > --- > arch/x86/kvm/mmu/mmu_internal.h | 44 +++++++++++++++++++-------------- > 1 file changed, 26 insertions(+), 18 deletions(-) > > diff --git a/arch/x86/kvm/mmu/mmu_internal.h b/arch/x86/kvm/mmu/mmu_internal.h > index 0669a8a668ca..72ef09fc9322 100644 > --- a/arch/x86/kvm/mmu/mmu_internal.h > +++ b/arch/x86/kvm/mmu/mmu_internal.h > @@ -279,27 +279,35 @@ enum { > RET_PF_SPURIOUS, > }; > > +#define KVM_PAGE_FAULT_INIT(_vcpu, _cr2_or_gpa, _err, _prefetch, _max_level) { \ > + .addr = (_cr2_or_gpa), \ > + .error_code = (_err), \ > + .exec = (_err) & PFERR_FETCH_MASK, \ > + .write = (_err) & PFERR_WRITE_MASK, \ > + .present = (_err) & PFERR_PRESENT_MASK, \ > + .rsvd = (_err) & PFERR_RSVD_MASK, \ > + .user = (_err) & PFERR_USER_MASK, \ > + .prefetch = (_prefetch), \ > + .is_tdp = \ > + likely((_vcpu)->arch.mmu->page_fault == kvm_tdp_page_fault), \ > + .nx_huge_page_workaround_enabled = \ > + is_nx_huge_page_enabled((_vcpu)->kvm), \ > + \ > + .max_level = (_max_level), \ > + .req_level = PG_LEVEL_4K, \ > + .goal_level = PG_LEVEL_4K, \ > + .is_private = \ > + kvm_mem_is_private((_vcpu)->kvm, (_cr2_or_gpa) >> PAGE_SHIFT), \ > + \ > + .pfn = KVM_PFN_ERR_FAULT, \ > + .hva = KVM_HVA_ERR_BAD, } > + Oof, no. I would much rather refactor kvm_mmu_do_page_fault() as needed than have to maintain a macro like this.