2020-04-28 00:58:22

by Sean Christopherson

[permalink] [raw]
Subject: [PATCH 0/3] KVM: x86/mmu: Use kernel's PG_LEVEL_* enums

Drop KVM's PT_{PAGE_TABLE,DIRECTORY,PDPE}_LEVEL KVM enums in favor of the
kernel's PG_LEVEL_{4K,2M,1G} enums, which have far more user friendly
names.

The KVM names were presumably intended to abstract away the page size. In
practice, the abstraction is only useful for a single line of code, a PSE
paging related large page check. For everything else, the abstract names
do nothing but obfuscate the code.

Boot tested a PSE kernel under 32-bit KVM and 64-bit KVM, with and without
EPT enabled. Patches 2 and 3 generate no binary difference relative to
patch 1 when compared via "objdump -d".

Sean Christopherson (3):
KVM: x86/mmu: Tweak PSE hugepage handling to avoid 2M vs 4M conundrum
KVM: x86/mmu: Move max hugepage level to a separate #define
KVM: x86/mmu: Drop KVM's hugepage enums in favor of the kernel's enums

arch/x86/include/asm/kvm_host.h | 13 +---
arch/x86/kvm/mmu/mmu.c | 118 +++++++++++++++-----------------
arch/x86/kvm/mmu/page_track.c | 4 +-
arch/x86/kvm/mmu/paging_tmpl.h | 18 ++---
arch/x86/kvm/mmu_audit.c | 6 +-
arch/x86/kvm/svm/svm.c | 2 +-
arch/x86/kvm/vmx/vmx.c | 6 +-
arch/x86/kvm/x86.c | 4 +-
8 files changed, 79 insertions(+), 92 deletions(-)

--
2.26.0


2020-04-28 14:18:48

by Barret Rhoden

[permalink] [raw]
Subject: Re: [PATCH 0/3] KVM: x86/mmu: Use kernel's PG_LEVEL_* enums

On 4/27/20 8:54 PM, Sean Christopherson wrote:
> Drop KVM's PT_{PAGE_TABLE,DIRECTORY,PDPE}_LEVEL KVM enums in favor of the
> kernel's PG_LEVEL_{4K,2M,1G} enums, which have far more user friendly
> names.

thanks for doing this - it fell off my radar.

all 3:

Reviewed-by: Barret Rhoden <[email protected]>

>
> The KVM names were presumably intended to abstract away the page size. In
> practice, the abstraction is only useful for a single line of code, a PSE
> paging related large page check. For everything else, the abstract names
> do nothing but obfuscate the code.
>
> Boot tested a PSE kernel under 32-bit KVM and 64-bit KVM, with and without
> EPT enabled. Patches 2 and 3 generate no binary difference relative to
> patch 1 when compared via "objdump -d".
>
> Sean Christopherson (3):
> KVM: x86/mmu: Tweak PSE hugepage handling to avoid 2M vs 4M conundrum
> KVM: x86/mmu: Move max hugepage level to a separate #define
> KVM: x86/mmu: Drop KVM's hugepage enums in favor of the kernel's enums
>
> arch/x86/include/asm/kvm_host.h | 13 +---
> arch/x86/kvm/mmu/mmu.c | 118 +++++++++++++++-----------------
> arch/x86/kvm/mmu/page_track.c | 4 +-
> arch/x86/kvm/mmu/paging_tmpl.h | 18 ++---
> arch/x86/kvm/mmu_audit.c | 6 +-
> arch/x86/kvm/svm/svm.c | 2 +-
> arch/x86/kvm/vmx/vmx.c | 6 +-
> arch/x86/kvm/x86.c | 4 +-
> 8 files changed, 79 insertions(+), 92 deletions(-)
>

2020-05-04 16:52:37

by Paolo Bonzini

[permalink] [raw]
Subject: Re: [PATCH 0/3] KVM: x86/mmu: Use kernel's PG_LEVEL_* enums

On 28/04/20 02:54, Sean Christopherson wrote:
> Drop KVM's PT_{PAGE_TABLE,DIRECTORY,PDPE}_LEVEL KVM enums in favor of the
> kernel's PG_LEVEL_{4K,2M,1G} enums, which have far more user friendly
> names.
>
> The KVM names were presumably intended to abstract away the page size. In
> practice, the abstraction is only useful for a single line of code, a PSE
> paging related large page check. For everything else, the abstract names
> do nothing but obfuscate the code.
>
> Boot tested a PSE kernel under 32-bit KVM and 64-bit KVM, with and without
> EPT enabled. Patches 2 and 3 generate no binary difference relative to
> patch 1 when compared via "objdump -d".
>
> Sean Christopherson (3):
> KVM: x86/mmu: Tweak PSE hugepage handling to avoid 2M vs 4M conundrum
> KVM: x86/mmu: Move max hugepage level to a separate #define
> KVM: x86/mmu: Drop KVM's hugepage enums in favor of the kernel's enums
>
> arch/x86/include/asm/kvm_host.h | 13 +---
> arch/x86/kvm/mmu/mmu.c | 118 +++++++++++++++-----------------
> arch/x86/kvm/mmu/page_track.c | 4 +-
> arch/x86/kvm/mmu/paging_tmpl.h | 18 ++---
> arch/x86/kvm/mmu_audit.c | 6 +-
> arch/x86/kvm/svm/svm.c | 2 +-
> arch/x86/kvm/vmx/vmx.c | 6 +-
> arch/x86/kvm/x86.c | 4 +-
> 8 files changed, 79 insertions(+), 92 deletions(-)
>

Queued, thanks.

Paolo