All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ankur Arora <ankur.a.arora@oracle.com>
To: Ankur Arora <ankur.a.arora@oracle.com>
Cc: David Hildenbrand <david@redhat.com>,
	linux-kernel@vger.kernel.org, linux-mm@kvack.org, x86@kernel.org,
	akpm@linux-foundation.org, bp@alien8.de,
	dave.hansen@linux.intel.com, hpa@zytor.com, mingo@redhat.com,
	mjguzik@gmail.com, luto@kernel.org, peterz@infradead.org,
	acme@kernel.org, namhyung@kernel.org, tglx@linutronix.de,
	willy@infradead.org, raghavendra.kt@amd.com,
	boris.ostrovsky@oracle.com, konrad.wilk@oracle.com
Subject: Re: [PATCH v6 11/15] mm: define clear_pages(), clear_user_pages()
Date: Fri, 12 Sep 2025 14:17:13 -0700	[thread overview]
Message-ID: <87o6rfid5y.fsf@oracle.com> (raw)
In-Reply-To: <87frd4p49o.fsf@oracle.com>


Ankur Arora <ankur.a.arora@oracle.com> writes:

> David Hildenbrand <david@redhat.com> writes:
>
>> On 02.09.25 10:08, Ankur Arora wrote:

[ ... ]

>>> + * clear_pages() - clear kernel page range.
>>> + * @addr: start address of page range
>>> + * @npages: number of pages
>>> + *
>>> + * Assumes that (@addr, +@npages) references a kernel region.
>>> + * Like clear_page(), this does absolutely no exception handling.
>>> + */
>>> +static inline void clear_pages(void *addr, unsigned int npages)
>>> +{
>>> +	for (int i = 0; i < npages; i++)
>>> +		clear_page(addr + i * PAGE_SIZE);
>>
>> If we know that we will clear at least one page (which we can document)
>>
>> do {
>> 	clear_page(addr);
>> 	addr += PAGE_SIZE;
>> } while (--npages);
>>
>> Similarly for the case below.
>
> Ack. Though how about the following instead? Slightly less clear but
> probably better suited for caching the likely access pattern.
>
>    addr += (npages - 1) * PAGE_SIZE;
>    do {
>            clear_page(addr);
>            addr -= PAGE_SIZE;
>    } while (--npages);

Decided against using this reverse access pattern. I would need
to replicate it at three places  (clear_pages(), clear_user_pages() and
clear_highpages()) and this kind of policy should probably be dictated
from folio_zero_user() or clear_contig_pages() etc.

--
ankur


  reply	other threads:[~2025-09-12 21:17 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-09-02  8:08 [PATCH v6 00/15] mm: folio_zero_user: clear contiguous pages Ankur Arora
2025-09-02  8:08 ` [PATCH v6 01/15] perf bench mem: Remove repetition around time measurement Ankur Arora
2025-09-02  8:08 ` [PATCH v6 02/15] perf bench mem: Defer type munging of size to float Ankur Arora
2025-09-02  8:08 ` [PATCH v6 03/15] perf bench mem: Move mem op parameters into a structure Ankur Arora
2025-09-02  8:08 ` [PATCH v6 04/15] perf bench mem: Pull out init/fini logic Ankur Arora
2025-09-02  8:08 ` [PATCH v6 05/15] perf bench mem: Switch from zalloc() to mmap() Ankur Arora
2025-09-02  8:08 ` [PATCH v6 06/15] perf bench mem: Allow mapping of hugepages Ankur Arora
2025-09-02  8:08 ` [PATCH v6 07/15] perf bench mem: Allow chunking on a memory region Ankur Arora
2025-09-02  8:08 ` [PATCH v6 08/15] perf bench mem: Refactor mem_options Ankur Arora
2025-09-02  8:08 ` [PATCH v6 09/15] perf bench mem: Add mmap() workloads Ankur Arora
2025-09-02  8:08 ` [PATCH v6 10/15] x86/mm: Simplify clear_page_* Ankur Arora
2025-09-02  8:08 ` [PATCH v6 11/15] mm: define clear_pages(), clear_user_pages() Ankur Arora
2025-09-02 19:56   ` kernel test robot
2025-09-02 20:09   ` kernel test robot
2025-09-02 20:16   ` David Hildenbrand
2025-09-03  4:08     ` Ankur Arora
2025-09-12 21:17       ` Ankur Arora [this message]
2025-09-02  8:08 ` [PATCH v6 12/15] highmem: define clear_highpages() Ankur Arora
2025-09-02 20:20   ` David Hildenbrand
2025-09-03  4:09     ` Ankur Arora
2025-09-02  8:08 ` [PATCH v6 13/15] mm: memory: support clearing page ranges Ankur Arora
2025-09-02 19:46   ` kernel test robot
2025-09-02  8:08 ` [PATCH v6 14/15] x86/clear_page: Introduce clear_pages() Ankur Arora
2025-09-02  8:08 ` [PATCH v6 15/15] x86/clear_pages: Support clearing of page-extents Ankur Arora
2025-09-12 18:33 ` [PATCH v6 00/15] mm: folio_zero_user: clear contiguous pages Arnaldo Carvalho de Melo
2025-09-12 21:12   ` Ankur Arora

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=87o6rfid5y.fsf@oracle.com \
    --to=ankur.a.arora@oracle.com \
    --cc=acme@kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=boris.ostrovsky@oracle.com \
    --cc=bp@alien8.de \
    --cc=dave.hansen@linux.intel.com \
    --cc=david@redhat.com \
    --cc=hpa@zytor.com \
    --cc=konrad.wilk@oracle.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=luto@kernel.org \
    --cc=mingo@redhat.com \
    --cc=mjguzik@gmail.com \
    --cc=namhyung@kernel.org \
    --cc=peterz@infradead.org \
    --cc=raghavendra.kt@amd.com \
    --cc=tglx@linutronix.de \
    --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.