From: Jason Gunthorpe <jgg@nvidia.com>
To: David Hildenbrand <david@redhat.com>
Cc: Peter Xu <peterx@redhat.com>, Jinjiang Tu <tujinjiang@huawei.com>,
akpm@linux-foundation.org, lorenzo.stoakes@oracle.com,
Liam.Howlett@oracle.com, vbabka@suse.cz, rppt@kernel.org,
surenb@google.com, mhocko@suse.com, linux-mm@kvack.org,
wangkefeng.wang@huawei.com
Subject: Re: [PATCH] mm: fix COW mapping handing in generic_access_phys
Date: Wed, 28 May 2025 14:59:15 -0300 [thread overview]
Message-ID: <20250528175915.GB61950@nvidia.com> (raw)
In-Reply-To: <20250528174754.GA61950@nvidia.com>
On Wed, May 28, 2025 at 02:47:54PM -0300, Jason Gunthorpe wrote:
> On Wed, May 28, 2025 at 07:32:59PM +0200, David Hildenbrand wrote:
> > On 28.05.25 18:29, Jason Gunthorpe wrote:
> > > On Wed, May 28, 2025 at 12:06:07PM -0400, Peter Xu wrote:
> > > > #define VM_PFNMAP 0x00000400 /* Page-ranges managed without "struct page", just pure PFN */
> > > >
> > > > I'm not confident to blame any driver yet to have those special cases for
> > > > VM_PFNMAP, because it only says "managed without struct page", it didn't
> > > > say "it must not contain struct page".. Hence it hints the core mm "please
> > > > do not manage these mappings with struct page at all". Still sounds fair
> > > > contract, even if not ideal.
> > >
> > > I think it is pretty clear, if a VMA has VM_PFNMAP then nothing must
> > > ever try to obtain a struct page from any PTEs in it, for any reason,
> > > even if things in it might have a struct page. In practice it means
> > > nothing can call vm_normal_page() on a VM_PFNMAP.
> >
> > No, not until we remove any COW mappings of VM_PFNMAP.
>
> I stand by the statement, the COW mapping thing is broken. Just
> because it is wrong doesn't mean it is allowed to call
> vm_normal_page() on VM_PFNMAP.
I guess I got this backwards in my memory, the vm_normal_page() thing
is specifically to fix the COW nastyness on VM_PFNMAP.
So it is OK to call vm_normal_page() on both kinds of VMAs and it will
return NULL if you are not allowed to touch the struct page.
This is still what GUP should be doing, vm_normal_page() and if no
struct page comes back then failure. It should never try to get a
struct page some other way.
Yes, GUP fast will be inconsistent with GUP slow on non-special
arches, but that is unfixable without taking a performance hit.
Jason
next prev parent reply other threads:[~2025-05-28 17:59 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-05-28 1:56 [PATCH] mm: fix COW mapping handing in generic_access_phys Jinjiang Tu
2025-05-28 8:59 ` David Hildenbrand
2025-05-28 9:59 ` David Hildenbrand
2025-05-28 12:14 ` Jinjiang Tu
2025-05-28 14:54 ` Peter Xu
2025-05-28 15:02 ` David Hildenbrand
2025-05-28 15:25 ` Peter Xu
2025-05-28 15:29 ` David Hildenbrand
2025-05-28 16:06 ` Peter Xu
2025-05-28 16:29 ` Jason Gunthorpe
2025-05-28 17:14 ` Peter Xu
2025-05-28 17:34 ` Jason Gunthorpe
2025-05-28 17:37 ` David Hildenbrand
2025-05-28 17:32 ` David Hildenbrand
2025-05-28 17:47 ` Jason Gunthorpe
2025-05-28 17:59 ` Jason Gunthorpe [this message]
2025-05-28 18:03 ` David Hildenbrand
2025-05-28 18:00 ` David Hildenbrand
2025-05-28 18:15 ` Jason Gunthorpe
2025-05-28 18:22 ` David Hildenbrand
2025-05-28 18:29 ` Jason Gunthorpe
2025-05-30 10:04 ` David Hildenbrand
2025-05-28 12:13 ` Jinjiang Tu
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=20250528175915.GB61950@nvidia.com \
--to=jgg@nvidia.com \
--cc=Liam.Howlett@oracle.com \
--cc=akpm@linux-foundation.org \
--cc=david@redhat.com \
--cc=linux-mm@kvack.org \
--cc=lorenzo.stoakes@oracle.com \
--cc=mhocko@suse.com \
--cc=peterx@redhat.com \
--cc=rppt@kernel.org \
--cc=surenb@google.com \
--cc=tujinjiang@huawei.com \
--cc=vbabka@suse.cz \
--cc=wangkefeng.wang@huawei.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 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.