From: Hyesoo Yu <hyesoo.yu@samsung.com>
To: John Hubbard <jhubbard@nvidia.com>
Cc: David Hildenbrand <david@redhat.com>,
Jaewon Kim <jaewon31.kim@gmail.com>,
zhaoyang.huang@unisoc.com, surenb@google.com, linux-mm@kvack.org
Subject: Re: [RFC] pin_user_pages_fast failure count increased
Date: Thu, 22 May 2025 18:27:55 +0900 [thread overview]
Message-ID: <20250522092755.GA3277597@tiffany> (raw)
In-Reply-To: <2aa1cafb-bb9a-4540-9552-7f56bf1fb911@nvidia.com>
[-- Attachment #1: Type: text/plain, Size: 2174 bytes --]
On Mon, Apr 28, 2025 at 02:12:57PM -0700, John Hubbard wrote:
> On 4/28/25 1:56 PM, David Hildenbrand wrote:
> > On 28.04.25 22:14, John Hubbard wrote:
> > > On 4/28/25 8:17 AM, Jaewon Kim wrote:
> > > > Hi
> > > >
> > > > If pin_user_pages_fast does not pin all the requested number of pages,
> > > > then drivers calling to pin_user_pages_fast should retry until the gup
> > > > pins all?
> > > >
> > >
> > > Approaches vary, for handling partial success of pin_user_pages().
> > >
> > > * Many drivers unpin everything and either bail out entirely, or retry
> > > pinning the entire original range.
> >
> > Hm, unpinning + trying to repin the entire range can easily result in an
> > endless loop on persistent errors IIRC?
> >
>
> I vaguely recall a limited number of retries, yes.
>
> thanks,
> --
> John Hubbard
>
>
Hi,
I'd like to report a potential issue introduced by a recent change in
1aaf8c122918 mm: gup: fix infinite loop within __get_longterm_locked
Previously, the call to migrate_longterm_unpinnable_folio() was guarded by
the collected variable. This meant that if a CMA page was temporarily held
in the pagevec and failed LRU isolation, it wouldn't be added to the movable_page_list,
but the collected counter would still be incremented.
As a result, migrate_longterm_unpinnable_folio() would return -EAGAIN,
and the process would be retried until migration of the CMA page succeeded.
However, in the recent patch merged into mainline, the logic now only checks
whether movable_page_list is empty, and no longer relies on the collected count.
This can cause CMA pages that fail isolation to bypass retry logic and remain pinned.
Effectively,long-term pinning is now possible for CMA pages — something that previously
would have been avoided through repeated attempts.
We've observed this behavior in practice, which has led to issues such as CMA allocation
failures under memory pressure. This may indicate a regression in the logic that prevents
pinning of unmovable CMA pages.
I believe this warrants further discussion or possibly a fix to restore the intended retry
behavior for pages that fail LRU isolation.
Thanks,
Hyesoo Yu.
[-- Attachment #2: Type: text/plain, Size: 0 bytes --]
prev parent reply other threads:[~2025-05-22 9:29 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-04-28 15:17 Jaewon Kim
2025-04-28 15:21 ` David Hildenbrand
2025-04-28 20:14 ` John Hubbard
2025-04-28 20:56 ` David Hildenbrand
2025-04-28 21:12 ` John Hubbard
[not found] ` <CGME20250522092944epcas2p1ca46168564555aad6d9880bda26ec8de@epcas2p1.samsung.com>
2025-05-22 9:27 ` Hyesoo Yu [this message]
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=20250522092755.GA3277597@tiffany \
--to=hyesoo.yu@samsung.com \
--cc=david@redhat.com \
--cc=jaewon31.kim@gmail.com \
--cc=jhubbard@nvidia.com \
--cc=linux-mm@kvack.org \
--cc=surenb@google.com \
--cc=zhaoyang.huang@unisoc.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox