mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-10 18:40:25 -04:00
KVM: x86/mmu: Don't mark unused faultin pages as accessed
When finishing guest page faults, don't mark pages as accessed if KVM is resuming the guest _without_ installing a mapping, i.e. if the page isn't being used. While it's possible that marking the page accessed could avoid minor thrashing due to reclaiming a page that the guest is about to access, it's far more likely that the gfn=>pfn mapping was was invalidated, e.g. due a memslot change, or because the corresponding VMA is being modified. Tested-by: Alex Bennée <alex.bennee@linaro.org> Signed-off-by: Sean Christopherson <seanjc@google.com> Tested-by: Dmitry Osipenko <dmitry.osipenko@collabora.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Message-ID: <20241010182427.1434605-49-seanjc@google.com>
This commit is contained in:
committed by
Paolo Bonzini
parent
8dd861cc07
commit
8eaa98004b
@@ -4393,7 +4393,9 @@ static void kvm_mmu_finish_page_fault(struct kvm_vcpu *vcpu,
|
||||
* fault handler, and so KVM must (somewhat) speculatively mark the
|
||||
* folio dirty if KVM could locklessly make the SPTE writable.
|
||||
*/
|
||||
if (!fault->map_writable || r == RET_PF_RETRY)
|
||||
if (r == RET_PF_RETRY)
|
||||
kvm_release_page_unused(fault->refcounted_page);
|
||||
else if (!fault->map_writable)
|
||||
kvm_release_page_clean(fault->refcounted_page);
|
||||
else
|
||||
kvm_release_page_dirty(fault->refcounted_page);
|
||||
|
||||
Reference in New Issue
Block a user