----- Ursprüngliche Mail ----- > Von: "David Hildenbrand" <david@xxxxxxxxxx> >> One destructive way to find out in a writable mapping if the page would >> actually get remapped: >> >> a) Read the PFN of a virtual address using pagemap >> b) Write to the virtual address using /proc/pid/mem >> c) Read the PFN of a virtual address using pagemap to see if it changed >> >> If the application can be paused, you could read+write a single byte, >> turning it non-destructive. I'm not so sure whether this works well if a mapping is device memory or such. >> But that would still "hide" the remap-writable-type faults. Xenomai will tell me anyway when there was a page fault while a real time thread had the CPU. My idea was having a tool to check before the applications enters the critical phase. >>> I fully understand that my use case is a corner case and anything but mainline. >>> While developing my debug tool I thought that improving the pagemap interface >>> might help others too. >> >> I'm fine with this (can be a helpful debugging tool for some other cases >> as well, and IIRC we don't have another interface to introspect this), >> as long as we properly document the corner case that there could still >> be writefaults on some architectures when the page would not be >> accessed/dirty yet. Cool. :) > > [and I just recall, there are some other corner cases. For example, > pages in a shadow stack can be pte_write(), but they can only be written > by HW indirectly when modifying the stack, and ordinary write access > would still fault] Yeah, I noticed this while browsing through various pte_write() implementations. That's a tradeoff I can live with. Thanks, //richard