OSDN Git Service

KVM: x86/mmu: Zap only obsolete roots if a root shadow page is zapped
authorSean Christopherson <seanjc@google.com>
Fri, 25 Feb 2022 18:22:45 +0000 (18:22 +0000)
committerPaolo Bonzini <pbonzini@redhat.com>
Tue, 1 Mar 2022 13:58:25 +0000 (08:58 -0500)
commit527d5cd7eece9f9f5e9c5b6692cd6814a46df6fe
treeb61e88761f379f2842fed1fd46a83538c05b7381
parent2f6f66ccd21e854cd3743bc8def68f8b4e7d91fc
KVM: x86/mmu: Zap only obsolete roots if a root shadow page is zapped

Zap only obsolete roots when responding to zapping a single root shadow
page.  Because KVM keeps root_count elevated when stuffing a previous
root into its PGD cache, shadowing a 64-bit guest means that zapping any
root causes all vCPUs to reload all roots, even if their current root is
not affected by the zap.

For many kernels, zapping a single root is a frequent operation, e.g. in
Linux it happens whenever an mm is dropped, e.g. process exits, etc...

Signed-off-by: Sean Christopherson <seanjc@google.com>
Reviewed-by: Ben Gardon <bgardon@google.com>
Message-Id: <20220225182248.3812651-5-seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/x86/include/asm/kvm_host.h
arch/x86/kvm/mmu.h
arch/x86/kvm/mmu/mmu.c
arch/x86/kvm/x86.c