Let's introduce MADV_POPULATE with the following semantics
1. MADV_POPULATED does not work on PROT_NONE and special VMAs. It
works
on everything else.
2. Errors during MADV_POPULATED (especially OOM) are reported. If we
hit
hardware errors on pages, ignore them - nothing we really can or
should do.
3. On errors during MADV_POPULATED, some memory might have been
populated. Callers have to clean up if they care.
4. Concurrent changes to the virtual memory layour are tolerated - we
^t
process each and every PFN only once, though.
5. If MADV_POPULATE succeeds, all memory in the range can be accessed
without SIGBUS. (of course, not if user space changed mappings in
the
meantime or KSM kicked in on anonymous memory).
You are talking both about MADV_POPULATE and MADV_POPULATED here.
Eike