All of lore.kernel.org
 help / color / mirror / Atom feed
From: "David Hildenbrand (Arm)" <david@kernel.org>
To: "Lorenzo Stoakes (Oracle)" <ljs@kernel.org>, xu.xin16@zte.com.cn
Cc: hughd@google.com, akpm@linux-foundation.org,
	chengming.zhou@linux.dev, wang.yaxin@zte.com.cn,
	yang.yang29@zte.com.cn, michel@lespinasse.org,
	linux-mm@kvack.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v3 2/2] ksm: Optimize rmap_walk_ksm by passing a suitable address range
Date: Wed, 8 Apr 2026 14:57:10 +0200	[thread overview]
Message-ID: <8332aedb-e499-4789-8f46-832df8d60224@kernel.org> (raw)
In-Reply-To: <adTPQSb-qSSHviJN@lucifer>

On 4/7/26 11:36, Lorenzo Stoakes (Oracle) wrote:
> On Tue, Apr 07, 2026 at 02:21:41PM +0800, xu.xin16@zte.com.cn wrote:
>>>
>>> I'd completely forgotten that patch by now!  But it's dealing with a
>>> different issue; and note how it's intentionally leaving MADV_MERGEABLE
>>> on the vma itself, just using MADV_UNMERGEABLE (with &dummy) as an
>>> interface to CoW the KSM pages at that time, letting them be remerged after.
> 
> Hmm yeah, we mark them unmergeable but don't update the VMA flags (since using
> &dummy), so they can just be merged later right?
> 
> And then the:
> 
> void rmap_walk_ksm(struct folio *folio, struct rmap_walk_control *rwc)
> {
> 	...
> 		const pgoff_t pgoff = rmap_item->address >> PAGE_SHIFT;
> 		...
> 		anon_vma_interval_tree_foreach(vmac, &anon_vma->rb_root,
> 					       pgoff, pgoff) {
> 			...
> 		}
> 	...
> }
> 
> Would _assume_ that folio->pgoff == addr >> PAGE_SHIFT, which will no longer be
> the case here?

I'm wondering whether we could figure the pgoff out, somehow, so we
wouldn't have to store it elsewhere.

What we need is essentially what __folio_set_anon() would have done for
the original folio we replaced.

	folio->index = linear_page_index(vma, address);

Could we obtain that from the anon_vma assigned to our rmap_item?

pgoff_t pgoff;

pgoff = (rmap_item->address - anon_vma->vma->vm_start) >> PAGE_SHIFT;
pgoff += anon_vma->vma->vm_pgoff;

It would be the same adjustment everywhere we look in child processes,
because the moment they would mremap() would be where we would have
unshared.

Just a thought after reading avc_start_pgoff ...

-- 
Cheers,

David


  reply	other threads:[~2026-04-08 12:57 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-02-12 11:28 [PATCH v3 0/2] KSM: Optimizations for rmap_walk_ksm xu.xin16
2026-02-12 11:29 ` [PATCH v3 1/2] ksm: Initialize the addr only once in rmap_walk_ksm xu.xin16
2026-02-12 11:30 ` [PATCH v3 2/2] ksm: Optimize rmap_walk_ksm by passing a suitable address range xu.xin16
2026-02-12 12:21   ` David Hildenbrand (Arm)
2026-04-05  4:44   ` Hugh Dickins
2026-04-05 21:01     ` Andrew Morton
2026-04-07  9:43       ` Lorenzo Stoakes (Oracle)
2026-04-07 21:21         ` Andrew Morton
2026-04-08  6:29           ` Lorenzo Stoakes
2026-04-06  1:58     ` xu.xin16
2026-04-06  5:35       ` Hugh Dickins
2026-04-07  6:21         ` xu.xin16
2026-04-07  9:36           ` Lorenzo Stoakes (Oracle)
2026-04-08 12:57             ` David Hildenbrand (Arm) [this message]
2026-04-09  9:18               ` Lorenzo Stoakes
2026-04-09  9:37                 ` David Hildenbrand (Arm)
2026-04-09  9:41                   ` David Hildenbrand (Arm)
2026-04-09  9:53                     ` Lorenzo Stoakes
2026-04-09  9:56                       ` David Hildenbrand (Arm)
2026-04-09  9:55                     ` David Hildenbrand (Arm)
2026-04-09  9:59                       ` Lorenzo Stoakes
2026-04-09 10:56                       ` 答复: " xu.xin16
2026-04-09 11:59                         ` David Hildenbrand (Arm)
2026-04-09 12:26                           ` David Hildenbrand (Arm)
2026-04-10  8:06                             ` xu.xin16
2026-04-10  9:06                               ` David Hildenbrand (Arm)
2026-04-09 10:06                 ` xu.xin16
2026-04-09 10:09                   ` Lorenzo Stoakes
2026-04-06  9:21     ` David Hildenbrand (arm)
2026-04-06  9:23       ` David Hildenbrand (arm)
2026-04-07  9:39     ` Lorenzo Stoakes (Oracle)

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=8332aedb-e499-4789-8f46-832df8d60224@kernel.org \
    --to=david@kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=chengming.zhou@linux.dev \
    --cc=hughd@google.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=ljs@kernel.org \
    --cc=michel@lespinasse.org \
    --cc=wang.yaxin@zte.com.cn \
    --cc=xu.xin16@zte.com.cn \
    --cc=yang.yang29@zte.com.cn \
    /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.