On Wed, 2007-09-05 at 22:32 +0300, Avi Kivity wrote:
[resend due to bad alias expansion resulting in some recipientsLooks great. So for kvm, all guest pages will be vma mapped?
being bogus]
Some hardware and software systems maintain page tables outside the normal
Linux page tables, which reference userspace memory. This includes
Infiniband, other RDMA-capable devices, and kvm (with a pending patch).
Because these systems maintain external page tables (and external tlbs),
Linux cannot demand page this memory and it must be locked. For kvm at
least, this is a significant reduction in functionality.
This sample patch adds a new mechanism, pte notifiers, that allows drivers
to register an interest in a changes to ptes. Whenever Linux changes a
pte, it will call a notifier to allow the driver to adjust the external
page table and flush its tlb.
Note that only one notifier is implemented, ->clear(), but others should be
similar.
pte notifiers are different from paravirt_ops: they extend the normal
page tables rather than replace them; and they provide high-level
information
such as the vma and the virtual address for the driver to use.
There are lock issues in kvm between kvm lock and page lock.
Will shadow page table be still stored in page->private? If yes, the
page->private must be cleaned before add_to_swap.