On Tue, Jan 19, 2021 at 1:47 PM Jason Gunthorpe <jgg@xxxxxxxx> wrote: > > On Tue, Jan 19, 2021 at 01:34:26PM -0500, Pavel Tatashin wrote: > > On Tue, Jan 19, 2021 at 1:30 PM Jason Gunthorpe <jgg@xxxxxxxx> wrote: > > > > > > On Mon, Jan 18, 2021 at 11:39:14PM -0500, Pavel Tatashin wrote: > > > > Zero page should not be used for long term pinned pages. Once pages > > > > are pinned their physical addresses cannot changed until they are unpinned. > > > > > > > > Guarantee to always return real pages when they are pinned by adding > > > > FOLL_WRITE. > > > > > > > > Signed-off-by: Pavel Tatashin <pasha.tatashin@xxxxxxxxxx> > > > > mm/gup.c | 10 +++++++++- > > > > 1 file changed, 9 insertions(+), 1 deletion(-) > > > > > > No, this will definitely break things > > > > What will break > > Things assuming GUP doesn't break COW, making all GUP WRITE was > already tried and revered for some other reason > > > > Why does the zero page have to be movable? > > > > It is not even about being movable, we can't cow pinned pages returned > > by GUP call, how can we use zero page for that? > > The zero page is always zero, it is never written to. What does cow > matter? Hi Jason, I was thinking about a use case where userland would pin an address without FOLL_WRITE, because the PTE for that address is not going to be writable, but some device via DMA will write to it. Now, if we got a zero page we have a problem... If this usecase is not valid then the fix for movable zero page is make the zero page always come from a non-movable zone so we do not need to isolate it during migration, and so the memory can be offlined later. Pasha > > Jason