[PATCH v3 00/22] https://www.spinics.net/lists/kvm/msg267878.html

Paolo Bonzini posted 22 patches 2 years ago
arch/x86/include/asm/kvm_host.h |  19 +-
arch/x86/kvm/mmu.h              |   2 +-
arch/x86/kvm/mmu/mmu.c          | 376 ++++++++++++++------------------
arch/x86/kvm/mmu/paging_tmpl.h  |  14 +-
arch/x86/kvm/mmu/tdp_mmu.c      |   4 +-
arch/x86/kvm/svm/nested.c       |  18 +-
arch/x86/kvm/svm/svm.c          |   2 +-
arch/x86/kvm/vmx/nested.c       |  15 +-
arch/x86/kvm/vmx/vmx.c          |   2 +-
arch/x86/kvm/x86.c              |  33 ++-
10 files changed, 219 insertions(+), 266 deletions(-)
[PATCH v3 00/22] https://www.spinics.net/lists/kvm/msg267878.html
Posted by Paolo Bonzini 2 years ago
Right now the "MMU role" is a messy mix of the shadow page table format
and the CPU paging mode (CR0/CR4/EFER, SMM, guest mode, etc).  Whenever
something is different between the MMU and the CPU, it is stored as an
extra field in struct kvm_mmu; for extra bonus complication, sometimes
the same thing is stored in both the role and an extra field.

This series cleans up things by putting the two in separate fields,
so that the "MMU role" represents exactly the role of the root page.
This in turn makes it possible to eliminate various fields that are
now redundant with either the CPU or te MMU role.

These patches have mostly been posted and reviewed already[1], and I
have now retested them on top of kvm/next.

Paolo

[1] https://patchew.org/linux/20220221162243.683208-1-pbonzini@redhat.com/

Paolo Bonzini (21):
  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: x86/mmu: remove "bool base_only" arguments
  KVM: x86/mmu: split cpu_role 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_role.base.level
  KVM: x86/mmu: replace direct_map with root_role.direct

Sean Christopherson (1):
  KVM: x86: Clean up and document nested #PF workaround

 arch/x86/include/asm/kvm_host.h |  19 +-
 arch/x86/kvm/mmu.h              |   2 +-
 arch/x86/kvm/mmu/mmu.c          | 376 ++++++++++++++------------------
 arch/x86/kvm/mmu/paging_tmpl.h  |  14 +-
 arch/x86/kvm/mmu/tdp_mmu.c      |   4 +-
 arch/x86/kvm/svm/nested.c       |  18 +-
 arch/x86/kvm/svm/svm.c          |   2 +-
 arch/x86/kvm/vmx/nested.c       |  15 +-
 arch/x86/kvm/vmx/vmx.c          |   2 +-
 arch/x86/kvm/x86.c              |  33 ++-
 10 files changed, 219 insertions(+), 266 deletions(-)

-- 
2.31.1
Re: [PATCH v3 00/22] https://www.spinics.net/lists/kvm/msg267878.html
Posted by Paolo Bonzini 2 years ago
Uh-oh, wrong subject.  Should be "KVM MMU refactoring part 2: role changes".

Supersedes: <20220221162243.683208-1-pbonzini@redhat.com>

Paolo

On 4/14/22 09:39, Paolo Bonzini wrote:
> Right now the "MMU role" is a messy mix of the shadow page table format
> and the CPU paging mode (CR0/CR4/EFER, SMM, guest mode, etc).  Whenever
> something is different between the MMU and the CPU, it is stored as an
> extra field in struct kvm_mmu; for extra bonus complication, sometimes
> the same thing is stored in both the role and an extra field.
> 
> This series cleans up things by putting the two in separate fields,
> so that the "MMU role" represents exactly the role of the root page.
> This in turn makes it possible to eliminate various fields that are
> now redundant with either the CPU or te MMU role.
> 
> These patches have mostly been posted and reviewed already[1], and I
> have now retested them on top of kvm/next.
> 
> Paolo
> 
> [1] https://patchew.org/linux/20220221162243.683208-1-pbonzini@redhat.com/
> 
> Paolo Bonzini (21):
>    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: x86/mmu: remove "bool base_only" arguments
>    KVM: x86/mmu: split cpu_role 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_role.base.level
>    KVM: x86/mmu: replace direct_map with root_role.direct
> 
> Sean Christopherson (1):
>    KVM: x86: Clean up and document nested #PF workaround
> 
>   arch/x86/include/asm/kvm_host.h |  19 +-
>   arch/x86/kvm/mmu.h              |   2 +-
>   arch/x86/kvm/mmu/mmu.c          | 376 ++++++++++++++------------------
>   arch/x86/kvm/mmu/paging_tmpl.h  |  14 +-
>   arch/x86/kvm/mmu/tdp_mmu.c      |   4 +-
>   arch/x86/kvm/svm/nested.c       |  18 +-
>   arch/x86/kvm/svm/svm.c          |   2 +-
>   arch/x86/kvm/vmx/nested.c       |  15 +-
>   arch/x86/kvm/vmx/vmx.c          |   2 +-
>   arch/x86/kvm/x86.c              |  33 ++-
>   10 files changed, 219 insertions(+), 266 deletions(-)
>
Re: [PATCH v3 00/22] https://www.spinics.net/lists/kvm/msg267878.html
Posted by Sean Christopherson 2 years ago
On Thu, Apr 14, 2022, Paolo Bonzini wrote:
> Uh-oh, wrong subject.  Should be "KVM MMU refactoring part 2: role changes".
> 
> Supersedes: <20220221162243.683208-1-pbonzini@redhat.com>

Still Spinics huh?  I thought you were using b4 these days? :-)

KVM Forum 2019 - Reports of my Bloat Have Been Greatly Exaggerated - Paolo Bonzini, Red Hat, Inc.

KVM Forum 2022 - Reports of my Fossilization Have Been Greatly Understated - Paolo Bonzini, Red Hat, Inc.
Re: [PATCH v3 00/22] https://www.spinics.net/lists/kvm/msg267878.html
Posted by Paolo Bonzini 2 years ago
On 4/14/22 17:02, Sean Christopherson wrote:
>> Uh-oh, wrong subject.  Should be "KVM MMU refactoring part 2: role changes".
>>
>> Supersedes:<20220221162243.683208-1-pbonzini@redhat.com>
>
> Still Spinics huh?  I thought you were using b4 these days?:-)

I use Patchew for tracking and either b4 or Patchew for application, but 
sometimes a certain search engine has different preferences.

Paolo

> KVM Forum 2019 - Reports of my Bloat Have Been Greatly Exaggerated - Paolo Bonzini, Red Hat, Inc.
> 
> KVM Forum 2022 - Reports of my Fossilization Have Been Greatly Understated - Paolo Bonzini, Red Hat, Inc.
>