mbox series

[v2,0/2] KVM: x86: skip gfn_track allocation when possible

Message ID 20210922045859.2011227-1-stevensd@google.com (mailing list archive)
Headers show
Series KVM: x86: skip gfn_track allocation when possible | expand

Message

David Stevens Sept. 22, 2021, 4:58 a.m. UTC
From: David Stevens <stevensd@chromium.org>

Skip allocating gfn_track arrays when tracking of guest write access to
pages is not required. For VMs where the allocation can be avoided, this
saves 2 bytes per 4KB of guest memory.

Write tracking is used to manage shadow page tables in three cases -
when tdp is not supported, when nested virtualization is used, and for
GVT-g. If tdp_enable is set and the kernel is compiled without GVT-g,
then the gfn_track arrays can be allocated lazily when the shadow MMU is
initialized.

v1 -> v2:
 - lazily allocate gfn_track when shadow MMU is initialized, instead
   of looking at cpuid

David Stevens (2):
  KVM: x86: add config for non-kvm users of page tracking
  KVM: x86: only allocate gfn_track when necessary

 arch/x86/include/asm/kvm_host.h       |  8 ++++
 arch/x86/include/asm/kvm_page_track.h |  5 +-
 arch/x86/kvm/Kconfig                  |  3 ++
 arch/x86/kvm/mmu/mmu.c                |  7 +++
 arch/x86/kvm/mmu/page_track.c         | 69 ++++++++++++++++++++++++++-
 arch/x86/kvm/x86.c                    |  2 +-
 drivers/gpu/drm/i915/Kconfig          |  1 +
 7 files changed, 91 insertions(+), 4 deletions(-)

Comments

Paolo Bonzini Sept. 28, 2021, 5 p.m. UTC | #1
On 22/09/21 06:58, David Stevens wrote:
> From: David Stevens<stevensd@chromium.org>
> 
> Skip allocating gfn_track arrays when tracking of guest write access to
> pages is not required. For VMs where the allocation can be avoided, this
> saves 2 bytes per 4KB of guest memory.
> 
> Write tracking is used to manage shadow page tables in three cases -
> when tdp is not supported, when nested virtualization is used, and for
> GVT-g. If tdp_enable is set and the kernel is compiled without GVT-g,
> then the gfn_track arrays can be allocated lazily when the shadow MMU is
> initialized.
> 
> v1 -> v2:
>   - lazily allocate gfn_track when shadow MMU is initialized, instead
>     of looking at cpuid

Queued, thanks.

paolo