All of lore.kernel.org
 help / color / mirror / Atom feed
From: Lorenzo Stoakes <ljs@kernel.org>
To: Pedro Falcato <pfalcato@suse.de>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	 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>,
	 Jarkko Sakkinen <jarkko@kernel.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, Ian Abbott <abbotti@mev.co.uk>,
	 H Hartley Sweeten <hsweeten@visionengravers.com>,
	Lucas Stach <l.stach@pengutronix.de>,
	 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>,
	 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>, Ankit Agrawal <ankita@nvidia.com>,
	 Alex Williamson <alex@shazbot.org>,
	Alexander Viro <viro@zeniv.linux.org.uk>,
	 Christian Brauner <brauner@kernel.org>,
	Dan Williams <djbw@kernel.org>,
	 Muchun Song <muchun.song@linux.dev>,
	Oscar Salvador <osalvador@suse.de>,
	 David Hildenbrand <david@kernel.org>,
	Suren Baghdasaryan <surenb@google.com>,
	 "Liam R . Howlett" <liam@infradead.org>,
	Matthew Wilcox <willy@infradead.org>,
	 Marek Szyprowski <m.szyprowski@samsung.com>,
	Peter Zijlstra <peterz@infradead.org>,
	 Arnaldo Carvalho de Melo <acme@kernel.org>,
	Namhyung Kim <namhyung@kernel.org>,
	 Masami Hiramatsu <mhiramat@kernel.org>,
	Oleg Nesterov <oleg@redhat.com>,
	 Steven Rostedt <rostedt@goodmis.org>,
	SeongJae Park <sj@kernel.org>, Miaohe Lin <linmiaohe@huawei.com>,
	 Hugh Dickins <hughd@google.com>, Mike Rapoport <rppt@kernel.org>,
	Kees Cook <kees@kernel.org>,  Paolo Bonzini <pbonzini@redhat.com>,
	linux-kernel@vger.kernel.org,
	 linux-arm-kernel@lists.infradead.org,
	linux-parisc@vger.kernel.org, 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,
	 linux-fsdevel@vger.kernel.org, nvdimm@lists.linux.dev,
	linux-mm@kvack.org,  iommu@lists.linux.dev,
	linux-perf-users@vger.kernel.org,
	 linux-trace-kernel@vger.kernel.org, kasan-dev@googlegroups.com,
	damon@lists.linux.dev,  Rik van Riel <riel@surriel.com>,
	Harry Yoo <harry@kernel.org>, Jann Horn <jannh@google.com>
Subject: Re: [PATCH 17/30] mm: prefer vma_[start,end]_pgoff() to vma->vm_pgoff in kernel/
Date: Thu, 2 Jul 2026 12:30:59 +0100	[thread overview]
Message-ID: <akZGqclqQ6gS12Vv@lucifer> (raw)
In-Reply-To: <akZCg73F-oGzDp1a@pedro-suse.lan>

