Skip to content
Commit 40fde70d authored by Bharat Bhushan's avatar Bharat Bhushan Committed by Paolo Bonzini
Browse files

kvm: ppc: booke: check range page invalidation progress on page setup



When the MM code is invalidating a range of pages, it calls the KVM
kvm_mmu_notifier_invalidate_range_start() notifier function, which calls
kvm_unmap_hva_range(), which arranges to flush all the TLBs for guest pages.
However, the Linux PTEs for the range being flushed are still valid at
that point.  We are not supposed to establish any new references to pages
in the range until the ...range_end() notifier gets called.
The PPC-specific KVM code doesn't get any explicit notification of that;
instead, we are supposed to use mmu_notifier_retry() to test whether we
are or have been inside a range flush notifier pair while we have been
referencing a page.

This patch calls the mmu_notifier_retry() while mapping the guest
page to ensure we are not referencing a page when in range invalidation.

This call is inside a region locked with kvm->mmu_lock, which is the
same lock that is called by the KVM MMU notifier functions, thus
ensuring that no new notification can proceed while we are in the
locked region.

Signed-off-by: default avatarBharat Bhushan <bharat.bhushan@freescale.com>
Acked-by: default avatarAlexander Graf <agraf@suse.de>
[Backported to 3.12 - Paolo]
Reviewed-by: default avatarBharat Bhushan <bharat.bhushan@freescale.com>
Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
parent cfc86025
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment