All of lore.kernel.org
 help / color / mirror / Atom feed
From: "David Hildenbrand (Arm)" <david@kernel.org>
To: "Lorenzo Stoakes (ARM)" <ljs@kernel.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	"Liam R. Howlett" <liam@infradead.org>,
	Vlastimil Babka <vbabka@kernel.org>, Jann Horn <jannh@google.com>,
	Pedro Falcato <pfalcato@suse.de>, Mike Rapoport <rppt@kernel.org>,
	Suren Baghdasaryan <surenb@google.com>,
	Michal Hocko <mhocko@suse.com>, Jonathan Corbet <corbet@lwn.net>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Dennis Dalessandro <dennis.dalessandro@cornelisnetworks.com>,
	Jason Gunthorpe <jgg@ziepe.ca>, Leon Romanovsky <leon@kernel.org>,
	Paul Moore <paul@paul-moore.com>,
	Stephen Smalley <stephen.smalley.work@gmail.com>,
	Jaroslav Kysela <perex@perex.cz>, Takashi Iwai <tiwai@suse.com>,
	Alexei Starovoitov <ast@kernel.org>,
	Daniel Borkmann <daniel@iogearbox.net>,
	Andrii Nakryiko <andrii@kernel.org>,
	Eduard Zingerman <eddyz87@gmail.com>,
	Kumar Kartikeya Dwivedi <memxor@gmail.com>,
	Zi Yan <ziy@nvidia.com>,
	Baolin Wang <baolin.wang@linux.alibaba.com>,
	Nico Pache <nico.pache@linux.dev>,
	Ryan Roberts <ryan.roberts@arm.com>, Dev Jain <dev.jain@arm.com>,
	Barry Song <baohua@kernel.org>, Lance Yang <lance.yang@linux.dev>,
	Usama Arif <usama.arif@linux.dev>,
	Kiryl Shutsemau <kas@kernel.org>,
	Doug Gilbert <dgilbert@interlog.com>,
	"James E.J. Bottomley" <James.Bottomley@HansenPartnership.com>,
	"Martin K. Petersen" <mkp@kernel.org>,
	Jaya Kumar <jayalk@intworks.biz>, Simona Vetter <simona@ffwll.ch>,
	Helge Deller <deller@gmx.de>, Sebastian Reichel <sre@kernel.org>,
	John Hubbard <jhubbard@nvidia.com>, Peter Xu <peterx@redhat.com>,
	Masami Hiramatsu <mhiramat@kernel.org>,
	Oleg Nesterov <oleg@redhat.com>,
	Peter Zijlstra <peterz@infradead.org>,
	Thomas Gleixner <tglx@kernel.org>, Ingo Molnar <mingo@redhat.com>,
	Borislav Petkov <bp@alien8.de>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	x86@kernel.org, Arnaldo Carvalho de Melo <acme@kernel.org>,
	Namhyung Kim <namhyung@kernel.org>,
	Mark Rutland <mark.rutland@arm.com>,
	Rik van Riel <riel@surriel.com>, Harry Yoo <harry@kernel.org>,
	Juri Lelli <juri.lelli@redhat.com>,
	Vincent Guittot <vincent.guittot@linaro.org>,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	Maxime Ripard <mripard@kernel.org>,
	Thomas Zimmermann <tzimmermann@suse.de>,
	David Airlie <airlied@gmail.com>, Will Deacon <will@kernel.org>,
	"Aneesh Kumar K.V" <aneesh.kumar@kernel.org>,
	Nick Piggin <npiggin@gmail.com>, Arnd Bergmann <arnd@arndb.de>,
	Muchun Song <muchun.song@linux.dev>,
	Oscar Salvador <osalvador@suse.de>,
	"Matthew Wilcox (Oracle)" <willy@infradead.org>,
	Jan Kara <jack@suse.cz>, Marc Zyngier <maz@kernel.org>,
	Oliver Upton <oupton@kernel.org>,
	Catalin Marinas <catalin.marinas@arm.com>,
	Madhavan Srinivasan <maddy@linux.ibm.com>,
	Anup Patel <anup@brainfault.org>, Paul Walmsley <pjw@kernel.org>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Albert Ou <aou@eecs.berkeley.edu>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Janosch Frank <frankja@linux.ibm.com>,
	Claudio Imbrenda <imbrenda@linux.ibm.com>,
	Alexander Gordeev <agordeev@linux.ibm.com>,
	Gerald Schaefer <gerald.schaefer@linux.ibm.com>,
	Heiko Carstens <hca@linux.ibm.com>,
	Vasily Gorbik <gor@linux.ibm.com>,
	"David S. Miller" <davem@davemloft.net>,
	Andreas Larsson <andreas@gaisler.com>,
	Alexander Viro <viro@zeniv.linux.org.uk>,
	Christian Brauner <brauner@kernel.org>,
	Matthew Brost <matthew.brost@intel.com>,
	Joshua Hahn <joshua.hahnjy@gmail.com>,
	Rakie Kim <rakie.kim@sk.com>, Byungchul Park <byungchul@sk.com>,
	Gregory Price <gourry@gourry.net>,
	Ying Huang <ying.huang@linux.alibaba.com>,
	Alistair Popple <apopple@nvidia.com>,
	Chris Li <chrisl@kernel.org>, Kairui Song <kasong@tencent.com>,
	Kemeng Shi <shikemeng@huaweicloud.com>,
	Nhat Pham <nphamcs@gmail.com>, Baoquan He <baoquan.he@linux.dev>,
	Youngjun Park <youngjun.park@lge.com>,
	Johannes Weiner <hannes@cmpxchg.org>,
	Qi Zheng <qi.zheng@linux.dev>,
	Shakeel Butt <shakeel.butt@linux.dev>,
	Axel Rasmussen <axelrasmussen@google.com>,
	Yuanchu Xie <yuanchu@google.com>, Wei Xu <weixugc@google.com>,
	Chengming Zhou <chengming.zhou@linux.dev>,
	Michal Hocko <mhocko@kernel.org>,
	Miklos Szeredi <miklos@szeredi.hu>, Xu Xin <xu.xin@linux.dev>
Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org,
	linux-doc@vger.kernel.org, linux-usb@vger.kernel.org,
	linux-rdma@vger.kernel.org, selinux@vger.kernel.org,
	linux-sound@vger.kernel.org, bpf@vger.kernel.org,
	linux-scsi@vger.kernel.org, linux-fbdev@vger.kernel.org,
	dri-devel@lists.freedesktop.org,
	linux-trace-kernel@vger.kernel.org,
	linux-perf-users@vger.kernel.org, linux-arch@vger.kernel.org,
	linux-fsdevel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev,
	linuxppc-dev@lists.ozlabs.org, kvm@vger.kernel.org,
	kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org,
	linux-s390@vger.kernel.org, sparclinux@vger.kernel.org,
	fuse-devel@lists.linux.dev
Subject: Re: [PATCH v3 40/40] mm/vma: introduce and use vma[_flags]_can_gup()
Date: Fri, 2 Oct 2026 09:48:14 +0200	[thread overview]
Message-ID: <202033a0-ea65-44de-8119-689e0df0b78e@kernel.org> (raw)
In-Reply-To: <20260917-b4-mmap-prepare-vma-flag-sanify-v3-40-4583d8a23bca@kernel.org>

On 9/17/26 18:22, Lorenzo Stoakes (ARM) wrote:
> GUP cannot be used for VMAs which set VMA_IO_BIT - because memory-mapped
> I/O must not be accessed on the user's behalf - or VMA_PFNMAP_BIT - because
> PFN maps have no folios which the kernel is permitted to access.

The interesting thing will be: what if we want to allow gup for COW'ed pages in
PFNMAP. We discussed that already, and it might be a bit harder to squeeze into
the new vma[_flags]_can_gup() checks that are also used elsewhere now.

Because GUP itself mostly already handles the VMA_PFNMAP_BIT, just has to be
taught about vm_normal_page() etc *properly* on all levels. I even have that on
my todo list.

Updating vma[_flags]_can_gup() won't be enough in that case (ignore
VMA_PFNMAP_BIT in cow-mappings), because suddenly we would unlock other code
paths that now depend on this helper.

Also, there is the secretmem thing I comment on below. I think this also belongs
in this helper but other unrelated users don't really want it.

Which makes me wonder whether vma[_flags]_can_gup() is actually the right
abstraction to use in some other cases that you convert below. For the actual
GUP users I think it's the right thing to do. But not for things that are
somewhat related to GUP (but actually different) I think you much rather want a
separate helper.

Long story short: I wonder whether vma[_flags]_can_gup() is the right
abstraction, especially for users that don't actually *use* gup but just want
slightly similar semantics (no VM_IO|VM_PFNMAP).

> 
> Rather than keeping these checks open-coded, abstract them to
> vma_flags_can_gup() and its VMA wrapper vma_can_gup().
> 
> A number of other places make the same check to decide whether a mapping
> can be populated or accessed as GUP would, so update those too.
> 
> While here, drop a reference to 'special' and replace a use of the
> deprecated VMA flags API in vma_dump_size().
> 
> No functional change intended.
> 
> Signed-off-by: Lorenzo Stoakes (ARM) <ljs@kernel.org>
> ---
>  fs/coredump.c      |  4 ++--
>  include/linux/mm.h | 29 +++++++++++++++++++++++++++++
>  mm/gup.c           |  7 +++----
>  mm/hmm.c           |  3 +--
>  mm/memory.c        | 14 ++++++++------
>  mm/mempolicy.c     |  3 ++-
>  6 files changed, 45 insertions(+), 15 deletions(-)
> 
> diff --git a/fs/coredump.c b/fs/coredump.c
> index fb21fb6703dd..9f729c594c47 100644
> --- a/fs/coredump.c
> +++ b/fs/coredump.c
> @@ -1616,8 +1616,8 @@ static unsigned long vma_dump_size(struct vm_area_struct *vma,
>  		return 0;
>  	}
>  
> -	/* Do not dump I/O mapped devices or special mappings */
> -	if (vma->vm_flags & VM_IO)
> +	/* Do not dump memory-mapped I/O, which may have side effects on read. */
> +	if (vma_test(vma, VMA_IO_BIT))
>  		return 0;
>  

