On Thu, Sep 17, 2020 at 12:38 PM Jason Gunthorpe <[email protected]> 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