2022-10-09 18:03:26

by Christophe Leroy

[permalink] [raw]
Subject: [PATCH] powerpc: Use swapper_pg_dir instead of init_mm->pgd

init_mm->pgd is always swapper_pg_dir[] which is known
at build time.

Directly use the later instead of loading it from init_mm
struct at every time.

Signed-off-by: Christophe Leroy <[email protected]>
---
arch/powerpc/include/asm/pgtable.h | 3 +++
1 file changed, 3 insertions(+)

diff --git a/arch/powerpc/include/asm/pgtable.h b/arch/powerpc/include/asm/pgtable.h
index 283f40d05a4d..f6843e6294d9 100644
--- a/arch/powerpc/include/asm/pgtable.h
+++ b/arch/powerpc/include/asm/pgtable.h
@@ -48,6 +48,9 @@ struct mm_struct;
/* Keep these as a macros to avoid include dependency mess */
#define pte_page(x) pfn_to_page(pte_pfn(x))
#define mk_pte(page, pgprot) pfn_pte(page_to_pfn(page), (pgprot))
+
+#define pgd_offset_k(address) pgd_offset_pgd(swapper_pg_dir, (address))
+
/*
* Select all bits except the pfn
*/
--
2.37.1


2024-03-16 11:55:36

by Christophe Leroy

[permalink] [raw]
Subject: Re: [PATCH] powerpc: Use swapper_pg_dir instead of init_mm->pgd



Le 09/10/2022 à 19:31, Christophe Leroy a écrit :
> init_mm->pgd is always swapper_pg_dir[] which is known
> at build time.
>
> Directly use the later instead of loading it from init_mm
> struct at every time.
>
> Signed-off-by: Christophe Leroy <[email protected]>

Dropping this patch after feedback from Michael:

no other arches do it. (swapper_pg_dir)

It would also make us the only arch other than ia64 (which is old and
probably going to get removed soon) defining pgd_offset_k().


> ---
> arch/powerpc/include/asm/pgtable.h | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/arch/powerpc/include/asm/pgtable.h b/arch/powerpc/include/asm/pgtable.h
> index 283f40d05a4d..f6843e6294d9 100644
> --- a/arch/powerpc/include/asm/pgtable.h
> +++ b/arch/powerpc/include/asm/pgtable.h
> @@ -48,6 +48,9 @@ struct mm_struct;
> /* Keep these as a macros to avoid include dependency mess */
> #define pte_page(x) pfn_to_page(pte_pfn(x))
> #define mk_pte(page, pgprot) pfn_pte(page_to_pfn(page), (pgprot))
> +
> +#define pgd_offset_k(address) pgd_offset_pgd(swapper_pg_dir, (address))
> +
> /*
> * Select all bits except the pfn
> */