[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <c96ff5f1-bc4b-462d-96ab-3aaa73ea334a@kernel.org>
Date: Tue, 18 Nov 2025 08:32:46 +0100
From: "David Hildenbrand (Red Hat)" <david@...nel.org>
To: Ankur Arora <ankur.a.arora@...cle.com>, linux-kernel@...r.kernel.org,
linux-mm@...ck.org, x86@...nel.org
Cc: akpm@...ux-foundation.org, bp@...en8.de, dave.hansen@...ux.intel.com,
hpa@...or.com, mingo@...hat.com, mjguzik@...il.com, luto@...nel.org,
peterz@...radead.org, acme@...nel.org, namhyung@...nel.org,
tglx@...utronix.de, willy@...radead.org, raghavendra.kt@....com,
boris.ostrovsky@...cle.com, konrad.wilk@...cle.com
Subject: Re: [PATCH v8 1/7] treewide: provide a generic clear_user_page()
variant
On 27.10.25 21:21, Ankur Arora wrote:
> From: David Hildenbrand <david@...hat.com>
>
> Let's drop all variants that effectively map to clear_page() and
> provide it in a generic variant instead.
>
> We'll use __HAVE_ARCH_CLEAR_USER_PAGE, similar to
> __HAVE_ARCH_COPY_USER_HIGHPAGE, to indicate whether an architecture
> provides it's own variant.
>
> We have to be a bit careful if an architecture provides a custom
> clear_user_highpage(), because then it's very likely that some special
> flushing magic is happening behind the scenes.
>
> Maybe at some point these should be CONFIG_ options.
>
> Note that for parisc, clear_page() and clear_user_page() map to
> clear_page_asm(), so we can just get rid of the custom clear_user_page()
> implementation. There is a clear_user_page_asm() function on parisc,
> that seems to be unused. Not sure what's up with that.
>
> Signed-off-by: David Hildenbrand <david@...hat.com>
> ---
> arch/alpha/include/asm/page.h | 1 -
> arch/arc/include/asm/page.h | 2 ++
> arch/arm/include/asm/page-nommu.h | 1 -
> arch/arm64/include/asm/page.h | 1 -
> arch/csky/abiv1/inc/abi/page.h | 1 +
> arch/csky/abiv2/inc/abi/page.h | 7 -------
> arch/hexagon/include/asm/page.h | 1 -
> arch/loongarch/include/asm/page.h | 1 -
> arch/m68k/include/asm/page_mm.h | 1 +
> arch/m68k/include/asm/page_no.h | 1 -
> arch/microblaze/include/asm/page.h | 1 -
> arch/mips/include/asm/page.h | 1 +
> arch/nios2/include/asm/page.h | 1 +
> arch/openrisc/include/asm/page.h | 1 -
> arch/parisc/include/asm/page.h | 1 -
> arch/powerpc/include/asm/page.h | 1 +
> arch/riscv/include/asm/page.h | 1 -
> arch/s390/include/asm/page.h | 1 -
> arch/sparc/include/asm/page_32.h | 2 ++
> arch/sparc/include/asm/page_64.h | 1 +
> arch/um/include/asm/page.h | 1 -
> arch/x86/include/asm/page.h | 6 ------
> arch/xtensa/include/asm/page.h | 1 -
> include/linux/mm.h | 22 ++++++++++++++++++++++
> 24 files changed, 32 insertions(+), 26 deletions(-)
>
> diff --git a/arch/alpha/include/asm/page.h b/arch/alpha/include/asm/page.h
> index 5ec4c77e432e..d71ef845deca 100644
> --- a/arch/alpha/include/asm/page.h
> +++ b/arch/alpha/include/asm/page.h
> @@ -11,7 +11,6 @@
> #define STRICT_MM_TYPECHECKS
>
> extern void clear_page(void *page);
> -#define clear_user_page(page, vaddr, pg) clear_page(page)
>
> #define vma_alloc_zeroed_movable_folio(vma, vaddr) \
> vma_alloc_folio(GFP_HIGHUSER_MOVABLE | __GFP_ZERO, 0, vma, vaddr)
> diff --git a/arch/arc/include/asm/page.h b/arch/arc/include/asm/page.h
> index 9720fe6b2c24..cb4d69b473e6 100644
> --- a/arch/arc/include/asm/page.h
> +++ b/arch/arc/include/asm/page.h
> @@ -32,6 +32,8 @@ struct page;
>
> void copy_user_highpage(struct page *to, struct page *from,
> unsigned long u_vaddr, struct vm_area_struct *vma);
> +
> +#define __HAVE_ARCH_CLEAR_USER_PAGE
After talking to Linus, the preferred way here is using
#define clear_user_page clear_user_page
Can you adjust the patch (+description) to avoid
__HAVE_ARCH_CLEAR_USER_PAGE? If you want me to do it, just let me know.
--
Cheers
David
Powered by blists - more mailing lists