On Sat, 2013-08-03 at 14:25 +1000, Benjamin Herrenschmidt wrote:
On Sat, 2013-08-03 at 03:11 +0000, Bhushan Bharat-R65777 wrote:
quoted
quoted
Could you explain why we need to set dirty/referenced on the PTE, when we didn't
need to do that before? All we're getting from the PTE is wimg.
We have MMU notifiers to take care of the page being unmapped, and we've already
marked the page itself as dirty if the TLB entry is writeable.
I pulled this code from book3s.
Ben, can you describe why we need this on book3s ?
If you let the guest write to the page you must set the dirty bit on the PTE
(or the struct page, at least one of them), similar with accessed on any access.
If you don't, the VM might swap the page out without writing it back to disk
for example, assuming it contains no modified data.
We've already marked the page itself as dirty using kvm_set_pfn_dirty(),
and if the VM swaps it out we'll get an MMU notifier callback. If we
marked the PTE dirty/accessed instead, is there any guarantee it will
stay marked dirty/accessed until the next MMU notifier?
-Scott