On 11/15/21 20:11, David Woodhouse wrote:
Changing mn_memslots_update_rcuwait to a waitq (and renaming it to
mn_invalidate_waitq) is of course also a possibility.
I suspect that's the answer.
I think the actual*invalidation* of the cache still lives in the
invalidate_range() callback where I have it at the moment. But making
the req to the affected vCPUs can live in invalidate_range_start(). And
then the code which*handles* that req can wait for the
mmu_notifier_count to reach zero before it proceeds. Atomic users of
the cache (like the Xen event channel code) don't have to get involved
with that.
Also, for the small requests: since you are at it, can you add the code
in a new file under virt/kvm/?
Hm... only if I can make hva_to_pfn() and probably a handful of other
things non-static?
Yes, I think sooner or later we also want all pfn stuff in one file
(together with MMU notifiers) and all hva stuff in another; so for now
you can create virt/kvm/hva_to_pfn.h, or virt/kvm/mm.h, or whatever
color of the bikeshed you prefer.
Paolo