In the end, we use GUP to lookup the pages through get_dump_page().

I think we should just use the gup helper instead?

>  	/* By default, dump shared memory if mapped from an anonymous file. */
> diff --git a/include/linux/mm.h b/include/linux/mm.h
> index 5860a3b4dba9..1249e04d7b98 100644
> --- a/include/linux/mm.h
> +++ b/include/linux/mm.h
> @@ -1777,6 +1777,35 @@ static inline bool vma_is_persistent(const struct vm_area_struct *vma)
>  	return vma_flags_is_persistent(&vma->flags);
>  }
>  
> +/**
> + * vma_flags_can_gup() - Do the specified VMA flags permit GUP to access the
> + * mapping's pages?
> + * @flags: The VMA flags to test.
> + *
> + * GUP cannot obtain pages from a PFN map (VMA_PFNMAP_BIT), which may have no
> + * struct pages behind it, and must not provide access to memory-mapped I/O
> + * (VMA_IO_BIT).
> + *
> + * Returns: true if GUP may access pages from the mapping, otherwise false.
> + */
> +static inline bool vma_flags_can_gup(const vma_flags_t *flags)
> +{
> +	return !vma_flags_test_any(flags, VMA_IO_BIT, VMA_PFNMAP_BIT);
> +}

This only covers some things though. See check_vma_flags(): vma_is_secretmem()
is another case we universally reject and that is just simply incompatible. In
the future, it be an address space flag which we can have from the VMA. So we'd
want a vma_can_gup() helper but not necessarily a vma_flags_can_gup() helper.

I think this belongs into the vma_can_gup() helper.

Also, we should better clarify in the doc that other GUP flags will decide
whether GUP is actually allowed. the semantics are a bit vague right now "Do the
specified VMA flags permit GUP to access".

[...]

