From: Lorenzo Stoakes <ljs@kernel.org>
To: Andrew Morton <akpm@linux-foundation.org>,
David Hildenbrand <david@kernel.org>,
"Liam R. Howlett" <liam@infradead.org>,
Vlastimil Babka <vbabka@kernel.org>,
Mike Rapoport <rppt@kernel.org>,
Suren Baghdasaryan <surenb@google.com>,
Michal Hocko <mhocko@suse.com>, Rik van Riel <riel@surriel.com>,
Harry Yoo <harry@kernel.org>, Jann Horn <jannh@google.com>,
Lance Yang <lance.yang@linux.dev>,
Pedro Falcato <pfalcato@suse.de>,
Russell King <linux@armlinux.org.uk>,
Dinh Nguyen <dinguyen@kernel.org>,
Simon Schuster <schuster.simon@siemens-energy.com>,
"James E.J. Bottomley" <James.Bottomley@HansenPartnership.com>,
Helge Deller <deller@gmx.de>,
Alexander Viro <viro@zeniv.linux.org.uk>,
Christian Brauner <brauner@kernel.org>, Jan Kara <jack@suse.cz>,
Dan Williams <djbw@kernel.org>,
Matthew Wilcox <willy@infradead.org>,
Muchun Song <muchun.song@linux.dev>,
Oscar Salvador <osalvador@suse.de>,
Masami Hiramatsu <mhiramat@kernel.org>,
Oleg Nesterov <oleg@redhat.com>,
Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@redhat.com>,
Arnaldo Carvalho de Melo <acme@kernel.org>,
Namhyung Kim <namhyung@kernel.org>,
Mark Rutland <mark.rutland@arm.com>,
Alexander Shishkin <alexander.shishkin@linux.intel.com>,
Jiri Olsa <jolsa@kernel.org>, Ian Rogers <irogers@google.com>,
Adrian Hunter <adrian.hunter@intel.com>,
James Clark <james.clark@linaro.org>, Zi Yan <ziy@nvidia.com>,
Baolin Wang <baolin.wang@linux.alibaba.com>,
Nico Pache <npache@redhat.com>,
Ryan Roberts <ryan.roberts@arm.com>, Dev Jain <dev.jain@arm.com>,
Barry Song <baohua@kernel.org>,
Miaohe Lin <linmiaohe@huawei.com>,
Naoya Horiguchi <nao.horiguchi@gmail.com>,
Xu Xin <xu.xin16@zte.com.cn>,
Chengming Zhou <chengming.zhou@linux.dev>,
SJ Park <sj@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>,
Hugh Dickins <hughd@google.com>, Peter Xu <peterx@redhat.com>,
Kees Cook <kees@kernel.org>,
Marek Szyprowski <m.szyprowski@samsung.com>,
Robin Murphy <robin.murphy@arm.com>,
Andrey Konovalov <andreyknvl@gmail.com>,
Alexander Potapenko <glider@google.com>,
Dmitry Vyukov <dvyukov@google.com>,
Steven Rostedt <rostedt@goodmis.org>,
Mathieu Desnoyers <mathieu.desnoyers@efficios.com>,
Jarkko Sakkinen <jarkko@kernel.org>,
Dave Hansen <dave.hansen@linux.intel.com>,
Thomas Gleixner <tglx@kernel.org>,
Borislav Petkov <bp@alien8.de>,
x86@kernel.org, "H. Peter Anvin" <hpa@zytor.com>,
Ian Abbott <abbotti@mev.co.uk>,
H Hartley Sweeten <hsweeten@visionengravers.com>,
Lucas Stach <l.stach@pengutronix.de>,
Christian Gmeiner <christian.gmeiner@gmail.com>,
David Airlie <airlied@gmail.com>,
Simona Vetter <simona@ffwll.ch>,
Patrik Jakobsson <patrik.r.jakobsson@gmail.com>,
Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
Maxime Ripard <mripard@kernel.org>,
Thomas Zimmermann <tzimmermann@suse.de>,
Rob Clark <robin.clark@oss.qualcomm.com>,
Dmitry Baryshkov <lumag@kernel.org>,
Abhinav Kumar <abhinav.kumar@linux.dev>,
Jessica Zhang <jesszhan0024@gmail.com>,
Sean Paul <sean@poorly.run>,
Marijn Suijten <marijn.suijten@somainline.org>,
Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>,
Thierry Reding <thierry.reding@kernel.org>,
Mikko Perttunen <mperttunen@nvidia.com>,
Jonathan Hunter <jonathanh@nvidia.com>,
Christian Koenig <christian.koenig@amd.com>,
Huang Rui <ray.huang@amd.com>,
Matthew Auld <matthew.auld@intel.com>,
Jason Gunthorpe <jgg@ziepe.ca>,
Yishai Hadas <yishaih@nvidia.com>,
Shameer Kolothum <skolothumtho@nvidia.com>,
Kevin Tian <kevin.tian@intel.com>,
Ankit Agrawal <ankita@nvidia.com>,
Alex Williamson <alex@shazbot.org>,
Paolo Bonzini <pbonzini@redhat.com>,
Shakeel Butt <shakeel.butt@linux.dev>,
Usama Arif <usama.arif@linux.dev>
Cc: Lorenzo Stoakes <ljs@kernel.org>,
linux-mm@kvack.org, linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
linux-parisc@vger.kernel.org, linux-fsdevel@vger.kernel.org,
nvdimm@lists.linux.dev, linux-perf-users@vger.kernel.org,
linux-trace-kernel@vger.kernel.org, damon@lists.linux.dev,
iommu@lists.linux.dev, kasan-dev@googlegroups.com,
linux-sgx@vger.kernel.org, etnaviv@lists.freedesktop.org,
dri-devel@lists.freedesktop.org, linux-arm-msm@vger.kernel.org,
freedreno@lists.freedesktop.org, linux-tegra@vger.kernel.org,
kvm@vger.kernel.org,
Russell King <linux+etnaviv@armlinux.org.uk>
Subject: [PATCH v2 29/33] mm/vma: introduce and use vma_set_pgoff()
Date: Fri, 10 Jul 2026 21:17:10 +0100 [thread overview]
Message-ID: <20260710-b4-pre-scalable-cow-v2-29-2a5aa403d977@kernel.org> (raw)
In-Reply-To: <20260710-b4-pre-scalable-cow-v2-0-2a5aa403d977@kernel.org>
In order to lay the foundation for work that permits us to track the
virtual page offset of MAP_PRIVATE file-backed mappings, we abstract the
assignment of vma->vm_pgoff to vma_set_pgoff().
We additionally add a lock check here using the newly introduced
vma_assert_can_modify(). This asserts the VMA write lock if the VMA is
attached.
We also assert that, if this is an anonymous VMA and unfaulted, that its
(virtual) page offset is equal to the page offset of the VMA's address.
We must be careful about MAP_PRIVATE-/dev/zero which violates fundamental
assumptions about anonymous memory, so we check for !vma->vm_file after
using vma_is_anonymous() which these mappings satisfy.
Additionally, we only perform the assert if CONFIG_MMU is defined, as nommu
does not set vma->vm_pgoff = addr >> PAGE_SHIFT. This isn't really relevant
to rmap as it has no anon rmap (nor needs it), but we must avoid it
asserting falsely.
All of this logic is kept in assert_sane_pgoff() to keep things clear.
In order to maintain correctness given this assert, we also update
__install_special_mapping() to invoke vma_set_range() after it's set
vma->vm_ops (which determine whether the VMA is anonymous or not).
We do not use vma_set_pgoff() in vm_area_init_from(), as at the point of
forking, we don't necessarily have correct locking state.
Updating vma_set_range() covers most cases, but in addition to this we also
update insert_vm_struct(), compat_set_vma_from_desc() and nommu callers.
We also update vma_add_pgoff() and vma_sub_pgoff() to use vma_set_pgoff().
While we're here, we drop a BUG_ON() and update insert_vm_struct()'s
comment to reflect the fact anonymous mappings can be added here.
Finally, we update the CONFIG_MMU, CONFIG_PER_VMA_LOCK defines in the VMA
userland tests so IS_ENABLED() will work correctly with them.
No functional change intended.
Reviewed-by: Pedro Falcato <pfalcato@suse.de>
Signed-off-by: Lorenzo Stoakes <ljs@kernel.org>
---
mm/nommu.c | 2 +-
mm/vma.c | 14 +++++++-------
mm/vma.h | 35 ++++++++++++++++++++++++++++++++---
tools/testing/vma/vma_internal.h | 4 ++--
4 files changed, 42 insertions(+), 13 deletions(-)
diff --git a/mm/nommu.c b/mm/nommu.c
index 2a0136f6081d..21cbe8b093fc 100644
--- a/mm/nommu.c
+++ b/mm/nommu.c
@@ -1062,7 +1062,7 @@ unsigned long do_mmap(struct file *file,
region->vm_pgoff = pgoff;
vm_flags_init(vma, vm_flags);
- vma->vm_pgoff = pgoff;
+ vma_set_pgoff(vma, pgoff);
if (file) {
region->vm_file = get_file(file);
diff --git a/mm/vma.c b/mm/vma.c
index ec64e179d2f9..7c75dd78edef 100644
--- a/mm/vma.c
+++ b/mm/vma.c
@@ -81,7 +81,7 @@ static void vma_set_range(struct vm_area_struct *vma, unsigned long start,
unsigned long end, pgoff_t pgoff)
{
__vma_set_range(vma, start, end);
- vma->vm_pgoff = pgoff;
+ vma_set_pgoff(vma, pgoff);
}
/* Was this VMA ever forked from a parent, i.e. maybe contains CoW mappings? */
@@ -3347,9 +3347,9 @@ int __vm_munmap(unsigned long start, size_t len, bool unlock)
return ret;
}
-/* Insert vm structure into process list sorted by address
- * and into the inode's i_mmap tree. If vm_file is non-NULL
- * then i_mmap_rwsem is taken here.
+/*
+ * Insert vm structure into process list sorted by address
+ * and into the inode's i_mmap tree if file-backed.
*/
int insert_vm_struct(struct mm_struct *mm, struct vm_area_struct *vma)
{
@@ -3375,8 +3375,8 @@ int insert_vm_struct(struct mm_struct *mm, struct vm_area_struct *vma)
* Similarly in do_mmap and in do_brk_flags.
*/
if (vma_is_anonymous(vma)) {
- BUG_ON(vma->anon_vma);
- vma->vm_pgoff = vma->vm_start >> PAGE_SHIFT;
+ WARN_ON_ONCE(vma->anon_vma);
+ vma_set_pgoff(vma, vma->vm_start >> PAGE_SHIFT);
}
if (vma_link(mm, vma)) {
@@ -3422,7 +3422,6 @@ struct vm_area_struct *__install_special_mapping(
if (unlikely(vma == NULL))
return ERR_PTR(-ENOMEM);
- vma_set_range(vma, addr, addr + len, 0);
vm_flags |= mm->def_flags | VM_DONTEXPAND;
if (pgtable_supports_soft_dirty())
vm_flags |= VM_SOFTDIRTY;
@@ -3431,6 +3430,7 @@ struct vm_area_struct *__install_special_mapping(
vma->vm_ops = ops;
vma->vm_private_data = priv;
+ vma_set_range(vma, addr, addr + len, 0);
ret = insert_vm_struct(mm, vma);
if (ret)
diff --git a/mm/vma.h b/mm/vma.h
index 40effaa3ebe4..58f48609ce22 100644
--- a/mm/vma.h
+++ b/mm/vma.h
@@ -247,16 +247,45 @@ static inline pgoff_t vmg_end_pgoff(const struct vma_merge_struct *vmg)
return vmg_start_pgoff(vmg) + vmg_pages(vmg);
}
+static inline void assert_sane_pgoff(struct vm_area_struct *vma, pgoff_t pgoff)
+{
+ /* nommu doesn't set a virtual pgoff for anon VMAs. */
+ if (!IS_ENABLED(CONFIG_MMU))
+ return;
+ /*
+ * File-backed VMAs have arbitrary page offset (either page offset into
+ * file or for pfnmap the PFN of the start of the range or drivers may
+ * set arbitrary page offset).
+ */
+ if (!vma_is_anonymous(vma))
+ return;
+ /* MAP_PRIVATE-/dev/zero is anon, non-NULL vm_file, but has file pgoff. */
+ if (vma->vm_file)
+ return;
+ /* If faulted in, could have been remapped. */
+ if (vma->anon_vma)
+ return;
+ /* OK this is really an anon VMA - expect virtual page offset. */
+ VM_WARN_ON_ONCE(pgoff != vma->vm_start >> PAGE_SHIFT);
+}
+
+static inline void vma_set_pgoff(struct vm_area_struct *vma, pgoff_t pgoff)
+{
+ vma_assert_can_modify(vma);
+ assert_sane_pgoff(vma, pgoff);
+ vma->vm_pgoff = pgoff;
+}
+
static inline void vma_add_pgoff(struct vm_area_struct *vma, pgoff_t delta)
{
vma_assert_can_modify(vma);
- vma->vm_pgoff += delta;
+ vma_set_pgoff(vma, vma_start_pgoff(vma) + delta);
}
static inline void vma_sub_pgoff(struct vm_area_struct *vma, pgoff_t delta)
{
vma_assert_can_modify(vma);
- vma->vm_pgoff -= delta;
+ vma_set_pgoff(vma, vma_start_pgoff(vma) - delta);
}
#define VMG_STATE(name, mm_, vmi_, start_, end_, vma_flags_, pgoff_) \
@@ -331,7 +360,7 @@ static inline void compat_set_vma_from_desc(struct vm_area_struct *vma,
*/
/* Mutable fields. Populated with initial state. */
- vma->vm_pgoff = desc->pgoff;
+ vma_set_pgoff(vma, desc->pgoff);
if (desc->vm_file != vma->vm_file)
vma_set_file(vma, desc->vm_file);
vma->flags = desc->vma_flags;
diff --git a/tools/testing/vma/vma_internal.h b/tools/testing/vma/vma_internal.h
index e12ab2c80f95..4f6c5666ac07 100644
--- a/tools/testing/vma/vma_internal.h
+++ b/tools/testing/vma/vma_internal.h
@@ -14,8 +14,8 @@
#include <stdlib.h>
-#define CONFIG_MMU
-#define CONFIG_PER_VMA_LOCK
+#define CONFIG_MMU 1
+#define CONFIG_PER_VMA_LOCK 1
#ifdef __CONCAT
#undef __CONCAT
--
2.55.0
next prev parent reply other threads:[~2026-07-10 20:28 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-10 20:16 [PATCH v2 00/33] mm: make VMA page offset handling more consistent Lorenzo Stoakes
2026-07-10 20:16 ` [PATCH v2 01/33] mm: move vma_start_pgoff() into mm.h and clean up Lorenzo Stoakes
2026-07-10 20:16 ` [PATCH v2 02/33] mm: add kdoc comments for vma_start/last_pgoff() Lorenzo Stoakes
2026-07-10 20:16 ` [PATCH v2 03/33] tools/testing/vma: use vma_start_pgoff() in merge tests Lorenzo Stoakes
2026-07-10 20:16 ` [PATCH v2 04/33] mm: introduce and use vma_end_pgoff() Lorenzo Stoakes
2026-07-10 20:16 ` [PATCH v2 05/33] mm/rmap: update mm/interval_tree.c comments Lorenzo Stoakes
2026-07-10 20:16 ` [PATCH v2 06/33] mm/rmap: parameterise vma_interval_tree_*() by address_space Lorenzo Stoakes
2026-07-10 20:16 ` [PATCH v2 07/33] mm/rmap: elide unnecessary static inline's in interval_tree.c Lorenzo Stoakes
2026-07-10 20:16 ` [PATCH v2 08/33] mm/rmap: rename vma_interval_tree_*() to mapping_rmap_tree_*() Lorenzo Stoakes
2026-07-10 20:16 ` [PATCH v2 09/33] mm/rmap: parameterise anon_vma_interval_tree_*() by anon_vma Lorenzo Stoakes
2026-07-10 21:12 ` Gregory Price
2026-07-10 20:16 ` [PATCH v2 10/33] mm/rmap: rename anon_vma_interval_tree_*() params and use pgoff_t Lorenzo Stoakes
2026-07-10 21:14 ` Gregory Price
2026-07-10 20:16 ` [PATCH v2 11/33] mm/rmap: rename anon_vma_interval_tree_*() to anon_rmap_tree_*() Lorenzo Stoakes
2026-07-10 21:16 ` Gregory Price
2026-07-10 20:16 ` [PATCH v2 12/33] MAINTAINERS: Move mm/interval_tree.c to rmap section Lorenzo Stoakes
2026-07-10 20:16 ` [PATCH v2 13/33] mm/vma: introduce and use vmg_pages(), vmg_[start, end]_pgoff() Lorenzo Stoakes
2026-07-10 20:16 ` [PATCH v2 14/33] mm/vma: clean up anon_vma_compatible() Lorenzo Stoakes
2026-07-10 20:16 ` [PATCH v2 15/33] mm/vma: refactor vmg_adjust_set_range() for clarity Lorenzo Stoakes
2026-07-10 20:16 ` [PATCH v2 16/33] mm/vma: minor cleanup of expand_[upwards, downwards]() Lorenzo Stoakes
2026-07-10 20:16 ` [PATCH v2 17/33] mm: introduce and use linear_page_delta() Lorenzo Stoakes
2026-07-10 20:16 ` [PATCH v2 18/33] mm/vma: use vma_start_pgoff(), linear_page_index() in mm code Lorenzo Stoakes
2026-07-10 20:17 ` [PATCH v2 19/33] mm: prefer vma_[start,end]_pgoff() to vma->vm_pgoff in kernel/ Lorenzo Stoakes
2026-07-10 20:17 ` [PATCH v2 20/33] mm/vma: remove duplicative vma_pgoff_offset() helper Lorenzo Stoakes
2026-07-10 20:17 ` [PATCH v2 21/33] mm: use linear_page_[index, delta]() consistently Lorenzo Stoakes
2026-07-10 20:17 ` [PATCH v2 22/33] mm/vma: introduce vma_assert_can_modify() Lorenzo Stoakes
2026-07-10 21:24 ` Gregory Price
2026-07-10 20:17 ` [PATCH v2 23/33] mm/vma: add and use vma_[add/sub]_pgoff() Lorenzo Stoakes
2026-07-10 21:17 ` Gregory Price
2026-07-10 20:17 ` [PATCH v2 24/33] mm/vma: move __install_special_mapping() to vma.c Lorenzo Stoakes
2026-07-10 20:17 ` [PATCH v2 25/33] mm/vma: make vma_set_range() static, drop insert_vm_struct() decl Lorenzo Stoakes
2026-07-10 20:17 ` [PATCH v2 26/33] mm/vma: update vma_shrink() to not pass start, pgoff parameters Lorenzo Stoakes
2026-07-10 21:20 ` Gregory Price
2026-07-10 20:17 ` [PATCH v2 27/33] mm/vma: update vmg_adjust_set_range() to offset pgoff instead Lorenzo Stoakes
2026-07-10 20:17 ` [PATCH v2 28/33] mm/vma: slightly rework the anonymous check in __mmap_new_vma() Lorenzo Stoakes
2026-07-10 21:39 ` Gregory Price
2026-07-10 20:17 ` Lorenzo Stoakes [this message]
2026-07-10 21:26 ` [PATCH v2 29/33] mm/vma: introduce and use vma_set_pgoff() Gregory Price
2026-07-10 20:17 ` [PATCH v2 30/33] mm/vma: correct incorrect vma.h inclusion Lorenzo Stoakes
2026-07-10 20:17 ` [PATCH v2 31/33] mm/vma: use guard clauses in can_vma_merge_[before, after]() Lorenzo Stoakes
2026-07-10 20:17 ` [PATCH v2 32/33] tools/testing/vma: default VMA, mm flag bits to 64-bit Lorenzo Stoakes
2026-07-10 20:17 ` [PATCH v2 33/33] tools/testing/vma: output compared expression on ASSERT_[EQ, NE]() Lorenzo Stoakes
2026-07-10 22:45 ` [PATCH v2 00/33] mm: make VMA page offset handling more consistent Andrew Morton
2026-07-11 6:29 ` Lorenzo Stoakes
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=20260710-b4-pre-scalable-cow-v2-29-2a5aa403d977@kernel.org \
--to=ljs@kernel.org \
--cc=James.Bottomley@HansenPartnership.com \
--cc=abbotti@mev.co.uk \
--cc=abhinav.kumar@linux.dev \
--cc=acme@kernel.org \
--cc=adrian.hunter@intel.com \
--cc=airlied@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=alex@shazbot.org \
--cc=alexander.shishkin@linux.intel.com \
--cc=andreyknvl@gmail.com \
--cc=ankita@nvidia.com \
--cc=apopple@nvidia.com \
--cc=baohua@kernel.org \
--cc=baolin.wang@linux.alibaba.com \
--cc=bp@alien8.de \
--cc=brauner@kernel.org \
--cc=byungchul@sk.com \
--cc=chengming.zhou@linux.dev \
--cc=christian.gmeiner@gmail.com \
--cc=christian.koenig@amd.com \
--cc=damon@lists.linux.dev \
--cc=dave.hansen@linux.intel.com \
--cc=david@kernel.org \
--cc=deller@gmx.de \
--cc=dev.jain@arm.com \
--cc=dinguyen@kernel.org \
--cc=djbw@kernel.org \
--cc=dri-devel@lists.freedesktop.org \
--cc=dvyukov@google.com \
--cc=etnaviv@lists.freedesktop.org \
--cc=freedreno@lists.freedesktop.org \
--cc=glider@google.com \
--cc=gourry@gourry.net \
--cc=harry@kernel.org \
--cc=hpa@zytor.com \
--cc=hsweeten@visionengravers.com \
--cc=hughd@google.com \
--cc=iommu@lists.linux.dev \
--cc=irogers@google.com \
--cc=jack@suse.cz \
--cc=james.clark@linaro.org \
--cc=jannh@google.com \
--cc=jarkko@kernel.org \
--cc=jesszhan0024@gmail.com \
--cc=jgg@ziepe.ca \
--cc=jolsa@kernel.org \
--cc=jonathanh@nvidia.com \
--cc=joshua.hahnjy@gmail.com \
--cc=kasan-dev@googlegroups.com \
--cc=kees@kernel.org \
--cc=kevin.tian@intel.com \
--cc=kvm@vger.kernel.org \
--cc=l.stach@pengutronix.de \
--cc=lance.yang@linux.dev \
--cc=liam@infradead.org \
--cc=linmiaohe@huawei.com \
--cc=linux+etnaviv@armlinux.org.uk \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linux-parisc@vger.kernel.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=linux-sgx@vger.kernel.org \
--cc=linux-tegra@vger.kernel.org \
--cc=linux-trace-kernel@vger.kernel.org \
--cc=linux@armlinux.org.uk \
--cc=lumag@kernel.org \
--cc=m.szyprowski@samsung.com \
--cc=maarten.lankhorst@linux.intel.com \
--cc=marijn.suijten@somainline.org \
--cc=mark.rutland@arm.com \
--cc=mathieu.desnoyers@efficios.com \
--cc=matthew.auld@intel.com \
--cc=matthew.brost@intel.com \
--cc=mhiramat@kernel.org \
--cc=mhocko@suse.com \
--cc=mingo@redhat.com \
--cc=mperttunen@nvidia.com \
--cc=mripard@kernel.org \
--cc=muchun.song@linux.dev \
--cc=namhyung@kernel.org \
--cc=nao.horiguchi@gmail.com \
--cc=npache@redhat.com \
--cc=nvdimm@lists.linux.dev \
--cc=oleg@redhat.com \
--cc=osalvador@suse.de \
--cc=patrik.r.jakobsson@gmail.com \
--cc=pbonzini@redhat.com \
--cc=peterx@redhat.com \
--cc=peterz@infradead.org \
--cc=pfalcato@suse.de \
--cc=rakie.kim@sk.com \
--cc=ray.huang@amd.com \
--cc=riel@surriel.com \
--cc=robin.clark@oss.qualcomm.com \
--cc=robin.murphy@arm.com \
--cc=rostedt@goodmis.org \
--cc=rppt@kernel.org \
--cc=ryan.roberts@arm.com \
--cc=schuster.simon@siemens-energy.com \
--cc=sean@poorly.run \
--cc=shakeel.butt@linux.dev \
--cc=simona@ffwll.ch \
--cc=sj@kernel.org \
--cc=skolothumtho@nvidia.com \
--cc=surenb@google.com \
--cc=tglx@kernel.org \
--cc=thierry.reding@kernel.org \
--cc=tomi.valkeinen@ideasonboard.com \
--cc=tzimmermann@suse.de \
--cc=usama.arif@linux.dev \
--cc=vbabka@kernel.org \
--cc=viro@zeniv.linux.org.uk \
--cc=willy@infradead.org \
--cc=x86@kernel.org \
--cc=xu.xin16@zte.com.cn \
--cc=ying.huang@linux.alibaba.com \
--cc=yishaih@nvidia.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox