mbox series

[0/9] KVM: x86: TDP level cleanups and shadow NPT fix

Message ID 20200716034122.5998-1-sean.j.christopherson@intel.com (mailing list archive)
Headers show
Series KVM: x86: TDP level cleanups and shadow NPT fix | expand

Message

Sean Christopherson July 16, 2020, 3:41 a.m. UTC
The primary purpose of this series is to implement a suggestion from Paolo
to have the MMU make the decision between 4 and 5 level EPT/TDP (when
5-level page tables are supported).  Having the MMU "own" the decision of
whether or not to use 5-level paging leads to a variety of nice cleanups,
and ultimately gets rid of another kvm_x86_ops.

Patch 1 is a fix for SVM's shadow NPT that is compile tested only.  I
don't know enough about the shadow NPT details to know if it's a "real"
bug or just a supericial oddity that can't actually cause problems.

"Remove temporary WARN on expected vs. actual EPTP level mismatch" could
easily be squashed with "Pull the PGD's level from the MMU instead of
recalculating it", I threw it in as a separate patch to provide a
bisection helper in case things go sideways.

Sean Christopherson (9):
  KVM: nSVM: Correctly set the shadow NPT root level in its MMU role
  KVM: x86/mmu: Add separate helper for shadow NPT root page role calc
  KVM: VMX: Drop a duplicate declaration of construct_eptp()
  KVM: VMX: Make vmx_load_mmu_pgd() static
  KVM: x86: Pull the PGD's level from the MMU instead of recalculating
    it
  KVM: VXM: Remove temporary WARN on expected vs. actual EPTP level
    mismatch
  KVM: x86: Dynamically calculate TDP level from max level and
    MAXPHYADDR
  KVM: x86/mmu: Rename max_page_level to max_huge_page_level
  KVM: x86: Specify max TDP level via kvm_configure_mmu()

 arch/x86/include/asm/kvm_host.h |  9 ++---
 arch/x86/kvm/cpuid.c            |  2 --
 arch/x86/kvm/mmu.h              | 10 ++++--
 arch/x86/kvm/mmu/mmu.c          | 63 +++++++++++++++++++++++++--------
 arch/x86/kvm/svm/nested.c       |  1 -
 arch/x86/kvm/svm/svm.c          |  8 ++---
 arch/x86/kvm/vmx/nested.c       |  2 +-
 arch/x86/kvm/vmx/vmx.c          | 31 +++++++---------
 arch/x86/kvm/vmx/vmx.h          |  6 ++--
 arch/x86/kvm/x86.c              |  1 -
 10 files changed, 81 insertions(+), 52 deletions(-)

Comments

Paolo Bonzini July 30, 2020, 10:18 p.m. UTC | #1
On 16/07/20 05:41, Sean Christopherson wrote:
> The primary purpose of this series is to implement a suggestion from Paolo
> to have the MMU make the decision between 4 and 5 level EPT/TDP (when
> 5-level page tables are supported).  Having the MMU "own" the decision of
> whether or not to use 5-level paging leads to a variety of nice cleanups,
> and ultimately gets rid of another kvm_x86_ops.
> 
> Patch 1 is a fix for SVM's shadow NPT that is compile tested only.  I
> don't know enough about the shadow NPT details to know if it's a "real"
> bug or just a supericial oddity that can't actually cause problems.
> 
> "Remove temporary WARN on expected vs. actual EPTP level mismatch" could
> easily be squashed with "Pull the PGD's level from the MMU instead of
> recalculating it", I threw it in as a separate patch to provide a
> bisection helper in case things go sideways.
> 
> Sean Christopherson (9):
>   KVM: nSVM: Correctly set the shadow NPT root level in its MMU role
>   KVM: x86/mmu: Add separate helper for shadow NPT root page role calc
>   KVM: VMX: Drop a duplicate declaration of construct_eptp()
>   KVM: VMX: Make vmx_load_mmu_pgd() static
>   KVM: x86: Pull the PGD's level from the MMU instead of recalculating
>     it
>   KVM: VXM: Remove temporary WARN on expected vs. actual EPTP level
>     mismatch
>   KVM: x86: Dynamically calculate TDP level from max level and
>     MAXPHYADDR
>   KVM: x86/mmu: Rename max_page_level to max_huge_page_level
>   KVM: x86: Specify max TDP level via kvm_configure_mmu()
> 
>  arch/x86/include/asm/kvm_host.h |  9 ++---
>  arch/x86/kvm/cpuid.c            |  2 --
>  arch/x86/kvm/mmu.h              | 10 ++++--
>  arch/x86/kvm/mmu/mmu.c          | 63 +++++++++++++++++++++++++--------
>  arch/x86/kvm/svm/nested.c       |  1 -
>  arch/x86/kvm/svm/svm.c          |  8 ++---
>  arch/x86/kvm/vmx/nested.c       |  2 +-
>  arch/x86/kvm/vmx/vmx.c          | 31 +++++++---------
>  arch/x86/kvm/vmx/vmx.h          |  6 ++--
>  arch/x86/kvm/x86.c              |  1 -
>  10 files changed, 81 insertions(+), 52 deletions(-)
> 

Queued, thanks.

Paolo