]> www.infradead.org Git - users/dwmw2/linux.git/commit
KVM: Avoid livelock in pfncache hva_to_pfn_retry() pfncache
authorDavid Woodhouse <dwmw@amazon.co.uk>
Fri, 2 Aug 2024 22:09:58 +0000 (23:09 +0100)
committerDavid Woodhouse <dwmw@amazon.co.uk>
Fri, 2 Aug 2024 22:24:54 +0000 (23:24 +0100)
commit77638bf15fad551ae9b4b3b967ceb5c3ed34c24e
tree9ad9c259ed521a6c1f842619e0dc79630815078d
parentbcf446d2496f1437bbb338df64b9f3ca8536f8b4
KVM: Avoid livelock in pfncache hva_to_pfn_retry()

In some circumstances, the gpc_map() in the mmu_notifier retry loop can
cause it to livelock because it invalidates itself every time round the
loop.

Shift the gpc_map() outside the mmu_notifier_retry_cache() loop by using
a new gpc->pfn_valid flag to signal *partial* setup. It's used only by
the invalidation callback, to invalidate the GPC before we've even
finished mapping it.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
include/linux/kvm_types.h
virt/kvm/pfncache.c