From: Jason Gunthorpe <jgg@ziepe.ca>
To: Pavel Tatashin <pasha.tatashin@soleen.com>
Cc: LKML <linux-kernel@vger.kernel.org>,
linux-mm <linux-mm@kvack.org>,
Andrew Morton <akpm@linux-foundation.org>,
Vlastimil Babka <vbabka@suse.cz>, Michal Hocko <mhocko@suse.com>,
David Hildenbrand <david@redhat.com>,
Oscar Salvador <osalvador@suse.de>,
Dan Williams <dan.j.williams@intel.com>,
Sasha Levin <sashal@kernel.org>,
Tyler Hicks <tyhicks@linux.microsoft.com>,
Joonsoo Kim <iamjoonsoo.kim@lge.com>,
mike.kravetz@oracle.com, Steven Rostedt <rostedt@goodmis.org>,
Ingo Molnar <mingo@redhat.com>,
Peter Zijlstra <peterz@infradead.org>,
Mel Gorman <mgorman@suse.de>,
Matthew Wilcox <willy@infradead.org>,
David Rientjes <rientjes@google.com>,
John Hubbard <jhubbard@nvidia.com>,
Linux Doc Mailing List <linux-doc@vger.kernel.org>
Subject: Re: [PATCH v3 5/6] mm/gup: migrate pinned pages out of movable zone
Date: Fri, 11 Dec 2020 16:46:00 -0400 [thread overview]
Message-ID: <20201211204600.GD5487@ziepe.ca> (raw)
In-Reply-To: <CA+CK2bDPR8vH+H6cqBn=RTXRCp5kv3ExNPD8DHB09vVWLc3YmA@mail.gmail.com>
On Fri, Dec 11, 2020 at 03:40:57PM -0500, Pavel Tatashin wrote:
> On Fri, Dec 11, 2020 at 3:23 PM Jason Gunthorpe <jgg@ziepe.ca> wrote:
> >
> > On Fri, Dec 11, 2020 at 03:21:39PM -0500, Pavel Tatashin wrote:
> > > @@ -1593,7 +1592,7 @@ static long check_and_migrate_cma_pages(struct mm_struct *mm,
> > > }
> > >
> > > if (!isolate_lru_page(head)) {
> > > - list_add_tail(&head->lru, &cma_page_list);
> > > + list_add_tail(&head->lru, &movable_page_list);
> > > mod_node_page_state(page_pgdat(head),
> > > NR_ISOLATED_ANON +
> > > page_is_file_lru(head),
> > > @@ -1605,7 +1604,7 @@ static long check_and_migrate_cma_pages(struct mm_struct *mm,
> > > i += step;
> > > }
> > >
> > > - if (!list_empty(&cma_page_list)) {
> > > + if (!list_empty(&movable_page_list)) {
> >
> > You didn't answer my earlier question, is it OK that ZONE_MOVABLE
> > pages leak out here if ioslate_lru_page() fails but the
> > moval_page_list is empty?
> >
> > I think the answer is no, right?
> In my opinion it is OK. We are doing our best to not pin movable
> pages, but if isolate_lru_page() fails because pages are currently
> locked by someone else, we will end up long-term pinning them.
> See comment in this patch:
> + * 1. Pinned pages: (long-term) pinning of movable pages is avoided
> + * when pages are pinned and faulted, but it is still possible that
> + * address space already has pages in ZONE_MOVABLE at the time when
> + * pages are pinned (i.e. user has touches that memory before
> + * pinning). In such case we try to migrate them to a different zone,
> + * but if migration fails the pages can still end-up pinned in
> + * ZONE_MOVABLE. In such case, memory offlining might retry a long
> + * time and will only succeed once user application unpins pages.
It is not "retry a long time" it is "might never complete" because
userspace will hold the DMA pin indefinitely.
Confused what the point of all this is then ??
I thought to goal here is to make memory unplug reliable, if you leave
a hole like this then any hostile userspace can block it forever.
Jason
next prev parent reply other threads:[~2020-12-11 21:40 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-12-11 20:21 [PATCH v3 0/6] prohibit pinning pages in ZONE_MOVABLE Pavel Tatashin
2020-12-11 20:21 ` [PATCH v3 1/6] mm/gup: don't pin migrated cma pages in movable zone Pavel Tatashin
2020-12-11 20:21 ` [PATCH v3 2/6] mm cma: rename PF_MEMALLOC_NOCMA to PF_MEMALLOC_PIN Pavel Tatashin
2020-12-14 14:03 ` Michal Hocko
2020-12-15 4:37 ` Pavel Tatashin
2020-12-11 20:21 ` [PATCH v3 3/6] mm: apply per-task gfp constraints in fast path Pavel Tatashin
2020-12-14 14:09 ` Michal Hocko
2020-12-15 5:20 ` Pavel Tatashin
2020-12-15 8:25 ` Michal Hocko
2020-12-15 17:35 ` Pavel Tatashin
2020-12-11 20:21 ` [PATCH v3 4/6] mm: honor PF_MEMALLOC_PIN for all movable pages Pavel Tatashin
2020-12-14 14:17 ` Michal Hocko
2020-12-15 5:24 ` Pavel Tatashin
2020-12-15 8:27 ` Michal Hocko
2020-12-15 17:28 ` Pavel Tatashin
2020-12-11 20:21 ` [PATCH v3 5/6] mm/gup: migrate pinned pages out of movable zone Pavel Tatashin
2020-12-11 20:23 ` Jason Gunthorpe
2020-12-11 20:40 ` Pavel Tatashin
2020-12-11 20:46 ` Jason Gunthorpe [this message]
2020-12-11 21:09 ` Pavel Tatashin
2020-12-11 21:29 ` David Hildenbrand
2020-12-11 21:35 ` Pavel Tatashin
2020-12-11 21:53 ` David Hildenbrand
2020-12-11 23:00 ` Pavel Tatashin
2020-12-12 0:07 ` John Hubbard
2020-12-11 23:50 ` Jason Gunthorpe
2020-12-12 7:29 ` David Hildenbrand
2020-12-14 13:36 ` Jason Gunthorpe
2020-12-14 14:21 ` David Hildenbrand
2020-12-14 14:30 ` Michal Hocko
2020-12-14 14:19 ` Michal Hocko
2020-12-11 20:21 ` [PATCH v3 6/6] memory-hotplug.rst: add a note about ZONE_MOVABLE and page pinning Pavel Tatashin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20201211204600.GD5487@ziepe.ca \
--to=jgg@ziepe.ca \
--cc=akpm@linux-foundation.org \
--cc=dan.j.williams@intel.com \
--cc=david@redhat.com \
--cc=iamjoonsoo.kim@lge.com \
--cc=jhubbard@nvidia.com \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mgorman@suse.de \
--cc=mhocko@suse.com \
--cc=mike.kravetz@oracle.com \
--cc=mingo@redhat.com \
--cc=osalvador@suse.de \
--cc=pasha.tatashin@soleen.com \
--cc=peterz@infradead.org \
--cc=rientjes@google.com \
--cc=rostedt@goodmis.org \
--cc=sashal@kernel.org \
--cc=tyhicks@linux.microsoft.com \
--cc=vbabka@suse.cz \
--cc=willy@infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.