> diff --git a/mm/hmm.c b/mm/hmm.c
> index 2f1e98c6b644..e9569b82a1f0 100644
> --- a/mm/hmm.c
> +++ b/mm/hmm.c
> @@ -595,8 +595,7 @@ static int hmm_vma_walk_test(unsigned long start, unsigned long end,
>  	struct hmm_range *range = hmm_vma_walk->range;
>  	struct vm_area_struct *vma = walk->vma;
>  
> -	if (!(vma->vm_flags & (VM_IO | VM_PFNMAP)) &&
> -	    vma->vm_flags & VM_READ)
> +	if (vma_can_gup(vma) && vma_test(vma, VMA_READ_BIT))
>  		return 0;

Where do we end up using gup? I don't think we do, because hmm essentially
implements an alternative to KVM-style GUP-fast usage.

So likely this wants a different helper.

>  
>  	/*
> diff --git a/mm/memory.c b/mm/memory.c
> index 6c011979401a..338fce99e711 100644
> --- a/mm/memory.c
> +++ b/mm/memory.c
> @@ -2417,11 +2417,11 @@ static bool vm_mixed_zeropage_allowed(struct vm_area_struct *vma)
>  	 * be problematic as soon as the zeropage gets replaced by a different
>  	 * page due to vma->vm_ops->pfn_mkwrite, because what's mapped would
>  	 * now differ to what GUP looked up. FSDAX is incompatible to
> -	 * FOLL_LONGTERM and VM_IO is incompatible to GUP completely (see
> -	 * check_vma_flags).
> +	 * FOLL_LONGTERM and memory-mapped I/O is incompatible to GUP completely
> +	 * (see vma_can_gup()).
>  	 */
>  	return vma->vm_ops && vma->vm_ops->pfn_mkwrite &&
> -	       (vma_is_fsdax(vma) || vma->vm_flags & VM_IO);
> +	       (vma_is_fsdax(vma) || vma_test(vma, VMA_IO_BIT));

This looks a bit misplaces in this patch. Also, not spelled out in the patch
description?

[...]

>  retry:
>  	pgdp = pgd_offset(mm, address);
> @@ -7316,8 +7317,9 @@ static int __access_remote_vm(struct mm_struct *mm, unsigned long addr,
>  			}
>  
>  			/*
> -			 * Check if this is a VM_IO | VM_PFNMAP VMA, which
> -			 * we can access using slightly different code.
> +			 * GUP failed, perhaps because this is a mapping it
> +			 * cannot handle (see vma_can_gup()) - such mappings may
> +			 * provide access via vm_ops->access() instead.
>  			 */
>  			bytes = 0;
>  #ifdef CONFIG_HAVE_IOREMAP_PROT
> diff --git a/mm/mempolicy.c b/mm/mempolicy.c
> index 044ffb4f4128..2fd759e348ca 100644
> --- a/mm/mempolicy.c
> +++ b/mm/mempolicy.c
> @@ -2013,7 +2013,8 @@ SYSCALL_DEFINE5(get_mempolicy, int __user *, policy,
>  
>  bool vma_migratable(struct vm_area_struct *vma)
>  {
> -	if (vma->vm_flags & (VM_IO | VM_PFNMAP))
> +	/* Pages which GUP cannot obtain cannot be migrated either. */
> +	if (!vma_can_gup(vma))
>  		return false;

It's slightly confusing, because we don't really use GUP (except in one scenario
for lookup_node).

-- 
Cheers,

David

WARNING: multiple messages have this Message-ID (diff)
From: "David Hildenbrand (Arm)" <david@kernel.org>
To: "Lorenzo Stoakes (ARM)" <ljs@kernel.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	"Liam R. Howlett" <liam@infradead.org>,
	Vlastimil Babka <vbabka@kernel.org>, Jann Horn <jannh@google.com>,
	Pedro Falcato <pfalcato@suse.de>, Mike Rapoport <rppt@kernel.org>,
	Suren Baghdasaryan <surenb@google.com>,
	Michal Hocko <mhocko@suse.com>, Jonathan Corbet <corbet@lwn.net>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Dennis Dalessandro <dennis.dalessandro@cornelisnetworks.com>,
	Jason Gunthorpe <jgg@ziepe.ca>, Leon Romanovsky <leon@kernel.org>,
	Paul Moore <paul@paul-moore.com>,
	Stephen Smalley <stephen.smalley.work@gmail.com>,
	Jaroslav Kysela <perex@perex.cz>, Takashi Iwai <tiwai@suse.com>,
	Alexei Starovoitov <ast@kernel.org>,
	Daniel Borkmann <daniel@iogearbox.net>,
	Andrii Nakryiko <andrii@kernel.org>,
	Eduard Zingerman <eddyz87@gmail.com>,
	Kumar Kartikeya Dwivedi <memxor@gmail.com>,
	Zi Yan <ziy@nvidia.com>,
	Baolin Wang <baolin.wang@linux.alibaba.com>,
	Nico Pache <nico.pache@linux.dev>,
	Ryan Roberts <ryan.roberts@arm.com>, Dev Jain <dev.jain@arm.com>,
	Barry Song <baohua@kernel.org>, Lance Yang <lance.yang@linux.dev>,
	Usama Arif <usama.arif@linux.dev>,
	Kiryl Shutsemau <kas@kernel.org>,
	Doug Gilbert <dgilbert@interlog.com>,
	"James E.J. Bottomley" <James.Bottomley@HansenPartnership.com>,
	"Martin K. Petersen" <mkp@kernel.org>,
	Jaya Kumar <jayalk@intworks.biz>, Simona Vetter <simona@ffwll.ch>,
	Helge Deller <deller@gmx.de>, Sebastian Reichel <sre@kernel.org>,
	John Hubbard <jhubbard@nvidia.com>, Peter Xu <peterx@redhat.com>,
	Masami Hiramatsu <mhiramat@kernel.org>,
	Oleg Nesterov <oleg@redhat.com>,
	Peter Zijlstra <peterz@infradead.org>,
	Thomas Gleixner <tglx@kernel.org>, Ingo Molnar <mingo@redhat.com>,
	Borislav Petkov <bp@alien8.de>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	x86@kernel.org, Arnaldo Carvalho de Melo <acme@kernel.org>,
	Namhyung Kim <namhyung@kernel.org>,
	Mark Rutland <mark.rutland@arm.com>,
	Rik van Riel <riel@surriel.com>, Harry Yoo <harry@kernel.org>,
	Juri Lelli <juri.lelli@redhat.com>,
	Vincent Guittot <vincent.guittot@linaro.org>,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	Maxime Ripard <mripard@kernel.org>,
	Thomas Zimmermann <tzimmermann@suse.de>,
	David Airlie <airlied@gmail.com>, Will Deacon <will@kernel.org>,
	"Aneesh Kumar K.V" <aneesh.kumar@kernel.org>,
	Nick Piggin <npiggin@gmail.com>, Arnd Bergmann <arnd@arndb.de>,
	Muchun Song <muchun.song@linux.dev>,
	Oscar Salvador <osalvador@suse.de>,
	"Matthew Wilcox (Oracle)" <willy@infradead.org>,
	Jan Kara <jack@suse.cz>, Marc Zyngier <maz@kernel.org>,
	Oliver Upton <oupton@kernel.org>,
	Catalin Marinas <catalin.marinas@arm.com>,
	Madhavan Srinivasan <maddy@linux.ibm.com>,
	Anup Patel <anup@brainfault.org>, Paul Walmsley <pjw@kernel.org>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Albert Ou <aou@eecs.berkeley.edu>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Janosch Frank <frankja@linux.ibm.com>,
	Claudio Imbrenda <imbrenda@linux.ibm.com>,
	Alexander Gordeev <agordeev@linux.ibm.com>,
	Gerald Schaefer <gerald.schaefer@linux.ibm.com>,
	Heiko Carstens <hca@linux.ibm.com>,
	Vasily Gorbik <gor@linux.ibm.com>,
	"David S. Miller" <davem@davemloft.net>,
	Andreas Larsson <andreas@gaisler.com>,
	Alexander Viro <viro@zeniv.linux.org.uk>,
	Christian Brauner <brauner@kernel.org>,
	Matthew Brost <matthew.brost@intel.com>,
	Joshua Hahn <joshua.hahnjy@gmail.com>,
	Rakie Kim <rakie.kim@sk.com>, Byungchul Park <byungchul@sk.com>,
	Gregory Price <gourry@gourry.net>,
	Ying Huang <ying.huang@linux.alibaba.com>,
	Alistair Popple <apopple@nvidia.com>,
	Chris Li <chrisl@kernel.org>, Kairui Song <kasong@tencent.com>,
	Kemeng Shi <shikemeng@huaweicloud.com>,
	Nhat Pham <nphamcs@gmail.com>, Baoquan He <baoquan.he@linux.dev>,
	Youngjun Park <youngjun.park@lge.com>,
	Johannes Weiner <hannes@cmpxchg.org>,
	Qi Zheng <qi.zheng@linux.dev>,
	Shakeel Butt <shakeel.butt@linux.dev>,
	Axel Rasmussen <axelrasmussen@google.com>,
	Yuanchu Xie <yuanchu@google.com>, Wei Xu <weixugc@google.com>,
	Chengming Zhou <chengming.zhou@linux.dev>,
	Michal Hocko <mhocko@kernel.org>,
	Miklos Szeredi <miklos@szeredi.hu>, Xu Xin <xu.xin@linux.dev>
Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org,
	linux-doc@vger.kernel.org, linux-usb@vger.kernel.org,
	linux-rdma@vger.kernel.org, selinux@vger.kernel.org,
	linux-sound@vger.kernel.org, bpf@vger.kernel.org,
	linux-scsi@vger.kernel.org, linux-fbdev@vger.kernel.org,
	dri-devel@lists.freedesktop.org,
	linux-trace-kernel@vger.kernel.org,
	linux-perf-users@vger.kernel.org, linux-arch@vger.kernel.org,
	linux-fsdevel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev,
	linuxppc-dev@lists.ozlabs.org, kvm@vger.kernel.org,
	kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org,
	linux-s390@vger.kernel.org, sparclinux@vger.kernel.org,
	fuse-devel@lists.linux.dev
Subject: Re: [PATCH v3 40/40] mm/vma: introduce and use vma[_flags]_can_gup()
Date: Fri, 2 Oct 2026 09:48:14 +0200	[thread overview]
Message-ID: <202033a0-ea65-44de-8119-689e0df0b78e@kernel.org> (raw)
In-Reply-To: <20260917-b4-mmap-prepare-vma-flag-sanify-v3-40-4583d8a23bca@kernel.org>

On 9/17/26 18:22, Lorenzo Stoakes (ARM) wrote:
> GUP cannot be used for VMAs which set VMA_IO_BIT - because memory-mapped
> I/O must not be accessed on the user's behalf - or VMA_PFNMAP_BIT - because
> PFN maps have no folios which the kernel is permitted to access.

The interesting thing will be: what if we want to allow gup for COW'ed pages in
PFNMAP. We discussed that already, and it might be a bit harder to squeeze into
the new vma[_flags]_can_gup() checks that are also used elsewhere now.

Because GUP itself mostly already handles the VMA_PFNMAP_BIT, just has to be
taught about vm_normal_page() etc *properly* on all levels. I even have that on
my todo list.

Updating vma[_flags]_can_gup() won't be enough in that case (ignore
VMA_PFNMAP_BIT in cow-mappings), because suddenly we would unlock other code
paths that now depend on this helper.

Also, there is the secretmem thing I comment on below. I think this also belongs
in this helper but other unrelated users don't really want it.

Which makes me wonder whether vma[_flags]_can_gup() is actually the right
abstraction to use in some other cases that you convert below. For the actual
GUP users I think it's the right thing to do. But not for things that are
somewhat related to GUP (but actually different) I think you much rather want a
separate helper.

Long story short: I wonder whether vma[_flags]_can_gup() is the right
abstraction, especially for users that don't actually *use* gup but just want
slightly similar semantics (no VM_IO|VM_PFNMAP).

> 
> Rather than keeping these checks open-coded, abstract them to
> vma_flags_can_gup() and its VMA wrapper vma_can_gup().
> 
> A number of other places make the same check to decide whether a mapping
> can be populated or accessed as GUP would, so update those too.
> 
> While here, drop a reference to 'special' and replace a use of the
> deprecated VMA flags API in vma_dump_size().
> 
> No functional change intended.
> 
> Signed-off-by: Lorenzo Stoakes (ARM) <ljs@kernel.org>
> ---
>  fs/coredump.c      |  4 ++--
>  include/linux/mm.h | 29 +++++++++++++++++++++++++++++
>  mm/gup.c           |  7 +++----
>  mm/hmm.c           |  3 +--
>  mm/memory.c        | 14 ++++++++------
>  mm/mempolicy.c     |  3 ++-
>  6 files changed, 45 insertions(+), 15 deletions(-)
> 
> diff --git a/fs/coredump.c b/fs/coredump.c
> index fb21fb6703dd..9f729c594c47 100644
> --- a/fs/coredump.c
> +++ b/fs/coredump.c
> @@ -1616,8 +1616,8 @@ static unsigned long vma_dump_size(struct vm_area_struct *vma,
>  		return 0;
>  	}
>  
> -	/* Do not dump I/O mapped devices or special mappings */
> -	if (vma->vm_flags & VM_IO)
> +	/* Do not dump memory-mapped I/O, which may have side effects on read. */
> +	if (vma_test(vma, VMA_IO_BIT))
>  		return 0;
>  

In the end, we use GUP to lookup the pages through get_dump_page().

I think we should just use the gup helper instead?

>  	/* By default, dump shared memory if mapped from an anonymous file. */
> diff --git a/include/linux/mm.h b/include/linux/mm.h
> index 5860a3b4dba9..1249e04d7b98 100644
> --- a/include/linux/mm.h
> +++ b/include/linux/mm.h
> @@ -1777,6 +1777,35 @@ static inline bool vma_is_persistent(const struct vm_area_struct *vma)
>  	return vma_flags_is_persistent(&vma->flags);
>  }
>  
> +/**
> + * vma_flags_can_gup() - Do the specified VMA flags permit GUP to access the
> + * mapping's pages?
> + * @flags: The VMA flags to test.
> + *
> + * GUP cannot obtain pages from a PFN map (VMA_PFNMAP_BIT), which may have no
> + * struct pages behind it, and must not provide access to memory-mapped I/O
> + * (VMA_IO_BIT).
> + *
> + * Returns: true if GUP may access pages from the mapping, otherwise false.
> + */
> +static inline bool vma_flags_can_gup(const vma_flags_t *flags)
> +{
> +	return !vma_flags_test_any(flags, VMA_IO_BIT, VMA_PFNMAP_BIT);
> +}

This only covers some things though. See check_vma_flags(): vma_is_secretmem()
is another case we universally reject and that is just simply incompatible. In
the future, it be an address space flag which we can have from the VMA. So we'd
want a vma_can_gup() helper but not necessarily a vma_flags_can_gup() helper.

I think this belongs into the vma_can_gup() helper.

Also, we should better clarify in the doc that other GUP flags will decide
whether GUP is actually allowed. the semantics are a bit vague right now "Do the
specified VMA flags permit GUP to access".

[...]

> diff --git a/mm/hmm.c b/mm/hmm.c
> index 2f1e98c6b644..e9569b82a1f0 100644
> --- a/mm/hmm.c
> +++ b/mm/hmm.c
> @@ -595,8 +595,7 @@ static int hmm_vma_walk_test(unsigned long start, unsigned long end,
>  	struct hmm_range *range = hmm_vma_walk->range;
>  	struct vm_area_struct *vma = walk->vma;
>  
> -	if (!(vma->vm_flags & (VM_IO | VM_PFNMAP)) &&
> -	    vma->vm_flags & VM_READ)
> +	if (vma_can_gup(vma) && vma_test(vma, VMA_READ_BIT))
>  		return 0;

Where do we end up using gup? I don't think we do, because hmm essentially
implements an alternative to KVM-style GUP-fast usage.

So likely this wants a different helper.

>  
>  	/*
> diff --git a/mm/memory.c b/mm/memory.c
> index 6c011979401a..338fce99e711 100644
> --- a/mm/memory.c
> +++ b/mm/memory.c
> @@ -2417,11 +2417,11 @@ static bool vm_mixed_zeropage_allowed(struct vm_area_struct *vma)
>  	 * be problematic as soon as the zeropage gets replaced by a different
>  	 * page due to vma->vm_ops->pfn_mkwrite, because what's mapped would
>  	 * now differ to what GUP looked up. FSDAX is incompatible to
> -	 * FOLL_LONGTERM and VM_IO is incompatible to GUP completely (see
> -	 * check_vma_flags).
> +	 * FOLL_LONGTERM and memory-mapped I/O is incompatible to GUP completely
> +	 * (see vma_can_gup()).
>  	 */
>  	return vma->vm_ops && vma->vm_ops->pfn_mkwrite &&
> -	       (vma_is_fsdax(vma) || vma->vm_flags & VM_IO);
> +	       (vma_is_fsdax(vma) || vma_test(vma, VMA_IO_BIT));

This looks a bit misplaces in this patch. Also, not spelled out in the patch
description?

[...]

>  retry:
>  	pgdp = pgd_offset(mm, address);
> @@ -7316,8 +7317,9 @@ static int __access_remote_vm(struct mm_struct *mm, unsigned long addr,
>  			}
>  
>  			/*
> -			 * Check if this is a VM_IO | VM_PFNMAP VMA, which
> -			 * we can access using slightly different code.
> +			 * GUP failed, perhaps because this is a mapping it
> +			 * cannot handle (see vma_can_gup()) - such mappings may
> +			 * provide access via vm_ops->access() instead.
>  			 */
>  			bytes = 0;
>  #ifdef CONFIG_HAVE_IOREMAP_PROT
> diff --git a/mm/mempolicy.c b/mm/mempolicy.c
> index 044ffb4f4128..2fd759e348ca 100644
> --- a/mm/mempolicy.c
> +++ b/mm/mempolicy.c
> @@ -2013,7 +2013,8 @@ SYSCALL_DEFINE5(get_mempolicy, int __user *, policy,
>  
>  bool vma_migratable(struct vm_area_struct *vma)
>  {
> -	if (vma->vm_flags & (VM_IO | VM_PFNMAP))
> +	/* Pages which GUP cannot obtain cannot be migrated either. */
> +	if (!vma_can_gup(vma))
>  		return false;

It's slightly confusing, because we don't really use GUP (except in one scenario
for lookup_node).

-- 
Cheers,

David

_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

WARNING: multiple messages have this Message-ID (diff)
From: "David Hildenbrand (Arm)" <david@kernel.org>
To: "Lorenzo Stoakes (ARM)" <ljs@kernel.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	"Liam R. Howlett" <liam@infradead.org>,
	Vlastimil Babka <vbabka@kernel.org>, Jann Horn <jannh@google.com>,
	Pedro Falcato <pfalcato@suse.de>, Mike Rapoport <rppt@kernel.org>,
	Suren Baghdasaryan <surenb@google.com>,
	Michal Hocko <mhocko@suse.com>, Jonathan Corbet <corbet@lwn.net>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Dennis Dalessandro <dennis.dalessandro@cornelisnetworks.com>,
	Jason Gunthorpe <jgg@ziepe.ca>, Leon Romanovsky <leon@kernel.org>,
	Paul Moore <paul@paul-moore.com>,
	Stephen Smalley <stephen.smalley.work@gmail.com>,
	Jaroslav Kysela <perex@perex.cz>, Takashi Iwai <tiwai@suse.com>,
	Alexei Starovoitov <ast@kernel.org>,
	Daniel Borkmann <daniel@iogearbox.net>,
	Andrii Nakryiko <andrii@kernel.org>,
	Eduard Zingerman <eddyz87@gmail.com>,
	Kumar Kartikeya Dwivedi <memxor@gmail.com>,
	Zi Yan <ziy@nvidia.com>,
	Baolin Wang <baolin.wang@linux.alibaba.com>,
	Nico Pache <nico.pache@linux.dev>,
	Ryan Roberts <ryan.roberts@arm.com>, Dev Jain <dev.jain@arm.com>,
	Barry Song <baohua@kernel.org>, Lance Yang <lance.yang@linux.dev>,
	Usama Arif <usama.arif@linux.dev>,
	Kiryl Shutsemau <kas@kernel.org>,
	Doug Gilbert <dgilbert@interlog.com>,
	"James E.J. Bottomley" <James.Bottomley@HansenPartnership.com>,
	"Martin K. Petersen" <mkp@kernel.org>,
	Jaya Kumar <jayalk@intworks.biz>, Simona Vetter <simona@ffwll.ch>,
	Helge Deller <deller@gmx.de>, Sebastian Reichel <sre@kernel.org>,
	John Hubbard <jhubbard@nvidia.com>, Peter Xu <peterx@redhat.com>,
	Masami Hiramatsu <mhiramat@kernel.org>,
	Oleg Nesterov <oleg@redhat.com>,
	Peter Zijlstra <peterz@infradead.org>,
	Thomas Gleixner <tglx@kernel.org>, Ingo Molnar <mingo@redhat.com>,
	Borislav Petkov <bp@alien8.de>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	x86@kernel.org, Arnaldo Carvalho de Melo <acme@kernel.org>,
	Namhyung Kim <namhyung@kernel.org>,
	Mark Rutland <mark.rutland@arm.com>,
	Rik van Riel <riel@surriel.com>, Harry Yoo <harry@kernel.org>,
	Juri Lelli <juri.lelli@redhat.com>,
	Vincent Guittot <vincent.guittot@linaro.org>,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	Maxime Ripard <mripard@kernel.org>,
	Thomas Zimmermann <tzimmermann@suse.de>,
	David Airlie <airlied@gmail.com>, Will Deacon <will@kernel.org>,
	"Aneesh Kumar K.V" <aneesh.kumar@kernel.org>,
	Nick Piggin <npiggin@gmail.com>, Arnd Bergmann <arnd@arndb.de>,
	Muchun Song <muchun.song@linux.dev>,
	Oscar Salvador <osalvador@suse.de>,
	"Matthew Wilcox (Oracle)" <willy@infradead.org>,
	Jan Kara <jack@suse.cz>, Marc Zyngier <maz@kernel.org>,
	Oliver Upton <oupton@kernel.org>,
	Catalin Marinas <catalin.marinas@arm.com>,
	Madhavan Srinivasan <maddy@linux.ibm.com>,
	Anup Patel <anup@brainfault.org>, Paul Walmsley <pjw@kernel.org>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Albert Ou <aou@eecs.berkeley.edu>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Janosch Frank <frankja@linux.ibm.com>,
	Claudio Imbrenda <imbrenda@linux.ibm.com>,
	Alexander Gordeev <agordeev@linux.ibm.com>,
	Gerald Schaefer <gerald.schaefer@linux.ibm.com>,
	Heiko Carstens <hca@linux.ibm.com>,
	Vasily Gorbik <gor@linux.ibm.com>,
	"David S. Miller" <davem@davemloft.net>,
	Andreas Larsson <andreas@gaisler.com>,
	Alexander Viro <viro@zeniv.linux.org.uk>,
	Christian Brauner <brauner@kernel.org>,
	Matthew Brost <matthew.brost@intel.com>,
	Joshua Hahn <joshua.hahnjy@gmail.com>,
	Rakie Kim <rakie.kim@sk.com>, Byungchul Park <byungchul@sk.com>,
	Gregory Price <gourry@gourry.net>,
	Ying Huang <ying.huang@linux.alibaba.com>,
	Alistair Popple <apopple@nvidia.com>,
	Chris Li <chrisl@kernel.org>, Kairui Song <kasong@tencent.com>,
	Kemeng Shi <shikemeng@huaweicloud.com>,
	Nhat Pham <nphamcs@gmail.com>, Baoquan He <baoquan.he@linux.dev>,
	Youngjun Park <youngjun.park@lge.com>,
	Johannes Weiner <hannes@cmpxchg.org>,
	Qi Zheng <qi.zheng@linux.dev>,
	Shakeel Butt <shakeel.butt@linux.dev>,
	Axel Rasmussen <axelrasmussen@google.com>,
	Yuanchu Xie <yuanchu@google.com>, Wei Xu <weixugc@google.com>,
	Chengming Zhou <chengming.zhou@linux.dev>,
	Michal Hocko <mhocko@kernel.org>,
	Miklos Szeredi <miklos@szeredi.hu>, Xu Xin <xu.xin@linux.dev>
Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org,
	linux-doc@vger.kernel.org, linux-usb@vger.kernel.org,
	linux-rdma@vger.kernel.org, selinux@vger.kernel.org,
	linux-sound@vger.kernel.org, bpf@vger.kernel.org,
	linux-scsi@vger.kernel.org, linux-fbdev@vger.kernel.org,
	dri-devel@lists.freedesktop.org,
	linux-trace-kernel@vger.kernel.org,
	linux-perf-users@vger.kernel.org, linux-arch@vger.kernel.org,
	linux-fsdevel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev,
	linuxppc-dev@lists.ozlabs.org, kvm@vger.kernel.org,
	kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org,
	linux-s390@vger.kernel.org, sparclinux@vger.kernel.org,
	fuse-devel@lists.linux.dev
Subject: Re: [PATCH v3 40/40] mm/vma: introduce and use vma[_flags]_can_gup()
Date: Fri, 2 Oct 2026 09:48:14 +0200	[thread overview]
Message-ID: <202033a0-ea65-44de-8119-689e0df0b78e@kernel.org> (raw)
In-Reply-To: <20260917-b4-mmap-prepare-vma-flag-sanify-v3-40-4583d8a23bca@kernel.org>

On 9/17/26 18:22, Lorenzo Stoakes (ARM) wrote:
> GUP cannot be used for VMAs which set VMA_IO_BIT - because memory-mapped
> I/O must not be accessed on the user's behalf - or VMA_PFNMAP_BIT - because
> PFN maps have no folios which the kernel is permitted to access.

The interesting thing will be: what if we want to allow gup for COW'ed pages in
PFNMAP. We discussed that already, and it might be a bit harder to squeeze into
the new vma[_flags]_can_gup() checks that are also used elsewhere now.

Because GUP itself mostly already handles the VMA_PFNMAP_BIT, just has to be
taught about vm_normal_page() etc *properly* on all levels. I even have that on
my todo list.

Updating vma[_flags]_can_gup() won't be enough in that case (ignore
VMA_PFNMAP_BIT in cow-mappings), because suddenly we would unlock other code
paths that now depend on this helper.

Also, there is the secretmem thing I comment on below. I think this also belongs
in this helper but other unrelated users don't really want it.

Which makes me wonder whether vma[_flags]_can_gup() is actually the right
abstraction to use in some other cases that you convert below. For the actual
GUP users I think it's the right thing to do. But not for things that are
somewhat related to GUP (but actually different) I think you much rather want a
separate helper.

Long story short: I wonder whether vma[_flags]_can_gup() is the right
abstraction, especially for users that don't actually *use* gup but just want
slightly similar semantics (no VM_IO|VM_PFNMAP).

> 
> Rather than keeping these checks open-coded, abstract them to
> vma_flags_can_gup() and its VMA wrapper vma_can_gup().
> 
> A number of other places make the same check to decide whether a mapping
> can be populated or accessed as GUP would, so update those too.
> 
> While here, drop a reference to 'special' and replace a use of the
> deprecated VMA flags API in vma_dump_size().
> 
> No functional change intended.
> 
> Signed-off-by: Lorenzo Stoakes (ARM) <ljs@kernel.org>
> ---
>  fs/coredump.c      |  4 ++--
>  include/linux/mm.h | 29 +++++++++++++++++++++++++++++
>  mm/gup.c           |  7 +++----
>  mm/hmm.c           |  3 +--
>  mm/memory.c        | 14 ++++++++------
>  mm/mempolicy.c     |  3 ++-
>  6 files changed, 45 insertions(+), 15 deletions(-)
> 
> diff --git a/fs/coredump.c b/fs/coredump.c
> index fb21fb6703dd..9f729c594c47 100644
> --- a/fs/coredump.c
> +++ b/fs/coredump.c
> @@ -1616,8 +1616,8 @@ static unsigned long vma_dump_size(struct vm_area_struct *vma,
>  		return 0;
>  	}
>  
> -	/* Do not dump I/O mapped devices or special mappings */
> -	if (vma->vm_flags & VM_IO)
> +	/* Do not dump memory-mapped I/O, which may have side effects on read. */
> +	if (vma_test(vma, VMA_IO_BIT))
>  		return 0;
>  

In the end, we use GUP to lookup the pages through get_dump_page().

I think we should just use the gup helper instead?

>  	/* By default, dump shared memory if mapped from an anonymous file. */
> diff --git a/include/linux/mm.h b/include/linux/mm.h
> index 5860a3b4dba9..1249e04d7b98 100644
> --- a/include/linux/mm.h
> +++ b/include/linux/mm.h
> @@ -1777,6 +1777,35 @@ static inline bool vma_is_persistent(const struct vm_area_struct *vma)
>  	return vma_flags_is_persistent(&vma->flags);
>  }
>  
> +/**
> + * vma_flags_can_gup() - Do the specified VMA flags permit GUP to access the
> + * mapping's pages?
> + * @flags: The VMA flags to test.
> + *
> + * GUP cannot obtain pages from a PFN map (VMA_PFNMAP_BIT), which may have no
> + * struct pages behind it, and must not provide access to memory-mapped I/O
> + * (VMA_IO_BIT).
> + *
> + * Returns: true if GUP may access pages from the mapping, otherwise false.
> + */
> +static inline bool vma_flags_can_gup(const vma_flags_t *flags)
> +{
> +	return !vma_flags_test_any(flags, VMA_IO_BIT, VMA_PFNMAP_BIT);
> +}

This only covers some things though. See check_vma_flags(): vma_is_secretmem()
is another case we universally reject and that is just simply incompatible. In
the future, it be an address space flag which we can have from the VMA. So we'd
want a vma_can_gup() helper but not necessarily a vma_flags_can_gup() helper.

I think this belongs into the vma_can_gup() helper.

Also, we should better clarify in the doc that other GUP flags will decide
whether GUP is actually allowed. the semantics are a bit vague right now "Do the
specified VMA flags permit GUP to access".

[...]

> diff --git a/mm/hmm.c b/mm/hmm.c
> index 2f1e98c6b644..e9569b82a1f0 100644
> --- a/mm/hmm.c
> +++ b/mm/hmm.c
> @@ -595,8 +595,7 @@ static int hmm_vma_walk_test(unsigned long start, unsigned long end,
>  	struct hmm_range *range = hmm_vma_walk->range;
>  	struct vm_area_struct *vma = walk->vma;
>  
> -	if (!(vma->vm_flags & (VM_IO | VM_PFNMAP)) &&
> -	    vma->vm_flags & VM_READ)
> +	if (vma_can_gup(vma) && vma_test(vma, VMA_READ_BIT))
>  		return 0;

Where do we end up using gup? I don't think we do, because hmm essentially
implements an alternative to KVM-style GUP-fast usage.

So likely this wants a different helper.

>  
>  	/*
> diff --git a/mm/memory.c b/mm/memory.c
> index 6c011979401a..338fce99e711 100644
> --- a/mm/memory.c
> +++ b/mm/memory.c
> @@ -2417,11 +2417,11 @@ static bool vm_mixed_zeropage_allowed(struct vm_area_struct *vma)
>  	 * be problematic as soon as the zeropage gets replaced by a different
>  	 * page due to vma->vm_ops->pfn_mkwrite, because what's mapped would
>  	 * now differ to what GUP looked up. FSDAX is incompatible to
> -	 * FOLL_LONGTERM and VM_IO is incompatible to GUP completely (see
> -	 * check_vma_flags).
> +	 * FOLL_LONGTERM and memory-mapped I/O is incompatible to GUP completely
> +	 * (see vma_can_gup()).
>  	 */
>  	return vma->vm_ops && vma->vm_ops->pfn_mkwrite &&
> -	       (vma_is_fsdax(vma) || vma->vm_flags & VM_IO);
> +	       (vma_is_fsdax(vma) || vma_test(vma, VMA_IO_BIT));

This looks a bit misplaces in this patch. Also, not spelled out in the patch
description?

[...]

>  retry:
>  	pgdp = pgd_offset(mm, address);
> @@ -7316,8 +7317,9 @@ static int __access_remote_vm(struct mm_struct *mm, unsigned long addr,
>  			}
>  
>  			/*
> -			 * Check if this is a VM_IO | VM_PFNMAP VMA, which
> -			 * we can access using slightly different code.
> +			 * GUP failed, perhaps because this is a mapping it
> +			 * cannot handle (see vma_can_gup()) - such mappings may
> +			 * provide access via vm_ops->access() instead.
>  			 */
>  			bytes = 0;
>  #ifdef CONFIG_HAVE_IOREMAP_PROT
> diff --git a/mm/mempolicy.c b/mm/mempolicy.c
> index 044ffb4f4128..2fd759e348ca 100644
> --- a/mm/mempolicy.c
> +++ b/mm/mempolicy.c
> @@ -2013,7 +2013,8 @@ SYSCALL_DEFINE5(get_mempolicy, int __user *, policy,
>  
>  bool vma_migratable(struct vm_area_struct *vma)
>  {
> -	if (vma->vm_flags & (VM_IO | VM_PFNMAP))
> +	/* Pages which GUP cannot obtain cannot be migrated either. */
> +	if (!vma_can_gup(vma))
>  		return false;

It's slightly confusing, because we don't really use GUP (except in one scenario
for lookup_node).

-- 
Cheers,

David

-- 
kvm-riscv mailing list
kvm-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kvm-riscv

  parent reply	other threads:[~2026-10-02  7:48 UTC|newest]

Thread overview: 483+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-17 16:22 [PATCH v3 00/40] mm: make VMA flag semantics explicit, eliminate VM_SPECIAL Lorenzo Stoakes (ARM)
2026-09-17 16:22 ` Lorenzo Stoakes (ARM)
2026-09-17 16:22 ` Lorenzo Stoakes (ARM)
2026-09-17 16:22 ` [PATCH v3 01/40] mm/vma: fix mmap_prepare file handling, remove file_doesnt_need_get Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 16:54   ` sashiko-bot
2026-09-23 15:21   ` Suren Baghdasaryan
2026-09-23 15:21     ` Suren Baghdasaryan
2026-09-23 15:21     ` Suren Baghdasaryan
2026-09-23 15:46     ` Lorenzo Stoakes (ARM)
2026-09-23 15:46       ` Lorenzo Stoakes (ARM)
2026-09-23 15:46       ` Lorenzo Stoakes (ARM)
2026-09-23 15:59       ` Suren Baghdasaryan
2026-09-23 15:59         ` Suren Baghdasaryan
2026-09-23 15:59         ` Suren Baghdasaryan
2026-09-24  2:20   ` Zi Yan
2026-09-24  2:20     ` Zi Yan
2026-09-24  2:20     ` Zi Yan
2026-09-24 10:03     ` Lorenzo Stoakes (ARM)
2026-09-24 10:03       ` Lorenzo Stoakes (ARM)
2026-09-24 10:03       ` Lorenzo Stoakes (ARM)
2026-09-24 16:28   ` Gregory Price
2026-09-25  9:30     ` Lorenzo Stoakes (ARM)
2026-09-24 19:00   ` Liam R. Howlett
2026-09-24 19:00     ` Liam R. Howlett
2026-09-24 19:00     ` Liam R. Howlett
2026-09-25  9:12     ` Lorenzo Stoakes (ARM)
2026-09-25  9:12       ` Lorenzo Stoakes (ARM)
2026-09-25  9:12       ` Lorenzo Stoakes (ARM)
2026-09-17 16:22 ` [PATCH v3 02/40] mm/vma: predicate setting mmap_prepare VMA fields on new vma alloc Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 17:07   ` sashiko-bot
2026-09-23 15:32   ` Suren Baghdasaryan
2026-09-23 15:32     ` Suren Baghdasaryan
2026-09-23 15:32     ` Suren Baghdasaryan
2026-09-23 15:53     ` Lorenzo Stoakes (ARM)
2026-09-23 15:53       ` Lorenzo Stoakes (ARM)
2026-09-23 15:53       ` Lorenzo Stoakes (ARM)
2026-09-23 16:09       ` Suren Baghdasaryan
2026-09-23 16:09         ` Suren Baghdasaryan
2026-09-23 16:09         ` Suren Baghdasaryan
2026-09-23 17:07         ` Lorenzo Stoakes (ARM)
2026-09-23 17:07           ` Lorenzo Stoakes (ARM)
2026-09-23 17:07           ` Lorenzo Stoakes (ARM)
2026-09-23 17:33   ` Lorenzo Stoakes (ARM)
2026-09-23 17:33     ` Lorenzo Stoakes (ARM)
2026-09-23 17:33     ` Lorenzo Stoakes (ARM)
2026-09-24  2:25   ` Zi Yan
2026-09-24  2:25     ` Zi Yan
2026-09-24  2:25     ` Zi Yan
2026-09-17 16:22 ` [PATCH v3 03/40] mm/vma: introduce and use vma_[flags_]can_merge() Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 17:11   ` sashiko-bot
2026-09-23 16:23   ` Suren Baghdasaryan
2026-09-23 16:23     ` Suren Baghdasaryan
2026-09-23 16:23     ` Suren Baghdasaryan
2026-09-24  2:27   ` Zi Yan
2026-09-24  2:27     ` Zi Yan
2026-09-24  2:27     ` Zi Yan
2026-09-24 16:38   ` Gregory Price
2026-09-24 16:38     ` Gregory Price
2026-09-24 16:38     ` Gregory Price
2026-10-01 12:03   ` David Hildenbrand (Arm)
2026-10-01 12:03     ` David Hildenbrand (Arm)
2026-10-01 12:03     ` David Hildenbrand (Arm)
2026-09-17 16:22 ` [PATCH v3 04/40] mm: consistently validate VMA state after mmap[_prepare] hooks Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 17:38   ` sashiko-bot
2026-09-23 16:47   ` Suren Baghdasaryan
2026-09-23 16:47     ` Suren Baghdasaryan
2026-09-23 16:47     ` Suren Baghdasaryan
2026-09-23 17:00     ` Lorenzo Stoakes (ARM)
2026-09-23 17:00       ` Lorenzo Stoakes (ARM)
2026-09-23 17:00       ` Lorenzo Stoakes (ARM)
2026-09-24  2:52   ` Zi Yan
2026-09-24  2:52     ` Zi Yan
2026-09-24  2:52     ` Zi Yan
2026-09-24 10:06     ` Lorenzo Stoakes (ARM)
2026-09-24 10:06       ` Lorenzo Stoakes (ARM)
2026-09-24 10:06       ` Lorenzo Stoakes (ARM)
2026-09-24 17:17   ` Gregory Price
2026-09-24 17:17     ` Gregory Price
2026-09-24 17:17     ` Gregory Price
2026-09-25 12:51     ` Lorenzo Stoakes (ARM)
2026-09-25 12:51       ` Lorenzo Stoakes (ARM)
2026-09-25 12:51       ` Lorenzo Stoakes (ARM)
2026-09-17 16:22 ` [PATCH v3 05/40] mm/vma: ensure mmap_prepare doesn't set actions on a mergeable vma Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 17:32   ` sashiko-bot
2026-09-24 18:00   ` Gregory Price
2026-09-24 18:00     ` Gregory Price
2026-09-24 18:00     ` Gregory Price
2026-09-25  9:51     ` Lorenzo Stoakes (ARM)
2026-09-25  9:51       ` Lorenzo Stoakes (ARM)
2026-09-25  9:51       ` Lorenzo Stoakes (ARM)
2026-09-24 19:28   ` Zi Yan
2026-09-24 19:28     ` Zi Yan
2026-09-24 19:28     ` Zi Yan
2026-09-25  9:55     ` Lorenzo Stoakes (ARM)
2026-09-25  9:55       ` Lorenzo Stoakes (ARM)
2026-09-25  9:55       ` Lorenzo Stoakes (ARM)
2026-09-25  7:28   ` Suren Baghdasaryan
2026-09-25  7:28     ` Suren Baghdasaryan
2026-09-25  7:28     ` Suren Baghdasaryan
2026-09-25  9:53     ` Lorenzo Stoakes (ARM)
2026-09-25  9:53       ` Lorenzo Stoakes (ARM)
2026-09-25  9:53       ` Lorenzo Stoakes (ARM)
2026-10-01 12:11       ` David Hildenbrand (Arm)
2026-10-01 12:11         ` David Hildenbrand (Arm)
2026-10-01 12:11         ` David Hildenbrand (Arm)
2026-09-17 16:22 ` [PATCH v3 06/40] mm: make map_kernel_pages_[prepare,complete] internal and unexported Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 17:17   ` sashiko-bot
2026-09-24 19:30   ` Zi Yan
2026-09-24 19:30     ` Zi Yan
2026-09-24 19:30     ` Zi Yan
2026-09-25  7:35     ` Suren Baghdasaryan
2026-09-25  7:35       ` Suren Baghdasaryan
2026-09-25  7:35       ` Suren Baghdasaryan
2026-09-29 15:58   ` Gregory Price
2026-09-29 15:58     ` Gregory Price
2026-09-29 15:58     ` Gregory Price
2026-10-01 12:11   ` David Hildenbrand (Arm)
2026-10-01 12:11     ` David Hildenbrand (Arm)
2026-10-01 12:11     ` David Hildenbrand (Arm)
2026-09-17 16:22 ` [PATCH v3 07/40] mm/vma: tidy up map kernel pages enum values Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 17:17   ` sashiko-bot
2026-09-24 19:30   ` Zi Yan
2026-09-24 19:30     ` Zi Yan
2026-09-24 19:30     ` Zi Yan
2026-09-25  7:37     ` Suren Baghdasaryan
2026-09-25  7:37       ` Suren Baghdasaryan
2026-09-25  7:37       ` Suren Baghdasaryan
2026-09-29 15:59   ` Gregory Price
2026-09-29 15:59     ` Gregory Price
2026-09-29 15:59     ` Gregory Price
2026-10-01 12:12   ` David Hildenbrand (Arm)
2026-10-01 12:12     ` David Hildenbrand (Arm)
2026-10-01 12:12     ` David Hildenbrand (Arm)
2026-09-17 16:22 ` [PATCH v3 08/40] mm: add mmap action for discontiguous kernel page mapping Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 17:25   ` sashiko-bot
2026-09-25 20:53   ` Zi Yan
2026-09-25 20:53     ` Zi Yan
2026-09-25 20:53     ` Zi Yan
2026-09-27 21:44   ` Suren Baghdasaryan
2026-09-27 21:44     ` Suren Baghdasaryan
2026-09-27 21:44     ` Suren Baghdasaryan
2026-09-29 11:11     ` Lorenzo Stoakes (ARM)
2026-09-29 11:11       ` Lorenzo Stoakes (ARM)
2026-09-29 11:11       ` Lorenzo Stoakes (ARM)
2026-09-17 16:22 ` [PATCH v3 09/40] docs: filesystems: update mmap_prepare docs for discontig kernel pgs Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 17:32   ` sashiko-bot
2026-09-25 21:01   ` Zi Yan
2026-09-25 21:01     ` Zi Yan
2026-09-25 21:01     ` Zi Yan
2026-09-29 11:21     ` Lorenzo Stoakes (ARM)
2026-09-29 11:21       ` Lorenzo Stoakes (ARM)
2026-09-29 11:21       ` Lorenzo Stoakes (ARM)
2026-09-17 16:22 ` [PATCH v3 10/40] drivers/usb/mon: update to use mmap_prepare + map kernel pages Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 17:29   ` sashiko-bot
2026-10-02  9:55   ` Lance Yang
2026-10-02 12:12     ` Lorenzo Stoakes (ARM)
2026-09-17 16:22 ` [PATCH v3 11/40] infiniband: update hfi1 to use remap_vmalloc_range() Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 17:36   ` sashiko-bot
2026-09-17 16:22 ` [PATCH v3 12/40] selinux: reject writable opens of policy file, drop mmap shared/write check Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 17:25   ` sashiko-bot
2026-09-17 16:22 ` [PATCH v3 13/40] ALSA: pcm: use vm_insert_page() to map PCM status page Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 17:34   ` sashiko-bot
2026-09-17 16:22 ` [PATCH v3 14/40] bpf: arena: mark arena_map_mmap() mappings VM_MIXEDMAP Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 17:25   ` sashiko-bot
2026-09-17 16:22 ` [PATCH v3 15/40] mm/vma: add vma[_flags]_is_kernel_owned() predicates Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 17:21   ` sashiko-bot
2026-09-26  1:37   ` Zi Yan
2026-09-26  1:37     ` Zi Yan
2026-09-26  1:37     ` Zi Yan
2026-10-01 12:36   ` David Hildenbrand (Arm)
2026-10-01 12:36     ` David Hildenbrand (Arm)
2026-10-01 12:36     ` David Hildenbrand (Arm)
2026-10-02 14:56     ` Lorenzo Stoakes (ARM)
2026-10-02 14:56       ` Lorenzo Stoakes (ARM)
2026-10-02 14:56       ` Lorenzo Stoakes (ARM)
2026-10-02 21:19       ` David Hildenbrand (Arm)
2026-10-02 21:19         ` David Hildenbrand (Arm)
2026-10-02 21:19         ` David Hildenbrand (Arm)
2026-10-03  9:03         ` Lorenzo Stoakes (ARM)
2026-10-03  9:03           ` Lorenzo Stoakes (ARM)
2026-10-03  9:03           ` Lorenzo Stoakes (ARM)
2026-09-17 16:22 ` [PATCH v3 16/40] mm/vma: only allow mmap to clear VMA_MAYWRITE_BIT if kernel-owned Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 17:28   ` sashiko-bot
2026-09-26  2:07   ` Zi Yan
2026-09-26  2:07     ` Zi Yan
2026-09-26  2:07     ` Zi Yan
2026-09-26  2:17     ` Zi Yan
2026-09-26  2:17       ` Zi Yan
2026-09-26  2:17       ` Zi Yan
2026-09-26 10:06       ` Lorenzo Stoakes (ARM)
2026-09-26 10:06         ` Lorenzo Stoakes (ARM)
2026-09-26 10:06         ` Lorenzo Stoakes (ARM)
2026-09-17 16:22 ` [PATCH v3 17/40] mm/vma: add and use vma_[flags]_is_fixed_mapping Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 17:27   ` sashiko-bot
2026-09-26  2:27   ` Zi Yan
2026-09-26  2:27     ` Zi Yan
2026-09-26  2:27     ` Zi Yan
2026-09-26 10:03     ` Lorenzo Stoakes (ARM)
2026-09-26 10:03       ` Lorenzo Stoakes (ARM)
2026-09-26 10:03       ` Lorenzo Stoakes (ARM)
2026-09-17 16:22 ` [PATCH v3 18/40] scsi: sg: convert mmap hook to mmap_prepare and rework Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 17:34   ` sashiko-bot
2026-09-17 16:22 ` [PATCH v3 19/40] fbdev: defio: assert FBINFO_VIRTFB, drop VM_IO, add VM_MIXEDMAP Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 17:27   ` sashiko-bot
2026-09-17 16:22 ` [PATCH v3 20/40] HSI: cmt_speech: convert mmap hook to mmap_prepare, refactor Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 17:31   ` sashiko-bot
2026-09-17 16:22 ` [PATCH v3 21/40] mm/gup: error out early on !VMA_MAYREAD_BIT VMAs Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 17:30   ` sashiko-bot
2026-09-26  2:30   ` Zi Yan
2026-09-26  2:30     ` Zi Yan
2026-09-26  2:30     ` Zi Yan
2026-09-17 16:22 ` [PATCH v3 22/40] uprobes: remove VM_IO, set VM_MIXEDMAP for mapped kernel pages Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 17:30   ` sashiko-bot
2026-09-17 16:22 ` [PATCH v3 23/40] mm/mlock: clear VMA_LOCKED_MASK over mmap callback Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 17:32   ` sashiko-bot
2026-10-01 15:20   ` Zi Yan
2026-10-01 15:20     ` Zi Yan
2026-10-01 15:20     ` Zi Yan
2026-10-02 12:26     ` Lorenzo Stoakes (ARM)
2026-10-02 12:26       ` Lorenzo Stoakes (ARM)
2026-10-02 12:26       ` Lorenzo Stoakes (ARM)
2026-09-17 16:22 ` [PATCH v3 24/40] mm/mlock: eliminate weird VMA_IO_BIT abuse and simplify Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 17:43   ` sashiko-bot
2026-09-23 20:06   ` Zi Yan
2026-09-23 20:06     ` Zi Yan
2026-09-23 20:06     ` Zi Yan
2026-09-24 10:21     ` Lorenzo Stoakes (ARM)
2026-09-24 10:21       ` Lorenzo Stoakes (ARM)
2026-09-24 10:21       ` Lorenzo Stoakes (ARM)
2026-09-24 15:50       ` Zi Yan
2026-09-24 15:50         ` Zi Yan
2026-09-24 15:50         ` Zi Yan
2026-09-25  9:35         ` Lorenzo Stoakes (ARM)
2026-09-25  9:35           ` Lorenzo Stoakes (ARM)
2026-09-25  9:35           ` Lorenzo Stoakes (ARM)
2026-09-17 16:22 ` [PATCH v3 25/40] mm/vma: enforce that only kernel-owned mappings may set VMA_IO_BIT Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 17:31   ` sashiko-bot
2026-09-29  2:12   ` Zi Yan
2026-09-29  2:12     ` Zi Yan
2026-09-29  2:12     ` Zi Yan
2026-09-17 16:22 ` [PATCH v3 26/40] mm: remove VMA_IO_BIT check in vma[_flags]_is_kernel_owned() Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 17:34   ` sashiko-bot
2026-09-17 16:22 ` [PATCH v3 27/40] mm: remove hugetlb_inline.h Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 17:31   ` sashiko-bot
2026-09-29  2:13   ` Zi Yan
2026-09-29  2:13     ` Zi Yan
2026-09-29  2:13     ` Zi Yan
2026-10-02  6:52   ` David Hildenbrand (Arm)
2026-10-02  6:52     ` David Hildenbrand (Arm)
2026-10-02  6:52     ` David Hildenbrand (Arm)
2026-09-17 16:22 ` [PATCH v3 28/40] mm: rename is_vm_hugetlb_page() to vma_is_hugetlb() Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 17:30   ` sashiko-bot
2026-09-29  2:14   ` Zi Yan
2026-09-29  2:14     ` Zi Yan
2026-09-29  2:14     ` Zi Yan
2026-10-02  6:53   ` David Hildenbrand (Arm)
2026-10-02  6:53     ` David Hildenbrand (Arm)
2026-10-02  6:53     ` David Hildenbrand (Arm)
2026-09-17 16:22 ` [PATCH v3 29/40] mm: drop some redundant checks around hugetlb VMAs Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 17:32   ` sashiko-bot
2026-09-29  2:36   ` Zi Yan
2026-09-29  2:36     ` Zi Yan
2026-09-29  2:36     ` Zi Yan
2026-10-02  6:54   ` David Hildenbrand (Arm)
2026-10-02  6:54     ` David Hildenbrand (Arm)
2026-10-02  6:54     ` David Hildenbrand (Arm)
2026-09-17 16:22 ` [PATCH v3 30/40] mm/madvise: update is_valid_guard_vma() to use vma_can_merge() Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 17:37   ` sashiko-bot
2026-09-29  2:38   ` Zi Yan
2026-09-29  2:38     ` Zi Yan
2026-09-29  2:38     ` Zi Yan
2026-10-02  6:57   ` David Hildenbrand (Arm)
2026-10-02  6:57     ` David Hildenbrand (Arm)
2026-10-02  6:57     ` David Hildenbrand (Arm)
2026-09-17 16:22 ` [PATCH v3 31/40] mm/vma: introduce vma[_flags]_is_persistent() Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 17:35   ` sashiko-bot
2026-09-30  2:00   ` Zi Yan
2026-09-30  2:00     ` Zi Yan
2026-09-30  2:00     ` Zi Yan
2026-10-02  6:59   ` David Hildenbrand (Arm)
2026-10-02  6:59     ` David Hildenbrand (Arm)
2026-10-02  6:59     ` David Hildenbrand (Arm)
2026-10-02  7:02     ` David Hildenbrand (Arm)
2026-10-02  7:02       ` David Hildenbrand (Arm)
2026-10-02  7:02       ` David Hildenbrand (Arm)
2026-10-02  7:05       ` David Hildenbrand (Arm)
2026-10-02  7:05         ` David Hildenbrand (Arm)
2026-10-02  7:05         ` David Hildenbrand (Arm)
2026-10-02 12:08         ` Lorenzo Stoakes (ARM)
2026-10-02 12:08           ` Lorenzo Stoakes (ARM)
2026-10-02 12:08           ` Lorenzo Stoakes (ARM)
2026-10-02 12:35           ` David Hildenbrand (Arm)
2026-10-02 12:35             ` David Hildenbrand (Arm)
2026-10-02 12:35             ` David Hildenbrand (Arm)
2026-10-02 12:48             ` Lorenzo Stoakes (ARM)
2026-10-02 12:48               ` Lorenzo Stoakes (ARM)
2026-10-02 12:48               ` Lorenzo Stoakes (ARM)
2026-10-02 13:11               ` David Hildenbrand (Arm)
2026-10-02 13:11                 ` David Hildenbrand (Arm)
2026-10-02 13:11                 ` David Hildenbrand (Arm)
2026-10-02 13:59                 ` Lorenzo Stoakes (ARM)
2026-10-02 13:59                   ` Lorenzo Stoakes (ARM)
2026-10-02 13:59                   ` Lorenzo Stoakes (ARM)
2026-10-02 21:43                   ` David Hildenbrand (Arm)
2026-10-02 21:43                     ` David Hildenbrand (Arm)
2026-10-02 21:43                     ` David Hildenbrand (Arm)
2026-10-03 13:16                     ` Lorenzo Stoakes (ARM)
2026-10-03 13:16                       ` Lorenzo Stoakes (ARM)
2026-10-03 13:16                       ` Lorenzo Stoakes (ARM)
2026-09-17 16:22 ` [PATCH v3 32/40] mm/uffd: use predicates for userfaultfd checks Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 17:38   ` sashiko-bot
2026-09-30  2:02   ` Zi Yan
2026-09-30  2:02     ` Zi Yan
2026-09-30  2:02     ` Zi Yan
2026-10-02  7:04   ` David Hildenbrand (Arm)
2026-10-02  7:04     ` David Hildenbrand (Arm)
2026-10-02  7:04     ` David Hildenbrand (Arm)
2026-10-02 12:35     ` Lorenzo Stoakes (ARM)
2026-10-02 12:35       ` Lorenzo Stoakes (ARM)
2026-10-02 12:35       ` Lorenzo Stoakes (ARM)
2026-09-17 16:22 ` [PATCH v3 33/40] mm/madvise: use predicates for madvise(..., MADV_DOFORK) Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 17:37   ` sashiko-bot
2026-09-30  2:28   ` Zi Yan
2026-09-30  2:28     ` Zi Yan
2026-09-30  2:28     ` Zi Yan
2026-09-17 16:22 ` [PATCH v3 34/40] mm: eliminate VMA_SPECIAL_FLAGS usage when hugetlb explicitly tested Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 17:45   ` sashiko-bot
2026-09-30  2:42   ` Zi Yan
2026-09-30  2:42     ` Zi Yan
2026-09-30  2:42     ` Zi Yan
2026-09-30  9:32     ` Lorenzo Stoakes (ARM)
2026-09-30  9:32       ` Lorenzo Stoakes (ARM)
2026-09-30  9:32       ` Lorenzo Stoakes (ARM)
2026-09-17 16:22 ` [PATCH v3 35/40] mm: eliminate VMA_SPECIAL_FLAGS check in lru_gen_look_around() Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 17:41   ` sashiko-bot
2026-09-30  2:42   ` Zi Yan
2026-09-30  2:42     ` Zi Yan
2026-09-30  2:42     ` Zi Yan
2026-10-02  7:06   ` David Hildenbrand (Arm)
2026-10-02  7:06     ` David Hildenbrand (Arm)
2026-10-02  7:06     ` David Hildenbrand (Arm)
2026-09-17 16:22 ` [PATCH v3 36/40] mm: avoid use of VMA_SPECIAL_FLAGS in migrate_vma_setup() Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 17:40   ` sashiko-bot
2026-09-30  2:47   ` Zi Yan
2026-09-30  2:47     ` Zi Yan
2026-09-30  2:47     ` Zi Yan
2026-10-02  7:07   ` David Hildenbrand (Arm)
2026-10-02  7:07     ` David Hildenbrand (Arm)
2026-10-02  7:07     ` David Hildenbrand (Arm)
2026-09-17 16:22 ` [PATCH v3 37/40] mm: eliminate VM_SPECIAL, VMA_SPECIAL_FLAGS Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 17:44   ` sashiko-bot
2026-09-30  2:48   ` Zi Yan
2026-09-30  2:48     ` Zi Yan
2026-09-30  2:48     ` Zi Yan
2026-10-02  7:07   ` David Hildenbrand (Arm)
2026-10-02  7:07     ` David Hildenbrand (Arm)
2026-10-02  7:07     ` David Hildenbrand (Arm)
2026-09-17 16:22 ` [PATCH v3 38/40] fuse: dax: do not set VM_MIXEDMAP Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 17:38   ` sashiko-bot
2026-10-02  7:09   ` David Hildenbrand (Arm)
2026-10-02  7:09     ` David Hildenbrand (Arm)
2026-10-02  7:09     ` David Hildenbrand (Arm)
2026-09-17 16:22 ` [PATCH v3 39/40] mm/huge_memory: remove vma_is_special_huge() Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 17:38   ` sashiko-bot
2026-10-01 15:21   ` Zi Yan
2026-10-01 15:21     ` Zi Yan
2026-10-01 15:21     ` Zi Yan
2026-10-02  7:11   ` David Hildenbrand (Arm)
2026-10-02  7:11     ` David Hildenbrand (Arm)
2026-10-02  7:11     ` David Hildenbrand (Arm)
2026-09-17 16:22 ` [PATCH v3 40/40] mm/vma: introduce and use vma[_flags]_can_gup() Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 16:22   ` Lorenzo Stoakes (ARM)
2026-09-17 17:36   ` sashiko-bot
2026-10-01 15:23   ` Zi Yan
2026-10-01 15:23     ` Zi Yan
2026-10-01 15:23     ` Zi Yan
2026-10-02  7:48   ` David Hildenbrand (Arm) [this message]
2026-10-02  7:48     ` David Hildenbrand (Arm)
2026-10-02  7:48     ` David Hildenbrand (Arm)
2026-10-02 16:11     ` Lorenzo Stoakes (ARM)
2026-10-02 16:11       ` Lorenzo Stoakes (ARM)
2026-10-02 16:11       ` Lorenzo Stoakes (ARM)
2026-09-17 21:23 ` [PATCH v3 00/40] mm: make VMA flag semantics explicit, eliminate VM_SPECIAL Andrew Morton
2026-09-17 21:23   ` Andrew Morton
2026-09-17 21:23   ` Andrew Morton
2026-09-23  8:57 ` Lorenzo Stoakes (ARM)
2026-09-23  8:57   ` Lorenzo Stoakes (ARM)
2026-09-23  8:57   ` Lorenzo Stoakes (ARM)
2026-09-25 15:58 ` Lorenzo Stoakes (ARM)
2026-09-25 22:06 ` Arnd Bergmann
2026-09-25 22:06   ` Arnd Bergmann
2026-09-25 22:06   ` Arnd Bergmann
2026-09-26  9:40   ` Lorenzo Stoakes (ARM)
2026-09-26  9:40     ` Lorenzo Stoakes (ARM)
2026-09-26  9:40     ` Lorenzo Stoakes (ARM)
2026-09-26 13:06     ` Arnd Bergmann
2026-09-26 13:06       ` Arnd Bergmann
2026-09-26 13:06       ` Arnd Bergmann
2026-09-26 13:22       ` Lorenzo Stoakes (ARM)
2026-09-26 13:22         ` Lorenzo Stoakes (ARM)
2026-09-26 13:22         ` Lorenzo Stoakes (ARM)
2026-09-26 17:14         ` Arnd Bergmann
2026-09-26 17:14           ` Arnd Bergmann
2026-09-26 17:14           ` Arnd Bergmann

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=202033a0-ea65-44de-8119-689e0df0b78e@kernel.org \
    --to=david@kernel.org \
    --cc=James.Bottomley@HansenPartnership.com \
    --cc=acme@kernel.org \
    --cc=agordeev@linux.ibm.com \
    --cc=airlied@gmail.com \
    --cc=akpm@linux-foundation.org \
    --cc=andreas@gaisler.com \
    --cc=andrii@kernel.org \
    --cc=aneesh.kumar@kernel.org \
    --cc=anup@brainfault.org \
    --cc=aou@eecs.berkeley.edu \
    --cc=apopple@nvidia.com \
    --cc=arnd@arndb.de \
    --cc=ast@kernel.org \
    --cc=axelrasmussen@google.com \
    --cc=baohua@kernel.org \
    --cc=baolin.wang@linux.alibaba.com \
    --cc=baoquan.he@linux.dev \
    --cc=borntraeger@linux.ibm.com \
    --cc=bp@alien8.de \
    --cc=bpf@vger.kernel.org \
    --cc=brauner@kernel.org \
    --cc=byungchul@sk.com \
    --cc=catalin.marinas@arm.com \
    --cc=chengming.zhou@linux.dev \
    --cc=chrisl@kernel.org \
    --cc=corbet@lwn.net \
    --cc=daniel@iogearbox.net \
    --cc=dave.hansen@linux.intel.com \
    --cc=davem@davemloft.net \
    --cc=deller@gmx.de \
    --cc=dennis.dalessandro@cornelisnetworks.com \
    --cc=dev.jain@arm.com \
    --cc=dgilbert@interlog.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=eddyz87@gmail.com \
    --cc=frankja@linux.ibm.com \
    --cc=fuse-devel@lists.linux.dev \
    --cc=gerald.schaefer@linux.ibm.com \
    --cc=gor@linux.ibm.com \
    --cc=gourry@gourry.net \
    --cc=gregkh@linuxfoundation.org \
    --cc=hannes@cmpxchg.org \
    --cc=harry@kernel.org \
    --cc=hca@linux.ibm.com \
    --cc=imbrenda@linux.ibm.com \
    --cc=jack@suse.cz \
    --cc=jannh@google.com \
    --cc=jayalk@intworks.biz \
    --cc=jgg@ziepe.ca \
    --cc=jhubbard@nvidia.com \
    --cc=joshua.hahnjy@gmail.com \
    --cc=juri.lelli@redhat.com \
    --cc=kas@kernel.org \
    --cc=kasong@tencent.com \
    --cc=kvm-riscv@lists.infradead.org \
    --cc=kvm@vger.kernel.org \
    --cc=kvmarm@lists.linux.dev \
    --cc=lance.yang@linux.dev \
    --cc=leon@kernel.org \
    --cc=liam@infradead.org \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-fbdev@vger.kernel.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=linux-perf-users@vger.kernel.org \
    --cc=linux-rdma@vger.kernel.org \
    --cc=linux-riscv@lists.infradead.org \
    --cc=linux-s390@vger.kernel.org \
    --cc=linux-scsi@vger.kernel.org \
    --cc=linux-sound@vger.kernel.org \
    --cc=linux-trace-kernel@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=ljs@kernel.org \
    --cc=maarten.lankhorst@linux.intel.com \
    --cc=maddy@linux.ibm.com \
    --cc=mark.rutland@arm.com \
    --cc=matthew.brost@intel.com \
    --cc=maz@kernel.org \
    --cc=memxor@gmail.com \
    --cc=mhiramat@kernel.org \
    --cc=mhocko@kernel.org \
    --cc=mhocko@suse.com \
    --cc=miklos@szeredi.hu \
    --cc=mingo@redhat.com \
    --cc=mkp@kernel.org \
    --cc=mripard@kernel.org \
    --cc=muchun.song@linux.dev \
    --cc=namhyung@kernel.org \
    --cc=nico.pache@linux.dev \
    --cc=nphamcs@gmail.com \
    --cc=npiggin@gmail.com \
    --cc=oleg@redhat.com \
    --cc=osalvador@suse.de \
    --cc=oupton@kernel.org \
    --cc=palmer@dabbelt.com \
    --cc=paul@paul-moore.com \
    --cc=perex@perex.cz \
    --cc=peterx@redhat.com \
    --cc=peterz@infradead.org \
    --cc=pfalcato@suse.de \
    --cc=pjw@kernel.org \
    --cc=qi.zheng@linux.dev \
    --cc=rakie.kim@sk.com \
    --cc=riel@surriel.com \
    --cc=rppt@kernel.org \
    --cc=ryan.roberts@arm.com \
    --cc=selinux@vger.kernel.org \
    --cc=shakeel.butt@linux.dev \
    --cc=shikemeng@huaweicloud.com \
    --cc=simona@ffwll.ch \
    --cc=sparclinux@vger.kernel.org \
    --cc=sre@kernel.org \
    --cc=stephen.smalley.work@gmail.com \
    --cc=surenb@google.com \
    --cc=tglx@kernel.org \
    --cc=tiwai@suse.com \
    --cc=tzimmermann@suse.de \
    --cc=usama.arif@linux.dev \
    --cc=vbabka@kernel.org \
    --cc=vincent.guittot@linaro.org \
    --cc=viro@zeniv.linux.org.uk \
    --cc=weixugc@google.com \
    --cc=will@kernel.org \
    --cc=willy@infradead.org \
    --cc=x86@kernel.org \
    --cc=xu.xin@linux.dev \
    --cc=ying.huang@linux.alibaba.com \
    --cc=youngjun.park@lge.com \
    --cc=yuanchu@google.com \
    --cc=ziy@nvidia.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.