KVM: x86: only allocate gfn_track when necessary
authorDavid Stevens <stevensd@chromium.org>
Wed, 22 Sep 2021 04:58:59 +0000 (13:58 +0900)
committerPaolo Bonzini <pbonzini@redhat.com>
Fri, 1 Oct 2021 07:44:58 +0000 (03:44 -0400)
commitdeae4a10f16649d9c8bfb89f38b61930fb938284
tree1a02e48834bd4dcebf1f06d4828a4fadada9ebb8
parente9d0c0c4f7ea47d25490cd466cefe6d5c1a4d0ec
KVM: x86: only allocate gfn_track when necessary

Avoid allocating the gfn_track arrays if nothing needs them. If there
are no external to KVM users of the API (i.e. no GVT-g), then page
tracking is only needed for shadow page tables. This means that when tdp
is enabled and there are no external users, then the gfn_track arrays
can be lazily allocated when the shadow MMU is actually used. This avoid
allocations equal to .05% of guest memory when nested virtualization is
not used, if the kernel is compiled without GVT-g.

Signed-off-by: David Stevens <stevensd@chromium.org>
Message-Id: <20210922045859.2011227-3-stevensd@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/x86/include/asm/kvm_host.h
arch/x86/include/asm/kvm_page_track.h
arch/x86/kvm/mmu/mmu.c
arch/x86/kvm/mmu/page_track.c
arch/x86/kvm/x86.c