]> www.infradead.org Git - users/jedix/linux-maple.git/commit
KVM: SVM: Remove redundant TLB flush on guest CR4.PGE change
authorSean Christopherson <seanjc@google.com>
Wed, 27 Nov 2024 23:53:12 +0000 (15:53 -0800)
committerSean Christopherson <seanjc@google.com>
Tue, 17 Dec 2024 00:15:28 +0000 (16:15 -0800)
commit036e78a942b4981a21a48751d45eebaf53f4c5c4
tree3cabfaaa4a21488211386d6eca249a4dad36a229
parent45d522d3ee9ccea0f1fa0548af33cb8507ea947c
KVM: SVM: Remove redundant TLB flush on guest CR4.PGE change

Drop SVM's direct TLB flush when CR4.PGE is toggled and NPT is enabled, as
KVM already guarantees TLBs are flushed appropriately.

For the call from cr_trap(), kvm_post_set_cr4() requests TLB_FLUSH_GUEST
(which is a superset of TLB_FLUSH_CURRENT) when CR4.PGE is toggled,
regardless of whether or not KVM is using TDP.

The calls from nested_vmcb02_prepare_save() and nested_svm_vmexit() are
checking guest (L2) vs. host (L1) CR4, and so a flush is unnecessary as L2
is defined to use a different ASID (from L1's perspective).

Lastly, the call from svm_set_cr0() passes in the current CR4 value, i.e.
can't toggle PGE.

Link: https://lore.kernel.org/r/20241127235312.4048445-1-seanjc@google.com
Signed-off-by: Sean Christopherson <seanjc@google.com>
arch/x86/kvm/svm/svm.c