[RFC PATCH 00/10] KVM: x86/mmu: simplify argument to kvm page fault handler
From: Isaku Yamahata
Date: Tue Apr 20 2021 - 06:41:45 EST
This is a preliminary clean up for TDX which complicates KVM page fault
execution path. simplify those execution path as preparation.
The current kvm page fault handlers passes around many arguments to the
functions.
To simplify those arguments and local variables, introduce data structure,
struct kvm_page_fault, to hold those arguments, variables, and passes around the pointer
to struct kvm_page_fault.
struct kvm_page_fault is allocated on stack on the caller of kvm fault handler,
kvm_mmu_do_page_fault().
And then push down the pointer to inner functions step by step.
The conversion order is as follows
. kvm_mmu_do_page_fault() with introducing struct kvm_page_fault
. kvm_mmu.page_fault(): kvm_tdp_page_fault(), nonpaging_page_fault(), FNAME(page_fault)
. direct_page_fault()
. try_async_pf()
. page_fault_handle_page_track()
. handle_abnormal_pfn()
. fast_page_fault()
. __direct_map()
. kvm_tdp_mmu_map()
. FNAME(fetch)
Probably more functions should be converted. or some should not converted.
Only code refactoring and no functional change is intended.
Isaku Yamahata (10):
KVM: x86/mmu: make kvm_mmu_do_page_fault() receive single argument
KVM: x86/mmu: make kvm_mmu:page_fault receive single argument
KVM: x86/mmu: make direct_page_fault() receive single argument
KVM: x86/mmu: make try_async_pf() receive single argument
KVM: x86/mmu: make page_fault_handle_page_track() receive single
argument
KVM: x86/mmu: make handle_abnormal_pfn() receive single argument
KVM: x86/mmu: make fast_page_fault() receive single argument
KVM: x86/mmu: make __direct_map() receive single argument
KVM: x86/mmu: make kvm_tdp_mmu_map() receive single argument
KVM: x86/mmu: make FNAME(fetch) receive single argument
arch/x86/include/asm/kvm_host.h | 4 +-
arch/x86/kvm/mmu.h | 49 ++++++++++--
arch/x86/kvm/mmu/mmu.c | 130 +++++++++++++++++---------------
arch/x86/kvm/mmu/paging_tmpl.h | 60 +++++++--------
arch/x86/kvm/mmu/tdp_mmu.c | 21 +++---
arch/x86/kvm/mmu/tdp_mmu.h | 4 +-
arch/x86/kvm/x86.c | 4 +-
7 files changed, 156 insertions(+), 116 deletions(-)
--
2.25.1