On Thu, Jul 02, 2026 at 12:01:37PM +0100, Pedro Falcato wrote:
> On Mon, Jun 29, 2026 at 01:23:28PM +0100, Lorenzo Stoakes wrote:
> > Be consistent in using vma_start_pgoff() and vma_end_pgoff(), which clearly
> > indicates which part of the VMA the page offset refers to and aids
> > greppability.
> >
> > This is part of a broader series laying the ground to provide a virtual
> > page offset for MAP_PRIVATE-file backed anon folios.
> >
> > No functional change intended.
> >
> > Signed-off-by: Lorenzo Stoakes <ljs@kernel.org>
> > ---
> >  kernel/dma/coherent.c      |  7 ++++---
> >  kernel/dma/direct.c        |  6 ++++--
> >  kernel/dma/mapping.c       |  8 +++++---
> >  kernel/dma/ops_helpers.c   |  4 ++--
> >  kernel/events/core.c       | 20 +++++++++++---------
> >  kernel/events/uprobes.c    | 11 +++++++----
> >  kernel/kcov.c              |  2 +-
> >  kernel/trace/ring_buffer.c |  3 ++-
> >  8 files changed, 36 insertions(+), 25 deletions(-)
> >
> > diff --git a/kernel/dma/coherent.c b/kernel/dma/coherent.c
> > index bcdc0f76d2e8..2d3195eb7e83 100644
> > --- a/kernel/dma/coherent.c
> > +++ b/kernel/dma/coherent.c
> > @@ -236,14 +236,15 @@ static int __dma_mmap_from_coherent(struct dma_coherent_mem *mem,
> >  {
> >  	if (mem && vaddr >= mem->virt_base && vaddr + size <=
> >  		   (mem->virt_base + ((dma_addr_t)mem->size << PAGE_SHIFT))) {
> > -		unsigned long off = vma->vm_pgoff;
> > +		const pgoff_t pgoff_start = vma_start_pgoff(vma);
> > +		const pgoff_t pgoff_end = vma_end_pgoff(vma);
> >  		int start = (vaddr - mem->virt_base) >> PAGE_SHIFT;
> >  		unsigned long user_count = vma_pages(vma);
> >  		int count = PAGE_ALIGN(size) >> PAGE_SHIFT;
> >
> >  		*ret = -ENXIO;
> > -		if (off < count && user_count <= count - off) {
> > -			unsigned long pfn = mem->pfn_base + start + off;
> > +		if (pgoff_start < count && pgoff_end <= count) {
> > +			unsigned long pfn = mem->pfn_base + start + pgoff_start;
> >  			*ret = remap_pfn_range(vma, vma->vm_start, pfn,
> >  					       user_count << PAGE_SHIFT,
> >  					       vma->vm_page_prot);
> > diff --git a/kernel/dma/direct.c b/kernel/dma/direct.c
> > index 4391b797d4db..436310d6e4a2 100644
> > --- a/kernel/dma/direct.c
> > +++ b/kernel/dma/direct.c
> > @@ -534,6 +534,8 @@ int dma_direct_mmap(struct device *dev, struct vm_area_struct *vma,
> >  	unsigned long user_count = vma_pages(vma);
> >  	unsigned long count = PAGE_ALIGN(size) >> PAGE_SHIFT;
> >  	unsigned long pfn = PHYS_PFN(dma_to_phys(dev, dma_addr));
> > +	const pgoff_t pgoff_start = vma_start_pgoff(vma);
> > +	const pgoff_t pgoff_end = vma_end_pgoff(vma);
> >  	int ret = -ENXIO;
> >
> >  	vma->vm_page_prot = dma_pgprot(dev, vma->vm_page_prot, attrs);
> > @@ -545,9 +547,9 @@ int dma_direct_mmap(struct device *dev, struct vm_area_struct *vma,
> >  	if (dma_mmap_from_global_coherent(vma, cpu_addr, size, &ret))
> >  		return ret;
> >
> > -	if (vma->vm_pgoff >= count || user_count > count - vma->vm_pgoff)
> > +	if (pgoff_start >= count || pgoff_end > count)
> >  		return -ENXIO;
> > -	return remap_pfn_range(vma, vma->vm_start, pfn + vma->vm_pgoff,
> > +	return remap_pfn_range(vma, vma->vm_start, pfn + pgoff_start,
> >  			user_count << PAGE_SHIFT, vma->vm_page_prot);
> >  }
> >
> > diff --git a/kernel/dma/mapping.c b/kernel/dma/mapping.c
> > index 4fe04669e5e6..c986639044e9 100644
> > --- a/kernel/dma/mapping.c
> > +++ b/kernel/dma/mapping.c
> > @@ -761,12 +761,14 @@ EXPORT_SYMBOL_GPL(dma_free_pages);
> >  int dma_mmap_pages(struct device *dev, struct vm_area_struct *vma,
> >  		size_t size, struct page *page)
> >  {
> > -	unsigned long count = PAGE_ALIGN(size) >> PAGE_SHIFT;
> > +	const pgoff_t pgoff_start = vma_start_pgoff(vma);
> > +	const pgoff_t pgoff_end = vma_end_pgoff(vma);
> > +	const unsigned long count = PAGE_ALIGN(size) >> PAGE_SHIFT;
> >
> > -	if (vma->vm_pgoff >= count || vma_pages(vma) > count - vma->vm_pgoff)
> > +	if (pgoff_start >= count || pgoff_end > count)
> >  		return -ENXIO;
> >  	return remap_pfn_range(vma, vma->vm_start,
> > -			       page_to_pfn(page) + vma->vm_pgoff,
> > +			       page_to_pfn(page) + pgoff_start,
> >  			       vma_pages(vma) << PAGE_SHIFT, vma->vm_page_prot);
> >  }
> >  EXPORT_SYMBOL_GPL(dma_mmap_pages);
> > diff --git a/kernel/dma/ops_helpers.c b/kernel/dma/ops_helpers.c
> > index 20caf9cabf69..6b5f9208d31c 100644
> > --- a/kernel/dma/ops_helpers.c
> > +++ b/kernel/dma/ops_helpers.c
> > @@ -39,7 +39,7 @@ int dma_common_mmap(struct device *dev, struct vm_area_struct *vma,
> >  #ifdef CONFIG_MMU
> >  	unsigned long user_count = vma_pages(vma);
> >  	unsigned long count = PAGE_ALIGN(size) >> PAGE_SHIFT;
> > -	unsigned long off = vma->vm_pgoff;
> > +	unsigned long off = vma_start_pgoff(vma);
> >  	struct page *page = dma_common_vaddr_to_page(cpu_addr);
> >  	int ret = -ENXIO;
> >
> > @@ -52,7 +52,7 @@ int dma_common_mmap(struct device *dev, struct vm_area_struct *vma,
> >  		return -ENXIO;
> >
> >  	return remap_pfn_range(vma, vma->vm_start,
> > -			page_to_pfn(page) + vma->vm_pgoff,
> > +			page_to_pfn(page) + vma_start_pgoff(vma),
> >  			user_count << PAGE_SHIFT, vma->vm_page_prot);
> >  #else
> >  	return -ENXIO;
> > diff --git a/kernel/events/core.c b/kernel/events/core.c
> > index 954c36e28101..d6d2d557ccb8 100644
> > --- a/kernel/events/core.c
> > +++ b/kernel/events/core.c
> > @@ -6998,7 +6998,7 @@ static void perf_mmap_open(struct vm_area_struct *vma)
> >  	refcount_inc(&event->mmap_count);
> >  	refcount_inc(&event->rb->mmap_count);
> >
> > -	if (vma->vm_pgoff)
> > +	if (vma_start_pgoff(vma))
> >  		refcount_inc(&event->rb->aux_mmap_count);
> >
> >  	if (mapped)
> > @@ -7032,7 +7032,7 @@ static void perf_mmap_close(struct vm_area_struct *vma)
> >  	 * The AUX buffer is strictly a sub-buffer, serialize using aux_mutex
> >  	 * to avoid complications.
> >  	 */
> > -	if (rb_has_aux(rb) && vma->vm_pgoff == rb->aux_pgoff &&
> > +	if (rb_has_aux(rb) && vma_start_pgoff(vma) == rb->aux_pgoff &&
> >  	    refcount_dec_and_mutex_lock(&rb->aux_mmap_count, &rb->aux_mutex)) {
> >  		/*
> >  		 * Stop all AUX events that are writing to this buffer,
> > @@ -7190,7 +7190,8 @@ static int map_range(struct perf_buffer *rb, struct vm_area_struct *vma)
> >  	 */
> >  	for (pagenum = 0; pagenum < nr_pages; pagenum++) {
> >  		unsigned long va = vma->vm_start + PAGE_SIZE * pagenum;
> > -		struct page *page = perf_mmap_to_page(rb, vma->vm_pgoff + pagenum);
> > +		struct page *page = perf_mmap_to_page(rb,
> > +				vma_start_pgoff(vma) + pagenum);
> >
> >  		if (page == NULL) {
> >  			err = -EINVAL;
> > @@ -7348,6 +7349,7 @@ static int perf_mmap_aux(struct vm_area_struct *vma, struct perf_event *event,
> >  	u64 aux_offset, aux_size;
> >  	struct perf_buffer *rb;
> >  	int ret, rb_flags = 0;
> > +	const pgoff_t pgoff_start = vma_start_pgoff(vma);
>
> Variable decs here seem to be in reverse christmas tree order, so perhaps
> move this to the top.

Ack will change on respin.

>
> >
> >  	rb = event->rb;
> >  	if (!rb)
> > @@ -7366,11 +7368,11 @@ static int perf_mmap_aux(struct vm_area_struct *vma, struct perf_event *event,
> >  	if (aux_offset < perf_data_size(rb) + PAGE_SIZE)
> >  		return -EINVAL;
> >
> > -	if (aux_offset != vma->vm_pgoff << PAGE_SHIFT)
> > +	if (aux_offset != pgoff_start << PAGE_SHIFT)
> >  		return -EINVAL;
> >
> >  	/* already mapped with a different offset */
> > -	if (rb_has_aux(rb) && rb->aux_pgoff != vma->vm_pgoff)
> > +	if (rb_has_aux(rb) && rb->aux_pgoff != pgoff_start)
> >  		return -EINVAL;
> >
> >  	if (aux_size != nr_pages * PAGE_SIZE)
> > @@ -7400,7 +7402,7 @@ static int perf_mmap_aux(struct vm_area_struct *vma, struct perf_event *event,
> >  		if (vma->vm_flags & VM_WRITE)
> >  			rb_flags |= RING_BUFFER_WRITABLE;
> >
> > -		ret = rb_alloc_aux(rb, event, vma->vm_pgoff, nr_pages,
> > +		ret = rb_alloc_aux(rb, event, pgoff_start, nr_pages,
> >  				   event->attr.aux_watermark, rb_flags);
> >  		if (ret) {
> >  			refcount_dec(&rb->mmap_count);
> > @@ -7457,7 +7459,7 @@ static int perf_mmap(struct file *file, struct vm_area_struct *vma)
> >  		if (event->state <= PERF_EVENT_STATE_REVOKED)
> >  			return -ENODEV;
> >
> > -		if (vma->vm_pgoff == 0)
> > +		if (!vma_start_pgoff(vma))
> >  			ret = perf_mmap_rb(vma, event, nr_pages);
> >  		else
> >  			ret = perf_mmap_aux(vma, event, nr_pages);
> > @@ -9884,7 +9886,7 @@ static bool perf_addr_filter_vma_adjust(struct perf_addr_filter *filter,
> >  					struct perf_addr_filter_range *fr)
> >  {
> >  	unsigned long vma_size = vma->vm_end - vma->vm_start;
> > -	unsigned long off = vma->vm_pgoff << PAGE_SHIFT;
> > +	unsigned long off = vma_start_pgoff(vma) << PAGE_SHIFT;
> >  	struct file *file = vma->vm_file;
> >
> >  	if (!perf_addr_filter_match(filter, file, off, vma_size))
> > @@ -9974,7 +9976,7 @@ void perf_event_mmap(struct vm_area_struct *vma)
> >  			/* .tid */
> >  			.start  = vma->vm_start,
> >  			.len    = vma->vm_end - vma->vm_start,
> > -			.pgoff  = (u64)vma->vm_pgoff << PAGE_SHIFT,
> > +			.pgoff  = (u64)vma_start_pgoff(vma) << PAGE_SHIFT,
> >  		},
> >  		/* .maj (attr_mmap2 only) */
> >  		/* .min (attr_mmap2 only) */
> > diff --git a/kernel/events/uprobes.c b/kernel/events/uprobes.c
> > index f23cebacbc6d..244651380ca1 100644
> > --- a/kernel/events/uprobes.c
> > +++ b/kernel/events/uprobes.c
> > @@ -144,12 +144,14 @@ static bool valid_vma(struct vm_area_struct *vma, bool is_register)
> >
> >  static unsigned long offset_to_vaddr(struct vm_area_struct *vma, loff_t offset)
> >  {
> > -	return vma->vm_start + offset - ((loff_t)vma->vm_pgoff << PAGE_SHIFT);
> > +	return vma->vm_start + offset -
> > +		((loff_t)vma_start_pgoff(vma) << PAGE_SHIFT);
> >  }
> >
> >  static loff_t vaddr_to_offset(struct vm_area_struct *vma, unsigned long vaddr)
> >  {
> > -	return ((loff_t)vma->vm_pgoff << PAGE_SHIFT) + (vaddr - vma->vm_start);
> > +	return ((loff_t)vma_start_pgoff(vma) << PAGE_SHIFT) +
> > +		(vaddr - vma->vm_start);
> >  }
>
> Something we've seen in this series is that perhaps something like
>
> static inline loff_t vma_start_off(vma)
> {
> 	return ((loff_t) vma_start_pgoff(vma)) << PAGE_SHIFT;
> }
>
> could be worth it.

Yeah I already thought about this kind of thing, but in the end decided against
it at least for now, maybe I could revisit with something like that added
though...

But given this series is being held off on already for acceptance, I'm not sure
adding _yet more_ changes will be welcomed.

Plus I worry people will get confused.

There's 2 forms I noticed:

1. effectively: linear_page_index(vma, address) << PAGE_SHIFT

I wanted to rewrite this as such, but you can't, because of course vaddr might
have non-page aligned bits (or tags) that you lose by doing that. So ugh.

You'd then need to write a slightly nuanced version like:

static inline unsigned long vma_offset(const struct vm_area_struct *vma,
				       const unsigned long address)
{
	/* Retains page offset and tags. */
	return address - vma->vm_start;
}

static inline unsigned long linear_page_offset(const struct vm_area_struct *vma,
					       const unsigned long address)
{
	const unsigned long addr = vma_start_pgoff(vma) << PAGE_SHIFT;

	addr += linear_delta(vma, address);
	return addr;
}

(Could also do:)

static inline pgoff_t linear_page_delta(const struct vm_area_struct *vma,
					const unsigned long address)
{
	return vma_offset(vma, address) >> PAGE_SHIFT;
}

BUT.

I think this will confuse people. I already in a previous version of this series
named linear_page_delta() as linear_page_offset() and then changed it to avoid
confusion.

And I'm not sure it's really all that useful. Perhaps retaining vma_offset()
would be though.

2.

This is a much more useful form I noticed, effectively drivers doing the inverse
of a linear_page_index() to get the address:

static inline unsigned long linear_page_address(const struct vm_area_struct *vma,
						const pgoff_t pgoff)
{
	const pgoff_t page_delta = pgoff - vma_start_pgoff(vma);
	const unsigned long offset = page_delta << PAGE_SHIFT;

	return vma->vm_start + offset;
}

This is one that I think makes more sense.

But in general, I'd rather hold off from yet more churn here.

I'm making these changes to establish a basis for virtual page offsets
introduced in [0], rather than just cleaning up in general.

These changes are really to make it such that we more consistently use these
forms, so when I introduce the virt pgoff versions, it fits canonically into
that.

And also beacuse I may as well improve kernel code as I go :)

But I think adding yet more doesn't really serve the same purpose.

But it's food for a follow up perhaps?

>
> >
> >  /**
> > @@ -1482,7 +1484,7 @@ static int unapply_uprobe(struct uprobe *uprobe, struct mm_struct *mm)
> >  		    file_inode(vma->vm_file) != uprobe->inode)
> >  			continue;
> >
> > -		offset = (loff_t)vma->vm_pgoff << PAGE_SHIFT;
> > +		offset = (loff_t)vma_start_pgoff(vma) << PAGE_SHIFT;
> >  		if (uprobe->offset <  offset ||
> >  		    uprobe->offset >= offset + vma->vm_end - vma->vm_start)
> >  			continue;
> > @@ -2453,7 +2455,8 @@ static struct uprobe *find_active_uprobe_speculative(unsigned long bp_vaddr)
> >  	if (!vm_file)
> >  		return NULL;
> >
> > -	offset = (loff_t)(vma->vm_pgoff << PAGE_SHIFT) + (bp_vaddr - vma->vm_start);
> > +	offset = (loff_t)(vma_start_pgoff(vma) << PAGE_SHIFT) +
> > +		(bp_vaddr - vma->vm_start);
>
> This is more extremely contrived logic that could be better expressed as
>
> loff_t vma_linear_off(vma, bp_vaddr);

See above.

>
> >  	uprobe = find_uprobe_rcu(vm_file->f_inode, offset);
> >  	if (!uprobe)
> >  		return NULL;
> > diff --git a/kernel/kcov.c b/kernel/kcov.c
> > index 1df373fb562b..b19b473c366a 100644
> > --- a/kernel/kcov.c
> > +++ b/kernel/kcov.c
> > @@ -512,7 +512,7 @@ static int kcov_mmap(struct file *filep, struct vm_area_struct *vma)
> >
> >  	spin_lock_irqsave(&kcov->lock, flags);
> >  	size = kcov->size * sizeof(unsigned long);
> > -	if (kcov->area == NULL || vma->vm_pgoff != 0 ||
> > +	if (kcov->area == NULL || vma_start_pgoff(vma) ||
>
> as a nit, perhaps                 vma_start_pgoff(vma) > 0
> would be a little more idiomatic.

I felt the if (<val>) form was more idiomatic?

>
> >  	    vma->vm_end - vma->vm_start != size) {
> >  		res = -EINVAL;
> >  		goto exit;
> > diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c
> > index 56a328e94395..dfa493d54ef9 100644
> > --- a/kernel/trace/ring_buffer.c
> > +++ b/kernel/trace/ring_buffer.c
> > @@ -7613,7 +7613,8 @@ static int __rb_inc_dec_mapped(struct ring_buffer_per_cpu *cpu_buffer,
> >  static int __rb_map_vma(struct ring_buffer_per_cpu *cpu_buffer,
> >  			struct vm_area_struct *vma)
> >  {
> > -	unsigned long nr_subbufs, nr_pages, nr_vma_pages, pgoff = vma->vm_pgoff;
> > +	unsigned long nr_subbufs, nr_pages, nr_vma_pages;
> > +	pgoff_t pgoff = vma_start_pgoff(vma);
> >  	unsigned int subbuf_pages, subbuf_order;
> >  	struct page **pages __free(kfree) = NULL;
> >  	int p = 0, s = 0;
>
> Anyway, in general:
>
> Acked-by: Pedro Falcato <pfalcato@suse.de>

Thanks!

>
> --
> Pedro

[0]:https://lore.kernel.org/linux-mm/cover.1782745153.git.ljs@kernel.org/

  reply	other threads:[~2026-07-02 11:31 UTC|newest]

Thread overview: 95+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-06-29 12:23 [PATCH 00/30] mm: make VMA page offset handling more consistent Lorenzo Stoakes
2026-06-29 12:23 ` [PATCH 01/30] mm: move vma_start_pgoff() into mm.h and clean up Lorenzo Stoakes
2026-06-29 15:27   ` Gregory Price
2026-06-30 16:10   ` Pedro Falcato
2026-07-01  9:42     ` Lorenzo Stoakes
2026-07-03 13:36   ` Vlastimil Babka
2026-06-29 12:23 ` [PATCH 02/30] mm: add kdoc comments for vma_start/last_pgoff() Lorenzo Stoakes
2026-06-29 15:31   ` Gregory Price
2026-06-30 16:11   ` Pedro Falcato
2026-07-03 14:19   ` Vlastimil Babka
2026-06-29 12:23 ` [PATCH 03/30] tools/testing/vma: use vma_start_pgoff() in merge tests Lorenzo Stoakes
2026-06-29 15:40   ` Gregory Price
2026-06-29 16:35     ` Lorenzo Stoakes
2026-06-30 16:12   ` Pedro Falcato
2026-07-03 14:34   ` Vlastimil Babka
2026-06-29 12:23 ` [PATCH 04/30] mm: introduce and use vma_end_pgoff() Lorenzo Stoakes
2026-06-29 15:54   ` Gregory Price
2026-06-30 16:13   ` Pedro Falcato
2026-07-03 14:38   ` Vlastimil Babka
2026-06-29 12:23 ` [PATCH 05/30] mm/rmap: update mm/interval_tree.c comments Lorenzo Stoakes
2026-06-29 16:01   ` Gregory Price
2026-06-29 16:41     ` Lorenzo Stoakes
2026-06-29 17:11       ` Gregory Price
2026-06-29 17:40         ` Lorenzo Stoakes
2026-06-30 16:16   ` Pedro Falcato
2026-07-01  9:55     ` Lorenzo Stoakes
2026-06-29 12:23 ` [PATCH 06/30] mm/rmap: parameterise vma_interval_tree_*() by address_space Lorenzo Stoakes
2026-06-30 16:19   ` Pedro Falcato
2026-07-01  9:56     ` Lorenzo Stoakes
2026-06-29 12:23 ` [PATCH 07/30] mm/rmap: elide unnecessary static inline's in interval_tree.c Lorenzo Stoakes
2026-06-30 15:30   ` Gregory Price
2026-06-30 16:22   ` Pedro Falcato
2026-06-29 12:23 ` [PATCH 08/30] mm/rmap: rename vma_interval_tree_*() to mapping_interval_tree_*() Lorenzo Stoakes
2026-06-30 15:42   ` Gregory Price
2026-06-30 16:28   ` Pedro Falcato
2026-07-01 10:14     ` Lorenzo Stoakes
2026-06-29 12:23 ` [PATCH 09/30] mm/rmap: parameterise anon_vma_interval_tree_*() by anon_vma Lorenzo Stoakes
2026-06-30 15:46   ` Gregory Price
2026-06-30 15:49     ` Lorenzo Stoakes
2026-06-30 15:55       ` Gregory Price
2026-06-30 15:59         ` Lorenzo Stoakes
2026-06-30 16:32   ` Pedro Falcato
2026-07-01 10:18     ` Lorenzo Stoakes
2026-06-29 12:23 ` [PATCH 10/30] MAINTAINERS: Move mm/interval_tree.c to rmap section Lorenzo Stoakes
2026-06-30 16:33   ` Pedro Falcato
2026-06-29 12:23 ` [PATCH 11/30] mm/vma: introduce and use vmg_pages(), vmg_[start, end]_pgoff() Lorenzo Stoakes
2026-06-30 16:35   ` Pedro Falcato
2026-06-30 16:35     ` Pedro Falcato
2026-06-29 12:23 ` [PATCH 12/30] mm/vma: clean up anon_vma_compatible() Lorenzo Stoakes
2026-06-30 16:36   ` Pedro Falcato
2026-07-01 10:20     ` Lorenzo Stoakes
2026-06-29 12:23 ` [PATCH 13/30] mm/vma: refactor vmg_adjust_set_range() for clarity Lorenzo Stoakes
2026-07-02 10:37   ` Pedro Falcato
2026-07-02 10:50     ` Lorenzo Stoakes
2026-06-29 12:23 ` [PATCH 14/30] mm/vma: minor cleanup of expand_[upwards, downwards]() Lorenzo Stoakes
2026-07-02 10:41   ` Pedro Falcato
2026-06-29 12:23 ` [PATCH 15/30] mm: introduce and use linear_page_delta() Lorenzo Stoakes
2026-07-02 10:42   ` Pedro Falcato
2026-06-29 12:23 ` [PATCH 16/30] mm/vma: use vma_start_pgoff(), linear_page_index() in mm code Lorenzo Stoakes
2026-06-30  0:11   ` SJ Park
2026-07-02 10:47   ` Pedro Falcato
2026-07-02 10:49     ` Lorenzo Stoakes
2026-06-29 12:23 ` [PATCH 17/30] mm: prefer vma_[start,end]_pgoff() to vma->vm_pgoff in kernel/ Lorenzo Stoakes
2026-06-29 12:23   ` [PATCH 17/30] mm: prefer vma_[start, end]_pgoff() " Lorenzo Stoakes
2026-07-02 11:01   ` [PATCH 17/30] mm: prefer vma_[start,end]_pgoff() " Pedro Falcato
2026-07-02 11:30     ` Lorenzo Stoakes [this message]
2026-06-29 12:23 ` [PATCH 18/30] mm/vma: remove duplicative vma_pgoff_offset() helper Lorenzo Stoakes
2026-07-02 11:02   ` Pedro Falcato
2026-06-29 12:23 ` [PATCH 19/30] mm: use linear_page_[index, delta]() consistently Lorenzo Stoakes
2026-06-29 13:56   ` Thomas Zimmermann
2026-06-29 14:56     ` Lorenzo Stoakes
2026-07-02 11:04   ` Pedro Falcato
2026-06-29 12:23 ` [PATCH 20/30] mm/vma: introduce vma_assert_can_modify() Lorenzo Stoakes
2026-07-02 11:16   ` Pedro Falcato
2026-07-02 12:16     ` Lorenzo Stoakes
2026-06-29 12:23 ` [PATCH 21/30] mm/vma: add and use vma_[add/sub]_pgoff() Lorenzo Stoakes
2026-07-02 11:20   ` Pedro Falcato
2026-06-29 12:23 ` [PATCH 22/30] mm/vma: move __install_special_mapping() to vma.c Lorenzo Stoakes
2026-07-02 11:22   ` Pedro Falcato
2026-06-29 12:23 ` [PATCH 23/30] mm/vma: make vma_set_range() static, drop insert_vm_struct() decl Lorenzo Stoakes
2026-07-02 11:25   ` Pedro Falcato
2026-06-29 12:23 ` [PATCH 24/30] mm/vma: update vma_shrink() to not pass unnecessary pgoff parameter Lorenzo Stoakes
2026-07-02 11:27   ` Pedro Falcato
2026-06-29 12:23 ` [PATCH 25/30] mm/vma: update vmg_adjust_set_range() to offset pgoff instead Lorenzo Stoakes
2026-07-02 11:29   ` Pedro Falcato
2026-06-29 12:23 ` [PATCH 26/30] mm/vma: introduce and use vma_set_pgoff() Lorenzo Stoakes
2026-07-02 11:34   ` Pedro Falcato
2026-06-29 12:23 ` [PATCH 27/30] mm/vma: correct incorrect vma.h inclusion Lorenzo Stoakes
2026-07-02 11:40   ` Pedro Falcato
2026-06-29 12:23 ` [PATCH 28/30] mm/vma: use guard clauses in can_vma_merge_[before, after]() Lorenzo Stoakes
2026-07-02 11:41   ` Pedro Falcato
2026-06-29 12:23 ` [PATCH 29/30] tools/testing/vma: default VMA flag bits to 64-bit Lorenzo Stoakes
2026-07-02 11:44   ` Pedro Falcato
2026-06-29 12:23 ` [PATCH 30/30] tools/testing/vma: output compared expression on ASSERT_[EQ, NE]() Lorenzo Stoakes
2026-07-02 11:53   ` Pedro Falcato

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=akZGqclqQ6gS12Vv@lucifer \
    --to=ljs@kernel.org \
    --cc=James.Bottomley@hansenpartnership.com \
    --cc=abbotti@mev.co.uk \
    --cc=acme@kernel.org \
    --cc=airlied@gmail.com \
    --cc=akpm@linux-foundation.org \
    --cc=alex@shazbot.org \
    --cc=ankita@nvidia.com \
    --cc=bp@alien8.de \
    --cc=brauner@kernel.org \
    --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=dinguyen@kernel.org \
    --cc=djbw@kernel.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=etnaviv@lists.freedesktop.org \
    --cc=freedreno@lists.freedesktop.org \
    --cc=harry@kernel.org \
    --cc=hsweeten@visionengravers.com \
    --cc=hughd@google.com \
    --cc=iommu@lists.linux.dev \
    --cc=jannh@google.com \
    --cc=jarkko@kernel.org \
    --cc=jonathanh@nvidia.com \
    --cc=kasan-dev@googlegroups.com \
    --cc=kees@kernel.org \
    --cc=kvm@vger.kernel.org \
    --cc=l.stach@pengutronix.de \
    --cc=liam@infradead.org \
    --cc=linmiaohe@huawei.com \
    --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=mhiramat@kernel.org \
    --cc=mingo@redhat.com \
    --cc=mperttunen@nvidia.com \
    --cc=mripard@kernel.org \
    --cc=muchun.song@linux.dev \
    --cc=namhyung@kernel.org \
    --cc=nvdimm@lists.linux.dev \
    --cc=oleg@redhat.com \
    --cc=osalvador@suse.de \
    --cc=patrik.r.jakobsson@gmail.com \
    --cc=pbonzini@redhat.com \
    --cc=peterz@infradead.org \
    --cc=pfalcato@suse.de \
    --cc=ray.huang@amd.com \
    --cc=riel@surriel.com \
    --cc=robin.clark@oss.qualcomm.com \
    --cc=rostedt@goodmis.org \
    --cc=rppt@kernel.org \
    --cc=schuster.simon@siemens-energy.com \
    --cc=simona@ffwll.ch \
    --cc=sj@kernel.org \
    --cc=surenb@google.com \
    --cc=tglx@kernel.org \
    --cc=thierry.reding@kernel.org \
    --cc=tomi.valkeinen@ideasonboard.com \
    --cc=tzimmermann@suse.de \
    --cc=viro@zeniv.linux.org.uk \
    --cc=willy@infradead.org \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.