On Thu, Jul 01, 2021 at 07:00:51PM +0200, David Hildenbrand wrote: > On 30.06.21 23:47, David Matlack wrote: > > This patch series adds support for the TDP MMU in the fast_page_fault > > path, which enables certain write-protection and access tracking faults > > to be handled without taking the KVM MMU lock. This series brings the > > performance of these faults up to par with the legacy MMU. > > > > Since there is not currently any KVM test coverage for access tracking > > faults, this series introduces a new KVM selftest, > > access_tracking_perf_test. Note that this test relies on page_idle to > > enable access tracking from userspace (since it is the only available > > usersapce API to do so) and page_idle is being considered for removal > > from Linux > > (https://lore.kernel.org/linux-mm/20210612000714.775825-1-willy@xxxxxxxxxxxxx/). > > Well, at least a new selftest that implicitly tests a part of page_idle -- > nice :) > > Haven't looked into the details, but if you can live with page tables > starting unpopulated and only monitoring what gets populated on r/w access, > you might be able to achieve something similar using /proc/self/pagemap and > softdirty handling. > > Unpopulated page (e.g., via MADV_DISCARD) -> trigger read or write access -> > sense if page populated in pagemap > Populated page-> clear all softdirty bits -> trigger write access -> sense > if page is softdirty in pagemap Thanks for the suggestion. I modified by test to write 4 to /proc/self/clear_refs rather than marking pages in page_idle. However, by doing so I was no longer able to exercise KVM's fast_page_fault handler [1]. It looks like the reason why is that clear_refs issues the invalidate_range mmu notifiers, which will cause KVM to fully refault the page from the host MM upon subsequent guest memory accesses. In contrast, page_idle uses clear_young which KVM can handle with fast_page_fault. Let me know if I misunderstood your suggestion though. [1] https://www.kernel.org/doc/html/latest/virt/kvm/locking.html#exception > > See https://lkml.kernel.org/r/20210419135443.12822-6-david@xxxxxxxxxx for an > example. > > But I'm actually fairly happy to see page_idel getting used. Maybe you could > extend that test using pagemap, if it's applicable to your test setup. > > -- > Thanks, > > David / dhildenb >