[PATCH v2 00/25] KVM MMU refactoring part 2: role changes

From: Paolo Bonzini
Date: Mon Feb 21 2022 - 11:22:56 EST


This is the MMU root role vs. CPU mode split. While not a requirement
in absolute terms for further hacking, it makes it much clearer to reason
on whether the previous root is still valid.

Paolo

Paolo Bonzini (25):
KVM: x86/mmu: avoid indirect call for get_cr3
KVM: x86/mmu: nested EPT cannot be used in SMM
KVM: x86/mmu: constify uses of struct kvm_mmu_role_regs
KVM: x86/mmu: pull computation of kvm_mmu_role_regs to kvm_init_mmu
KVM: x86/mmu: rephrase unclear comment
KVM: nVMX/nSVM: do not monkey-patch inject_page_fault callback
KVM: x86/mmu: remove "bool base_only" arguments
KVM: x86/mmu: split cpu_mode from mmu_role
KVM: x86/mmu: do not recompute root level from kvm_mmu_role_regs
KVM: x86/mmu: remove ept_ad field
KVM: x86/mmu: remove kvm_calc_shadow_root_page_role_common
KVM: x86/mmu: cleanup computation of MMU roles for two-dimensional
paging
KVM: x86/mmu: cleanup computation of MMU roles for shadow paging
KVM: x86/mmu: store shadow EFER.NX in the MMU role
KVM: x86/mmu: remove extended bits from mmu_role, rename field
KVM: x86/mmu: rename kvm_mmu_role union
KVM: x86/mmu: remove redundant bits from extended role
KVM: x86/mmu: remove valid from extended role
KVM: x86/mmu: simplify and/or inline computation of shadow MMU roles
KVM: x86/mmu: pull CPU mode computation to kvm_init_mmu
KVM: x86/mmu: replace shadow_root_level with root_role.level
KVM: x86/mmu: replace root_level with cpu_mode.base.level
KVM: x86/mmu: replace direct_map with root_role.direct
KVM: x86/mmu: initialize constant-value fields just once
KVM: x86/mmu: extract initialization of the page walking data

arch/x86/include/asm/kvm_host.h | 25 +-
arch/x86/kvm/mmu.h | 12 +-
arch/x86/kvm/mmu/mmu.c | 479 +++++++++++++-------------------
arch/x86/kvm/mmu/paging_tmpl.h | 16 +-
arch/x86/kvm/mmu/tdp_mmu.c | 4 +-
arch/x86/kvm/svm/nested.c | 13 +-
arch/x86/kvm/svm/svm.c | 2 +-
arch/x86/kvm/vmx/nested.c | 9 +-
arch/x86/kvm/vmx/vmx.c | 2 +-
arch/x86/kvm/x86.c | 31 ++-
10 files changed, 260 insertions(+), 333 deletions(-)

--
2.31.1