Then what is the point of the vm_unmap_aliases? If you are doing it
for security it won't work because other CPUs might still be able
to write through dangling TLBs. If you are not doing it for
security then it does not need to be done at all.
Unless it is something strange that Xen does with the page table
structure and you just need to get rid of those?
(Xen does something like this internally to either defer or avoid many
expensive tlb operations.)
The underlying physical page is being exchanged, so the old page isFor Xen dom0, when someone does something like dma_alloc_coherent, weThese are just stale aliases that will no longer be operated on
allocate the memory as normal, and then swizzle the underlying physical
pages to be machine physically contiguous (vs contiguous pseudo-physical
guest memory), and within the addressable range for the device. In
order to do that, we need to make sure the pages are only mapped by the
linear mapping, and there are no other aliases.
unless there is a kernel bug -- so can you just live with them,
or is it a security issue of memory access escaping its domain?
being returned to Xen's free page pool. It will refuse to do the
exchange if the guest still has pagetable references to the page.
But it refuses to do this because it is worried about dangling TLBs?
Or some implementation detail that can't handle the page table
entries?
Hmm. Let's just try to establish that it is really required first.
Or... what if we just allow a compile and/or boot time flag to direct
that it does not want lazy vmap unmapping and it will just revert to
synchronous unmapping? If Xen needs lots of flushing anyway it might
not be a win anyway.