On Thu, Sep 17, 2020 at 12:38 PM Jason Gunthorpe <jgg@xxxxxxxx> wrote: > > Looking for awhile, this now looks reasonable and > doable. page_maybe_dma_pinned() was created for exactly this kind of > case. > > I've attached a dumb sketch for the pte level (surely wrong! I have > never looked at this part of the mm before!) at the end of this > message. This looks conceptually fine to me. But as mentioned, I think I'd be even happier if we added a "thsi vma has seen a page pin event" flag to the vma flags, and didn't rely _just_ on the page_maybe_dma_pinned() check, which migth be triggered by those fork-happy loads. Side note: I wonder if that COW mapping check could be entirely within that vm_normal_page() path. Because how could a non-normal page be a COW page and not already write-protected? But that's a separate issue, it's just how your patch makes that odd case more obvious. Linus