On Sep 29, 2022, at 11:29 AM, Chih-En Lin <shiyn.lin@xxxxxxxxx> wrote: > That case could be caught in copy_pte_range(): in case we'd have to allocate >> a page via page_copy_prealloc(), we'd have to fall back to the ordinary >> "separate page table for the child" way of doing things. >> >> But that looks doable to me. > > Sounds good. :) Chih-En, I admit I did not fully read the entire correspondence and got deep into all the details. I would note, however, that there are several additional components that I did not see (and perhaps missed) in your patches. Basically, there are many page-table manipulations that are done not through the page-fault handler or reclamation mechanisms. I did not see any of them being addressed. So if/when you send a new version, please have a look at mprotect(), madvise(), soft-dirty, userfaultfd and THP. In these cases, I presume, you would have to COW-break (aka COW-unshare) the page-tables.