arch: make PxD_ORDER generically available
Subsystems (10)
v2 cover arch: make PxD_ORDER generically available
From: Mike Rapoport <[email protected]>
v2 changes:
* Drop extra blank line in arch/loongarch/kernel/asm-offsets.c (patch 12)
* Add patch 15 that renames PMD_ORDER to PMD_ENTRY_ORDER in arch/arm/kernel/head.S
v1: https://lore.kernel.org/all/[email protected]
v1 cover letter:
The question what does PxD_ORDER define raises from time to time and there is still a conflict between MIPS and DAX definitions.
Some time ago Matthew Wilcox suggested to use PMD_TABLE_ORDER to define the order of page table allocation:
[1] https://lore.kernel.org/linux-arch/[email protected]/
The parisc patch made it in, but mips didn't.
Now mips defines from asm/include/pgtable.h were copied to loongarch which made it worse.
Let's deal with it once and for all and rename PxD_ORDER defines to PxD_TABLE_ORDER or just drop them when the only possible order of page table is 0.
I think the best way to merge this via mm tree with acks from arch maintainers.
Matthew Wilcox (Oracle) (1):
mips: Rename PMD_ORDER to PMD_TABLE_ORDER
Mike Rapoport (14):
csky: drop definition of PTE_ORDER
csky: drop definition of PGD_ORDER
mips: Rename PUD_ORDER to PUD_TABLE_ORDER
mips: drop definitions of PTE_ORDER
mips: Rename PGD_ORDER to PGD_TABLE_ORDER
nios2: drop definition of PTE_ORDER
nios2: drop definition of PGD_ORDER
loongarch: drop definition of PTE_ORDER
loongarch: drop definition of PMD_ORDER
loongarch: drop definition of PUD_ORDER
loongarch: drop definition of PGD_ORDER
parisc: Rename PGD_ORDER to PGD_TABLE_ORDER
xtensa: drop definition of PGD_ORDER
ARM: head.S: rename PMD_ORDER to PMD_ENTRY_ORDER
arch/arm/kernel/head.S | 34 ++++++++-------- arch/csky/include/asm/pgalloc.h | 2 +- arch/csky/include/asm/pgtable.h | 6 +-- arch/loongarch/include/asm/pgalloc.h | 6 +-- arch/loongarch/include/asm/pgtable.h | 27 +++++------- arch/loongarch/kernel/asm-offsets.c | 6 --- arch/loongarch/mm/pgtable.c | 2 +- arch/loongarch/mm/tlbex.S | 6 +-- arch/mips/include/asm/pgalloc.h | 8 ++-- arch/mips/include/asm/pgtable-32.h | 19 ++++----- arch/mips/include/asm/pgtable-64.h | 61 +++++++++++++--------------- arch/mips/kernel/asm-offsets.c | 5 --- arch/mips/kvm/mmu.c | 2 +- arch/mips/mm/pgtable.c | 2 +- arch/mips/mm/tlbex.c | 14 +++---- arch/nios2/include/asm/pgtable.h | 7 +--- arch/nios2/mm/init.c | 5 +-- arch/nios2/mm/pgtable.c | 2 +- arch/parisc/include/asm/pgalloc.h | 6 +-- arch/parisc/include/asm/pgtable.h | 8 ++-- arch/xtensa/include/asm/pgalloc.h | 2 +- arch/xtensa/include/asm/pgtable.h | 1 - 22 files changed, 101 insertions(+), 130 deletions(-)
base-commit: 03c765b0e3b4cb5063276b086c76f7a612856a9a
Signature · 1 line
2.34.1
PATCH v2 1/15 csky: drop definition of PTE_ORDER
From: Mike Rapoport <[email protected]>
This is the order of the page table allocation, not the order of a PTE. Since its always hardwired to 0, simply drop it.
--- arch/csky/include/asm/pgtable.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
arch/csky/include/asm/pgtable.h +1 -2
@@ -19,11 +19,10 @@* C-SKY is two-level paging structure: */ #define PGD_ORDER 0 -#define PTE_ORDER 0#define PTRS_PER_PGD ((PAGE_SIZE << PGD_ORDER) / sizeof(pgd_t))#define PTRS_PER_PMD 1 -#define PTRS_PER_PTE ((PAGE_SIZE << PTE_ORDER) / sizeof(pte_t)) +#define PTRS_PER_PTE (PAGE_SIZE / sizeof(pte_t))#define pte_ERROR (e) \ pr_err("%s:%d: bad pte %08lx.\n", __FILE__, __LINE__, (e).pte_low)
Signature · 1 line
2.34.1
PATCH v2 2/15 csky: drop definition of PGD_ORDER
In reply to Mike RapoportFrom: Mike Rapoport <[email protected]>
This is the order of the page table allocation, not the order of a PGD. Since its always hardwired to 0, simply drop it.
--- arch/csky/include/asm/pgalloc.h | 2 +- arch/csky/include/asm/pgtable.h | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-)
arch/csky/include/asm/pgalloc.h +1 -1
@@ -44,7 +44,7 @@ static inline pgd_t *pgd_alloc(struct mm_struct *mm)pgd_t *ret;pgd_t *init; - ret = (pgd_t *)__get_free_pages (GFP_KERNEL ,PGD_ORDER ); + ret = (pgd_t *)__get_free_page (GFP_KERNEL );if (ret) { init =pgd_offset (&init_mm,0UL );pgd_init ((unsigned long *)ret);
arch/csky/include/asm/pgtable.h +1 -2
@@ -18,9 +18,8 @@/* * C-SKY is two-level paging structure: */ -#define PGD_ORDER 0 -#define PTRS_PER_PGD ((PAGE_SIZE << PGD_ORDER) / sizeof(pgd_t)) +#define PTRS_PER_PGD (PAGE_SIZE / sizeof(pgd_t))#define PTRS_PER_PMD 1#define PTRS_PER_PTE (PAGE_SIZE / sizeof(pte_t))
Signature · 1 line
2.34.1
PATCH v2 3/15 mips: Rename PMD_ORDER to PMD_TABLE_ORDER
In reply to Mike RapoportFrom: "Matthew Wilcox (Oracle)" <[email protected]>
This is the order of the page table allocation, not the order of a PMD.
While at it remove unused defintion of _PMD_ORDER in asm-offsets.
--- arch/mips/include/asm/pgalloc.h | 4 ++-- arch/mips/include/asm/pgtable-32.h | 2 +- arch/mips/include/asm/pgtable-64.h | 18 +++++++++--------- arch/mips/kernel/asm-offsets.c | 3 --- 4 files changed, 12 insertions(+), 15 deletions(-)
arch/mips/include/asm/pgalloc.h +2 -2
@@ -67,12 +67,12 @@ static inline pmd_t *pmd_alloc_one(struct mm_struct *mm, unsigned long address)pmd_t *pmd;struct page *pg; - pg =alloc_pages (GFP_KERNEL_ACCOUNT ,PMD_ORDER ); + pg =alloc_pages (GFP_KERNEL_ACCOUNT ,PMD_TABLE_ORDER );if (!pg)return NULL ;if (!pgtable_pmd_page_ctor (pg)) { -__free_pages (pg,PMD_ORDER ); +__free_pages (pg,PMD_TABLE_ORDER );return NULL ; }
arch/mips/include/asm/pgtable-32.h +1 -1
@@ -82,7 +82,7 @@ extern int add_temporary_entry(unsigned long entrylo0, unsigned long entrylo1,#define PGD_ORDER (__PGD_ORDER >= 0 ? __PGD_ORDER : 0)#define PUD_ORDER aieeee_attempt_to_allocate_pud -#define PMD_ORDER aieeee_attempt_to_allocate_pmd +#define PMD_TABLE_ORDER aieeee_attempt_to_allocate_pmd#define PTE_ORDER 0#define PTRS_PER_PGD (USER_PTRS_PER_PGD * 2)
arch/mips/include/asm/pgtable-64.h +9 -9
@@ -51,12 +51,12 @@#define PMD_MASK (~(PMD_SIZE-1))# ifdef __PAGETABLE_PUD_FOLDED -# define PGDIR_SHIFT (PMD_SHIFT + (PAGE_SHIFT + PMD_ORDER - 3)) +# define PGDIR_SHIFT (PMD_SHIFT + (PAGE_SHIFT + PMD_TABLE_ORDER - 3))# endif #endif #ifndef __PAGETABLE_PUD_FOLDED -#define PUD_SHIFT (PMD_SHIFT + (PAGE_SHIFT + PMD_ORDER - 3)) +#define PUD_SHIFT (PMD_SHIFT + (PAGE_SHIFT + PMD_TABLE_ORDER - 3))#define PUD_SIZE (1UL << PUD_SHIFT)#define PUD_MASK (~(PUD_SIZE-1))#define PGDIR_SHIFT (PUD_SHIFT + (PAGE_SHIFT + PUD_ORDER - 3))
@@ -91,13 +91,13 @@# define PGD_ORDER 1# define PUD_ORDER aieeee_attempt_to_allocate_pud# endif -#define PMD_ORDER 0 +#define PMD_TABLE_ORDER 0#define PTE_ORDER 0#endif #ifdef CONFIG_PAGE_SIZE_8KB #define PGD_ORDER 0#define PUD_ORDER aieeee_attempt_to_allocate_pud -#define PMD_ORDER 0 +#define PMD_TABLE_ORDER 0#define PTE_ORDER 0#endif #ifdef CONFIG_PAGE_SIZE_16KB
@@ -107,22 +107,22 @@#define PGD_ORDER 0#endif #define PUD_ORDER aieeee_attempt_to_allocate_pud -#define PMD_ORDER 0 +#define PMD_TABLE_ORDER 0#define PTE_ORDER 0#endif #ifdef CONFIG_PAGE_SIZE_32KB #define PGD_ORDER 0#define PUD_ORDER aieeee_attempt_to_allocate_pud -#define PMD_ORDER 0 +#define PMD_TABLE_ORDER 0#define PTE_ORDER 0#endif #ifdef CONFIG_PAGE_SIZE_64KB #define PGD_ORDER 0#define PUD_ORDER aieeee_attempt_to_allocate_pud#ifdef CONFIG_MIPS_VA_BITS_48 -#define PMD_ORDER 0 +#define PMD_TABLE_ORDER 0#else -#define PMD_ORDER aieeee_attempt_to_allocate_pmd +#define PMD_TABLE_ORDER aieeee_attempt_to_allocate_pmd#endif #define PTE_ORDER 0#endif
@@ -132,7 +132,7 @@#define PTRS_PER_PUD ((PAGE_SIZE << PUD_ORDER) / sizeof(pud_t))#endif #ifndef __PAGETABLE_PMD_FOLDED -#define PTRS_PER_PMD ((PAGE_SIZE << PMD_ORDER) / sizeof(pmd_t)) +#define PTRS_PER_PMD ((PAGE_SIZE << PMD_TABLE_ORDER) / sizeof(pmd_t))#endif #define PTRS_PER_PTE ((PAGE_SIZE << PTE_ORDER) / sizeof(pte_t))
arch/mips/kernel/asm-offsets.c +0 -3
@@ -197,9 +197,6 @@ void output_mm_defines(void)DEFINE (_PTE_T_LOG2,PTE_T_LOG2 );BLANK ();DEFINE (_PGD_ORDER,PGD_ORDER ); -#ifndef __PAGETABLE_PMD_FOLDED -DEFINE (_PMD_ORDER,PMD_ORDER ); -#endif DEFINE (_PTE_ORDER,PTE_ORDER );BLANK ();DEFINE (_PMD_SHIFT,PMD_SHIFT );
Signature · 1 line
2.34.1
PATCH v2 4/15 mips: Rename PUD_ORDER to PUD_TABLE_ORDER
In reply to Mike RapoportFrom: Mike Rapoport <[email protected]>
This is the order of the page table allocation, not the order of a PUD.
--- arch/mips/include/asm/pgalloc.h | 2 +- arch/mips/include/asm/pgtable-32.h | 2 +- arch/mips/include/asm/pgtable-64.h | 16 ++++++++-------- 3 files changed, 10 insertions(+), 10 deletions(-)
arch/mips/include/asm/pgalloc.h +1 -1
@@ -91,7 +91,7 @@ static inline pud_t *pud_alloc_one(struct mm_struct *mm, unsigned long address) {pud_t *pud; - pud = (pud_t *)__get_free_pages (GFP_KERNEL ,PUD_ORDER ); + pud = (pud_t *)__get_free_pages (GFP_KERNEL ,PUD_TABLE_ORDER );if (pud)pud_init ((unsigned long )pud, (unsigned long )invalid_pmd_table);return pud;
arch/mips/include/asm/pgtable-32.h +1 -1
@@ -81,7 +81,7 @@ extern int add_temporary_entry(unsigned long entrylo0, unsigned long entrylo1,#endif #define PGD_ORDER (__PGD_ORDER >= 0 ? __PGD_ORDER : 0) -#define PUD_ORDER aieeee_attempt_to_allocate_pud +#define PUD_TABLE_ORDER aieeee_attempt_to_allocate_pud#define PMD_TABLE_ORDER aieeee_attempt_to_allocate_pmd#define PTE_ORDER 0
arch/mips/include/asm/pgtable-64.h +8 -8
@@ -59,7 +59,7 @@#define PUD_SHIFT (PMD_SHIFT + (PAGE_SHIFT + PMD_TABLE_ORDER - 3))#define PUD_SIZE (1UL << PUD_SHIFT)#define PUD_MASK (~(PUD_SIZE-1)) -#define PGDIR_SHIFT (PUD_SHIFT + (PAGE_SHIFT + PUD_ORDER - 3)) +#define PGDIR_SHIFT (PUD_SHIFT + (PAGE_SHIFT + PUD_TABLE_ORDER - 3))#endif #define PGDIR_SIZE (1UL << PGDIR_SHIFT)
@@ -86,17 +86,17 @@#ifdef CONFIG_PAGE_SIZE_4KB # ifdef CONFIG_MIPS_VA_BITS_48 # define PGD_ORDER 0 -# define PUD_ORDER 0 +# define PUD_TABLE_ORDER 0# else # define PGD_ORDER 1 -# define PUD_ORDER aieeee_attempt_to_allocate_pud +# define PUD_TABLE_ORDER aieeee_attempt_to_allocate_pud# endif #define PMD_TABLE_ORDER 0#define PTE_ORDER 0#endif #ifdef CONFIG_PAGE_SIZE_8KB #define PGD_ORDER 0 -#define PUD_ORDER aieeee_attempt_to_allocate_pud +#define PUD_TABLE_ORDER aieeee_attempt_to_allocate_pud#define PMD_TABLE_ORDER 0#define PTE_ORDER 0#endif
@@ -106,19 +106,19 @@#else #define PGD_ORDER 0#endif -#define PUD_ORDER aieeee_attempt_to_allocate_pud +#define PUD_TABLE_ORDER aieeee_attempt_to_allocate_pud#define PMD_TABLE_ORDER 0#define PTE_ORDER 0#endif #ifdef CONFIG_PAGE_SIZE_32KB #define PGD_ORDER 0 -#define PUD_ORDER aieeee_attempt_to_allocate_pud +#define PUD_TABLE_ORDER aieeee_attempt_to_allocate_pud#define PMD_TABLE_ORDER 0#define PTE_ORDER 0#endif #ifdef CONFIG_PAGE_SIZE_64KB #define PGD_ORDER 0 -#define PUD_ORDER aieeee_attempt_to_allocate_pud +#define PUD_TABLE_ORDER aieeee_attempt_to_allocate_pud#ifdef CONFIG_MIPS_VA_BITS_48 #define PMD_TABLE_ORDER 0#else
@@ -129,7 +129,7 @@#define PTRS_PER_PGD ((PAGE_SIZE << PGD_ORDER) / sizeof(pgd_t))#ifndef __PAGETABLE_PUD_FOLDED -#define PTRS_PER_PUD ((PAGE_SIZE << PUD_ORDER) / sizeof(pud_t)) +#define PTRS_PER_PUD ((PAGE_SIZE << PUD_TABLE_ORDER) / sizeof(pud_t))#endif #ifndef __PAGETABLE_PMD_FOLDED#define PTRS_PER_PMD ((PAGE_SIZE << PMD_TABLE_ORDER) / sizeof(pmd_t))
Signature · 1 line
2.34.1
PATCH v2 5/15 mips: drop definitions of PTE_ORDER
In reply to Mike RapoportFrom: Mike Rapoport <[email protected]>
This is the order of the page table allocation, not the order of a PTE. Since its always hardwired to 0, simply drop it.
--- arch/mips/include/asm/pgtable-32.h | 9 ++++----- arch/mips/include/asm/pgtable-64.h | 15 +++++---------- arch/mips/kernel/asm-offsets.c | 1 - arch/mips/mm/tlbex.c | 2 +- 4 files changed, 10 insertions(+), 17 deletions(-)
arch/mips/include/asm/pgtable-32.h +4 -5
@@ -62,9 +62,9 @@ extern int add_temporary_entry(unsigned long entrylo0, unsigned long entrylo1,/* PGDIR_SHIFT determines what a third-level page table entry can map */ #if defined(CONFIG_MIPS_HUGE_TLB_SUPPORT ) && !defined(CONFIG_PHYS_ADDR_T_64BIT ) -# define PGDIR_SHIFT (2 * PAGE_SHIFT + PTE_ORDER - PTE_T_LOG2 - 1) +# define PGDIR_SHIFT (2 * PAGE_SHIFT - PTE_T_LOG2 - 1)#else -# define PGDIR_SHIFT (2 * PAGE_SHIFT + PTE_ORDER - PTE_T_LOG2) +# define PGDIR_SHIFT (2 * PAGE_SHIFT - PTE_T_LOG2)#endif #define PGDIR_SIZE (1UL << PGDIR_SHIFT)
@@ -83,13 +83,12 @@ extern int add_temporary_entry(unsigned long entrylo0, unsigned long entrylo1,#define PGD_ORDER (__PGD_ORDER >= 0 ? __PGD_ORDER : 0)#define PUD_TABLE_ORDER aieeee_attempt_to_allocate_pud#define PMD_TABLE_ORDER aieeee_attempt_to_allocate_pmd -#define PTE_ORDER 0#define PTRS_PER_PGD (USER_PTRS_PER_PGD * 2)#if defined(CONFIG_MIPS_HUGE_TLB_SUPPORT ) && !defined(CONFIG_PHYS_ADDR_T_64BIT ) -# define PTRS_PER_PTE ((PAGE_SIZE << PTE_ORDER) / sizeof(pte_t) / 2) +# define PTRS_PER_PTE (PAGE_SIZE / sizeof(pte_t) / 2)#else -# define PTRS_PER_PTE ((PAGE_SIZE << PTE_ORDER) / sizeof(pte_t)) +# define PTRS_PER_PTE (PAGE_SIZE / sizeof(pte_t))#endif #define USER_PTRS_PER_PGD (0x80000000UL/PGDIR_SIZE)
arch/mips/include/asm/pgtable-64.h +5 -10
@@ -42,11 +42,11 @@/* PGDIR_SHIFT determines what a third-level page table entry can map */ #ifdef __PAGETABLE_PMD_FOLDED -#define PGDIR_SHIFT (PAGE_SHIFT + PAGE_SHIFT + PTE_ORDER - 3) +#define PGDIR_SHIFT (PAGE_SHIFT + PAGE_SHIFT - 3)#else /* PMD_SHIFT determines the size of the area a second-level page table can map */ -#define PMD_SHIFT (PAGE_SHIFT + (PAGE_SHIFT + PTE_ORDER - 3)) +#define PMD_SHIFT (PAGE_SHIFT + (PAGE_SHIFT - 3))#define PMD_SIZE (1UL << PMD_SHIFT)#define PMD_MASK (~(PMD_SIZE-1))
@@ -86,19 +86,17 @@#ifdef CONFIG_PAGE_SIZE_4KB # ifdef CONFIG_MIPS_VA_BITS_48 # define PGD_ORDER 0 -# define PUD_TABLE_ORDER 0 +# define PUD_TABLE_ORDER 0# else # define PGD_ORDER 1 -# define PUD_TABLE_ORDER aieeee_attempt_to_allocate_pud +# define PUD_TABLE_ORDER aieeee_attempt_to_allocate_pud# endif #define PMD_TABLE_ORDER 0 -#define PTE_ORDER 0#endif #ifdef CONFIG_PAGE_SIZE_8KB #define PGD_ORDER 0#define PUD_TABLE_ORDER aieeee_attempt_to_allocate_pud#define PMD_TABLE_ORDER 0 -#define PTE_ORDER 0#endif #ifdef CONFIG_PAGE_SIZE_16KB #ifdef CONFIG_MIPS_VA_BITS_48
@@ -108,13 +106,11 @@#endif #define PUD_TABLE_ORDER aieeee_attempt_to_allocate_pud#define PMD_TABLE_ORDER 0 -#define PTE_ORDER 0#endif #ifdef CONFIG_PAGE_SIZE_32KB #define PGD_ORDER 0#define PUD_TABLE_ORDER aieeee_attempt_to_allocate_pud#define PMD_TABLE_ORDER 0 -#define PTE_ORDER 0#endif #ifdef CONFIG_PAGE_SIZE_64KB #define PGD_ORDER 0
@@ -124,7 +120,6 @@#else #define PMD_TABLE_ORDER aieeee_attempt_to_allocate_pmd#endif -#define PTE_ORDER 0#endif #define PTRS_PER_PGD ((PAGE_SIZE << PGD_ORDER) / sizeof(pgd_t))
@@ -134,7 +129,7 @@#ifndef __PAGETABLE_PMD_FOLDED#define PTRS_PER_PMD ((PAGE_SIZE << PMD_TABLE_ORDER) / sizeof(pmd_t))#endif -#define PTRS_PER_PTE ((PAGE_SIZE << PTE_ORDER) / sizeof(pte_t)) +#define PTRS_PER_PTE (PAGE_SIZE / sizeof(pte_t))#define USER_PTRS_PER_PGD ((TASK_SIZE64 / PGDIR_SIZE)?(TASK_SIZE64 / PGDIR_SIZE):1)
arch/mips/kernel/asm-offsets.c +0 -1
@@ -197,7 +197,6 @@ void output_mm_defines(void)DEFINE (_PTE_T_LOG2,PTE_T_LOG2 );BLANK ();DEFINE (_PGD_ORDER,PGD_ORDER ); -DEFINE (_PTE_ORDER,PTE_ORDER );BLANK ();DEFINE (_PMD_SHIFT,PMD_SHIFT );DEFINE (_PGDIR_SHIFT,PGDIR_SHIFT );
arch/mips/mm/tlbex.c +1 -1
@@ -2065,7 +2065,7 @@ build_r4000_tlbchange_handler_head(u32 **p, struct uasm_label **l,UASM_i_MFC0 (p, wr.r1,C0_BADVADDR );UASM_i_LW (p, wr.r2,0 , wr.r2); -UASM_i_SRL (p, wr.r1, wr.r1,PAGE_SHIFT +PTE_ORDER -PTE_T_LOG2 ); +UASM_i_SRL (p, wr.r1, wr.r1,PAGE_SHIFT -PTE_T_LOG2 );uasm_i_andi (p, wr.r1, wr.r1, (PTRS_PER_PTE -1 ) <<PTE_T_LOG2 );UASM_i_ADDU (p, wr.r2, wr.r2, wr.r1);
Signature · 1 line
2.34.1
PATCH v2 6/15 mips: Rename PGD_ORDER to PGD_TABLE_ORDER
In reply to Mike RapoportFrom: Mike Rapoport <[email protected]>
This is the order of the page table allocation, not the order of a PGD.
While at it remove unused defintion of _PGD_ORDER in asm-offsets.
--- arch/mips/include/asm/pgalloc.h | 2 +- arch/mips/include/asm/pgtable-32.h | 6 +++--- arch/mips/include/asm/pgtable-64.h | 16 ++++++++-------- arch/mips/kernel/asm-offsets.c | 1 - arch/mips/kvm/mmu.c | 2 +- arch/mips/mm/pgtable.c | 2 +- arch/mips/mm/tlbex.c | 12 ++++++------ 7 files changed, 20 insertions(+), 21 deletions(-)
arch/mips/include/asm/pgalloc.h +1 -1
@@ -51,7 +51,7 @@ extern pgd_t *pgd_alloc(struct mm_struct *mm);static inline void pgd_free (struct mm_struct *mm,pgd_t *pgd) { -free_pages ((unsigned long )pgd,PGD_ORDER ); +free_pages ((unsigned long )pgd,PGD_TABLE_ORDER ); }#define __pte_free_tlb (tlb,pte,address) \
arch/mips/include/asm/pgtable-32.h +3 -3
@@ -75,12 +75,12 @@ extern int add_temporary_entry(unsigned long entrylo0, unsigned long entrylo1,* we don't really have any PUD/PMD directory physically. */ #if defined(CONFIG_MIPS_HUGE_TLB_SUPPORT ) && !defined(CONFIG_PHYS_ADDR_T_64BIT ) -# define __PGD_ORDER (32 - 3 * PAGE_SHIFT + PGD_T_LOG2 + PTE_T_LOG2 + 1) +# define __PGD_TABLE_ORDER (32 - 3 * PAGE_SHIFT + PGD_T_LOG2 + PTE_T_LOG2 + 1)#else -# define __PGD_ORDER (32 - 3 * PAGE_SHIFT + PGD_T_LOG2 + PTE_T_LOG2) +# define __PGD_TABLE_ORDER (32 - 3 * PAGE_SHIFT + PGD_T_LOG2 + PTE_T_LOG2)#endif -#define PGD_ORDER (__PGD_ORDER >= 0 ? __PGD_ORDER : 0) +#define PGD_TABLE_ORDER (__PGD_TABLE_ORDER >= 0 ? __PGD_TABLE_ORDER : 0)#define PUD_TABLE_ORDER aieeee_attempt_to_allocate_pud#define PMD_TABLE_ORDER aieeee_attempt_to_allocate_pmd
arch/mips/include/asm/pgtable-64.h +8 -8
@@ -85,35 +85,35 @@*/ #ifdef CONFIG_PAGE_SIZE_4KB # ifdef CONFIG_MIPS_VA_BITS_48 -# define PGD_ORDER 0 +# define PGD_TABLE_ORDER 0# define PUD_TABLE_ORDER 0# else -# define PGD_ORDER 1 +# define PGD_TABLE_ORDER 1# define PUD_TABLE_ORDER aieeee_attempt_to_allocate_pud# endif #define PMD_TABLE_ORDER 0#endif #ifdef CONFIG_PAGE_SIZE_8KB -#define PGD_ORDER 0 +#define PGD_TABLE_ORDER 0#define PUD_TABLE_ORDER aieeee_attempt_to_allocate_pud#define PMD_TABLE_ORDER 0#endif #ifdef CONFIG_PAGE_SIZE_16KB #ifdef CONFIG_MIPS_VA_BITS_48 -#define PGD_ORDER 1 +#define PGD_TABLE_ORDER 1#else -#define PGD_ORDER 0 +#define PGD_TABLE_ORDER 0#endif #define PUD_TABLE_ORDER aieeee_attempt_to_allocate_pud#define PMD_TABLE_ORDER 0#endif #ifdef CONFIG_PAGE_SIZE_32KB -#define PGD_ORDER 0 +#define PGD_TABLE_ORDER 0#define PUD_TABLE_ORDER aieeee_attempt_to_allocate_pud#define PMD_TABLE_ORDER 0#endif #ifdef CONFIG_PAGE_SIZE_64KB -#define PGD_ORDER 0 +#define PGD_TABLE_ORDER 0#define PUD_TABLE_ORDER aieeee_attempt_to_allocate_pud#ifdef CONFIG_MIPS_VA_BITS_48 #define PMD_TABLE_ORDER 0
@@ -122,7 +122,7 @@#endif #endif -#define PTRS_PER_PGD ((PAGE_SIZE << PGD_ORDER) / sizeof(pgd_t)) +#define PTRS_PER_PGD ((PAGE_SIZE << PGD_TABLE_ORDER) / sizeof(pgd_t))#ifndef __PAGETABLE_PUD_FOLDED#define PTRS_PER_PUD ((PAGE_SIZE << PUD_TABLE_ORDER) / sizeof(pud_t))#endif
arch/mips/kernel/asm-offsets.c +0 -1
@@ -196,7 +196,6 @@ void output_mm_defines(void)#endif DEFINE (_PTE_T_LOG2,PTE_T_LOG2 );BLANK (); -DEFINE (_PGD_ORDER,PGD_ORDER );BLANK ();DEFINE (_PMD_SHIFT,PMD_SHIFT );DEFINE (_PGDIR_SHIFT,PGDIR_SHIFT );
arch/mips/kvm/mmu.c +1 -1
@@ -80,7 +80,7 @@ pgd_t *kvm_pgd_alloc(void) {pgd_t *ret; - ret = (pgd_t *)__get_free_pages (GFP_KERNEL ,PGD_ORDER ); + ret = (pgd_t *)__get_free_pages (GFP_KERNEL ,PGD_TABLE_ORDER );if (ret)kvm_pgd_init (ret);
arch/mips/mm/pgtable.c +1 -1
@@ -12,7 +12,7 @@ pgd_t *pgd_alloc(struct mm_struct *mm) {pgd_t *ret, *init; - ret = (pgd_t *)__get_free_pages (GFP_KERNEL ,PGD_ORDER ); + ret = (pgd_t *)__get_free_pages (GFP_KERNEL ,PGD_TABLE_ORDER );if (ret) { init =pgd_offset (&init_mm,0UL );pgd_init ((unsigned long )ret);
arch/mips/mm/tlbex.c +6 -6
@@ -818,7 +818,7 @@ void build_get_pmde64(u32 **p, struct uasm_label **l, struct uasm_reloc **r,* everything but the lower xuseg addresses goes down * the module_alloc/vmalloc path. */ -uasm_i_dsrl_safe (p, ptr, tmp,PGDIR_SHIFT +PGD_ORDER +PAGE_SHIFT -3 ); +uasm_i_dsrl_safe (p, ptr, tmp,PGDIR_SHIFT +PGD_TABLE_ORDER +PAGE_SHIFT -3 );uasm_il_bnez (p, r, ptr, label_vmalloc); }else {uasm_il_bltz (p, r, tmp, label_vmalloc);
@@ -1127,7 +1127,7 @@ build_fast_tlb_refill_handler (u32 **p, struct uasm_label **l,UASM_i_SW (p, scratch,scratchpad_offset (0 ),0 );uasm_i_dsrl_safe (p, scratch, tmp, -PGDIR_SHIFT +PGD_ORDER +PAGE_SHIFT -3 ); +PGDIR_SHIFT +PGD_TABLE_ORDER +PAGE_SHIFT -3 );uasm_il_bnez (p, r, scratch, label_vmalloc);if (pgd_reg ==-1 ) {
@@ -1493,12 +1493,12 @@ static void setup_pw(void)#endif pgd_i =PGDIR_SHIFT ;/* 1st level PGD */ #ifndef __PAGETABLE_PMD_FOLDED - pgd_w =PGDIR_SHIFT -PMD_SHIFT +PGD_ORDER ; + pgd_w =PGDIR_SHIFT -PMD_SHIFT +PGD_TABLE_ORDER ; pmd_i =PMD_SHIFT ;/* 2nd level PMD */ pmd_w =PMD_SHIFT -PAGE_SHIFT ;#else - pgd_w =PGDIR_SHIFT -PAGE_SHIFT +PGD_ORDER ; + pgd_w =PGDIR_SHIFT -PAGE_SHIFT +PGD_TABLE_ORDER ;#endif pt_i =PAGE_SHIFT ;/* 3rd level PTE */
@@ -1536,7 +1536,7 @@ static void build_loongson3_tlb_refill_handler(void)if (check_for_high_segbits) {uasm_i_dmfc0 (&p,K0 ,C0_BADVADDR ); -uasm_i_dsrl_safe (&p,K1 ,K0 ,PGDIR_SHIFT +PGD_ORDER +PAGE_SHIFT -3 ); +uasm_i_dsrl_safe (&p,K1 ,K0 ,PGDIR_SHIFT +PGD_TABLE_ORDER +PAGE_SHIFT -3 );uasm_il_beqz (&p, &r,K1 , label_vmalloc);uasm_i_nop (&p);
@@ -2611,7 +2611,7 @@ void build_tlb_refill_handler(void)check_pabits ();#ifdef CONFIG_64BIT - check_for_high_segbits = current_cpu_data.vmbits > (PGDIR_SHIFT +PGD_ORDER +PAGE_SHIFT -3 ); + check_for_high_segbits = current_cpu_data.vmbits > (PGDIR_SHIFT +PGD_TABLE_ORDER +PAGE_SHIFT -3 );#endif if (cpu_has_3kex) {
Signature · 1 line
2.34.1
PATCH v2 7/15 nios2: drop definition of PTE_ORDER
In reply to Mike RapoportFrom: Mike Rapoport <[email protected]>
This is the order of the page table allocation, not the order of a PTE. Since its always hardwired to 0, simply drop it.
--- arch/nios2/include/asm/pgtable.h | 3 +-- arch/nios2/mm/init.c | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-)
arch/nios2/include/asm/pgtable.h +1 -2
@@ -69,10 +69,9 @@ struct mm_struct;#define PAGE_COPY MKP(0, 0, 1)#define PGD_ORDER 0 -#define PTE_ORDER 0#define PTRS_PER_PGD ((PAGE_SIZE << PGD_ORDER) / sizeof(pgd_t)) -#define PTRS_PER_PTE ((PAGE_SIZE << PTE_ORDER) / sizeof(pte_t)) +#define PTRS_PER_PTE (PAGE_SIZE / sizeof(pte_t))#define USER_PTRS_PER_PGD \ (CONFIG_NIOS2_KERNEL_MMU_REGION_BASE / PGDIR_SIZE)
arch/nios2/mm/init.c +1 -1
@@ -80,7 +80,7 @@ void __init mmu_init(void)#define __page_aligned (order) __aligned(PAGE_SIZE << (order)) pgd_t swapper_pg_dir[PTRS_PER_PGD] __page_aligned(PGD_ORDER); -pte_t invalid_pte_table[PTRS_PER_PTE] __page_aligned(PTE_ORDER); +pte_t invalid_pte_table[PTRS_PER_PTE ]__aligned(PAGE_SIZE) ;static struct page *kuser_page[1 ];static int alloc_kuser_page (void )
Signature · 1 line
2.34.1
Re: [PATCH v2 07/15] nios2: drop definition of PTE_ORDER
Quoted 32 lines · Mike Rapoport
From: Mike Rapoport <[email protected]>
This is the order of the page table allocation, not the order of a PTE. Since its always hardwired to 0, simply drop it.
Signed-off-by Mike Rapoport <[email protected]>--- arch/nios2/include/asm/pgtable.h | 3 +-- arch/nios2/mm/init.c | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-)arch/nios2/include/asm/pgtable.h +1
-2@@ -69,10 +69,9 @@ struct mm_struct;#define PAGE_COPY MKP(0, 0, 1)#define PGD_ORDER 0 -#define PTE_ORDER 0#define PTRS_PER_PGD ((PAGE_SIZE << PGD_ORDER) / sizeof(pgd_t)) -#define PTRS_PER_PTE ((PAGE_SIZE << PTE_ORDER) / sizeof(pte_t)) +#define PTRS_PER_PTE (PAGE_SIZE / sizeof(pte_t))#define USER_PTRS_PER_PGD \ (CONFIG_NIOS2_KERNEL_MMU_REGION_BASE / PGDIR_SIZE)arch/nios2/mm/init.c +0
-0
arch/nios2/mm/init.c void __init mmu_init(void) · line 86
Quoted 8 lines
arch/nios2/mm/init.c +1
-1@@ -80,7 +80,7 @@ void __init mmu_init(void)#define __page_aligned (order) __aligned(PAGE_SIZE << (order)) pgd_t swapper_pg_dir[PTRS_PER_PGD] __page_aligned(PGD_ORDER); -pte_t invalid_pte_table[PTRS_PER_PTE] __page_aligned(PTE_ORDER); +pte_t invalid_pte_table[PTRS_PER_PTE ]__aligned(PAGE_SIZE) ;static struct page *kuser_page[1 ];static int alloc_kuser_page (void )
PATCH v2 8/15 nios2: drop definition of PGD_ORDER
In reply to Mike RapoportFrom: Mike Rapoport <[email protected]>
This is the order of the page table allocation, not the order of a PGD. Since its always hardwired to 0, simply drop it.
--- arch/nios2/include/asm/pgtable.h | 4 +--- arch/nios2/mm/init.c | 3 +-- arch/nios2/mm/pgtable.c | 2 +- 3 files changed, 3 insertions(+), 6 deletions(-)
arch/nios2/include/asm/pgtable.h +1 -3
@@ -68,9 +68,7 @@ struct mm_struct;#define PAGE_COPY MKP(0, 0, 1) -#define PGD_ORDER 0 - -#define PTRS_PER_PGD ((PAGE_SIZE << PGD_ORDER) / sizeof(pgd_t)) +#define PTRS_PER_PGD (PAGE_SIZE / sizeof(pgd_t))#define PTRS_PER_PTE (PAGE_SIZE / sizeof(pte_t))#define USER_PTRS_PER_PGD \
arch/nios2/mm/init.c +1 -2
@@ -78,8 +78,7 @@ void __init mmu_init(void)flush_tlb_all (); } -#define __page_aligned (order) __aligned(PAGE_SIZE << (order)) -pgd_t swapper_pg_dir[PTRS_PER_PGD] __page_aligned(PGD_ORDER); +pgd_t swapper_pg_dir[PTRS_PER_PGD ]__aligned(PAGE_SIZE) ;pte_t invalid_pte_table[PTRS_PER_PTE ]__aligned(PAGE_SIZE) ;static struct page *kuser_page[1 ];
arch/nios2/mm/pgtable.c +1 -1
@@ -54,7 +54,7 @@ pgd_t *pgd_alloc(struct mm_struct *mm) {pgd_t *ret, *init; - ret = (pgd_t *)__get_free_pages (GFP_KERNEL ,PGD_ORDER ); + ret = (pgd_t *)__get_free_page (GFP_KERNEL );if (ret) { init =pgd_offset (&init_mm,0UL );pgd_init (ret);
Signature · 1 line
2.34.1
Re: [PATCH v2 08/15] nios2: drop definition of PGD_ORDER
Quoted 46 lines · Mike Rapoport
From: Mike Rapoport <[email protected]>
This is the order of the page table allocation, not the order of a PGD. Since its always hardwired to 0, simply drop it.
Signed-off-by Mike Rapoport <[email protected]>--- arch/nios2/include/asm/pgtable.h | 4 +--- arch/nios2/mm/init.c | 3 +-- arch/nios2/mm/pgtable.c | 2 +- 3 files changed, 3 insertions(+), 6 deletions(-)arch/nios2/include/asm/pgtable.h +1
-3@@ -68,9 +68,7 @@ struct mm_struct;#define PAGE_COPY MKP(0, 0, 1) -#define PGD_ORDER 0 - -#define PTRS_PER_PGD ((PAGE_SIZE << PGD_ORDER) / sizeof(pgd_t)) +#define PTRS_PER_PGD (PAGE_SIZE / sizeof(pgd_t))#define PTRS_PER_PTE (PAGE_SIZE / sizeof(pte_t))#define USER_PTRS_PER_PGD \arch/nios2/mm/init.c +1
-2@@ -78,8 +78,7 @@ void __init mmu_init(void)flush_tlb_all (); } -#define __page_aligned (order) __aligned(PAGE_SIZE << (order)) -pgd_t swapper_pg_dir[PTRS_PER_PGD] __page_aligned(PGD_ORDER); +pgd_t swapper_pg_dir[PTRS_PER_PGD ]__aligned(PAGE_SIZE) ;pte_t invalid_pte_table[PTRS_PER_PTE ]__aligned(PAGE_SIZE) ;static struct page *kuser_page[1 ];arch/nios2/mm/pgtable.c +0
-0
arch/nios2/mm/pgtable.c pgd_t *pgd_alloc(struct mm_struct *mm) · line 60
Quoted 8 lines
arch/nios2/mm/pgtable.c +1
-1@@ -54,7 +54,7 @@ pgd_t *pgd_alloc(struct mm_struct *mm) {pgd_t *ret, *init; - ret = (pgd_t *)__get_free_pages (GFP_KERNEL ,PGD_ORDER ); + ret = (pgd_t *)__get_free_page (GFP_KERNEL );if (ret) { init =pgd_offset (&init_mm,0UL );pgd_init (ret);
PATCH v2 9/15 loongarch: drop definition of PTE_ORDER
In reply to Mike RapoportFrom: Mike Rapoport <[email protected]>
This is the order of the page table allocation, not the order of a PTE. Since its always hardwired to 0, simply drop it.
--- arch/loongarch/include/asm/pgtable.h | 9 ++++----- arch/loongarch/kernel/asm-offsets.c | 1 - arch/loongarch/mm/tlbex.S | 6 +++--- 3 files changed, 7 insertions(+), 9 deletions(-)
arch/loongarch/include/asm/pgtable.h +4 -5
@@ -24,17 +24,16 @@#define PGD_ORDER 0#define PUD_ORDER 0#define PMD_ORDER 0 -#define PTE_ORDER 0#if CONFIG_PGTABLE_LEVELS ==2 -#define PGDIR_SHIFT (PAGE_SHIFT + (PAGE_SHIFT + PTE_ORDER - 3)) +#define PGDIR_SHIFT (PAGE_SHIFT + (PAGE_SHIFT - 3))#elif CONFIG_PGTABLE_LEVELS ==3 -#define PMD_SHIFT (PAGE_SHIFT + (PAGE_SHIFT + PTE_ORDER - 3)) +#define PMD_SHIFT (PAGE_SHIFT + (PAGE_SHIFT - 3))#define PMD_SIZE (1UL << PMD_SHIFT)#define PMD_MASK (~(PMD_SIZE-1))#define PGDIR_SHIFT (PMD_SHIFT + (PAGE_SHIFT + PMD_ORDER - 3))#elif CONFIG_PGTABLE_LEVELS ==4 -#define PMD_SHIFT (PAGE_SHIFT + (PAGE_SHIFT + PTE_ORDER - 3)) +#define PMD_SHIFT (PAGE_SHIFT + (PAGE_SHIFT - 3))#define PMD_SIZE (1UL << PMD_SHIFT)#define PMD_MASK (~(PMD_SIZE-1))#define PUD_SHIFT (PMD_SHIFT + (PAGE_SHIFT + PMD_ORDER - 3))
@@ -55,7 +54,7 @@#if CONFIG_PGTABLE_LEVELS >2 #define PTRS_PER_PMD ((PAGE_SIZE << PMD_ORDER) >> 3)#endif -#define PTRS_PER_PTE ((PAGE_SIZE << PTE_ORDER) >> 3) +#define PTRS_PER_PTE (PAGE_SIZE >> 3)#define USER_PTRS_PER_PGD ((TASK_SIZE64 / PGDIR_SIZE)?(TASK_SIZE64 / PGDIR_SIZE):1)
arch/loongarch/kernel/asm-offsets.c +0 -1
@@ -194,7 +194,6 @@ void output_mm_defines(void)#ifndef __PAGETABLE_PMD_FOLDEDDEFINE (_PMD_ORDER,PMD_ORDER );#endif -DEFINE (_PTE_ORDER,PTE_ORDER );BLANK ();DEFINE (_PMD_SHIFT,PMD_SHIFT );DEFINE (_PGDIR_SHIFT,PGDIR_SHIFT );
arch/loongarch/mm/tlbex.S +3 -3
@@ -83,7 +83,7 @@ vmalloc_done_load: bne t0, $r0, tlb_huge_update_load csrrd t0, LOONGARCH_CSR_BADV - srli.d t0, t0, (PAGE_SHIFT + PTE_ORDER) + srli.d t0, t0, PAGE_SHIFT andi t0, t0, (PTRS_PER_PTE - 1) slli.d t0, t0, _PTE_T_LOG2 add.d t1, ra, t0
@@ -247,7 +247,7 @@ vmalloc_done_store: bne t0, $r0, tlb_huge_update_store csrrd t0, LOONGARCH_CSR_BADV - srli.d t0, t0, (PAGE_SHIFT + PTE_ORDER) + srli.d t0, t0, PAGE_SHIFT andi t0, t0, (PTRS_PER_PTE - 1) slli.d t0, t0, _PTE_T_LOG2 add.d t1, ra, t0
@@ -414,7 +414,7 @@ vmalloc_done_modify: bne t0, $r0, tlb_huge_update_modify csrrd t0, LOONGARCH_CSR_BADV - srli.d t0, t0, (PAGE_SHIFT + PTE_ORDER) + srli.d t0, t0, PAGE_SHIFT andi t0, t0, (PTRS_PER_PTE - 1) slli.d t0, t0, _PTE_T_LOG2 add.d t1, ra, t0
Signature · 1 line
2.34.1
PATCH v2 10/15 loongarch: drop definition of PMD_ORDER
In reply to Mike RapoportFrom: Mike Rapoport <[email protected]>
This is the order of the page table allocation, not the order of a PMD. Since its always hardwired to 0, simply drop it.
--- arch/loongarch/include/asm/pgalloc.h | 4 ++-- arch/loongarch/include/asm/pgtable.h | 7 +++---- arch/loongarch/kernel/asm-offsets.c | 3 --- 3 files changed, 5 insertions(+), 9 deletions(-)
arch/loongarch/include/asm/pgalloc.h +2 -2
@@ -66,12 +66,12 @@ static inline pmd_t *pmd_alloc_one(struct mm_struct *mm, unsigned long address)pmd_t *pmd;struct page *pg; - pg =alloc_pages (GFP_KERNEL_ACCOUNT ,PMD_ORDER ); + pg =alloc_page (GFP_KERNEL_ACCOUNT );if (!pg)return NULL ;if (!pgtable_pmd_page_ctor (pg)) { -__free_pages (pg,PMD_ORDER ); +__free_page (pg);return NULL ; }
arch/loongarch/include/asm/pgtable.h +3 -4
@@ -23,7 +23,6 @@#define PGD_ORDER 0#define PUD_ORDER 0 -#define PMD_ORDER 0#if CONFIG_PGTABLE_LEVELS ==2 #define PGDIR_SHIFT (PAGE_SHIFT + (PAGE_SHIFT - 3))
@@ -31,12 +30,12 @@#define PMD_SHIFT (PAGE_SHIFT + (PAGE_SHIFT - 3))#define PMD_SIZE (1UL << PMD_SHIFT)#define PMD_MASK (~(PMD_SIZE-1)) -#define PGDIR_SHIFT (PMD_SHIFT + (PAGE_SHIFT + PMD_ORDER - 3)) +#define PGDIR_SHIFT (PMD_SHIFT + (PAGE_SHIFT - 3))#elif CONFIG_PGTABLE_LEVELS ==4 #define PMD_SHIFT (PAGE_SHIFT + (PAGE_SHIFT - 3))#define PMD_SIZE (1UL << PMD_SHIFT)#define PMD_MASK (~(PMD_SIZE-1)) -#define PUD_SHIFT (PMD_SHIFT + (PAGE_SHIFT + PMD_ORDER - 3)) +#define PUD_SHIFT (PMD_SHIFT + (PAGE_SHIFT - 3))#define PUD_SIZE (1UL << PUD_SHIFT)#define PUD_MASK (~(PUD_SIZE-1))#define PGDIR_SHIFT (PUD_SHIFT + (PAGE_SHIFT + PUD_ORDER - 3))
@@ -52,7 +51,7 @@#define PTRS_PER_PUD ((PAGE_SIZE << PUD_ORDER) >> 3)#endif #if CONFIG_PGTABLE_LEVELS >2 -#define PTRS_PER_PMD ((PAGE_SIZE << PMD_ORDER) >> 3) +#define PTRS_PER_PMD (PAGE_SIZE >> 3)#endif #define PTRS_PER_PTE (PAGE_SIZE >> 3)
arch/loongarch/kernel/asm-offsets.c +0 -3
@@ -191,9 +191,6 @@ void output_mm_defines(void)DEFINE (_PTE_T_LOG2,PTE_T_LOG2 );BLANK ();DEFINE (_PGD_ORDER,PGD_ORDER ); -#ifndef __PAGETABLE_PMD_FOLDED -DEFINE (_PMD_ORDER,PMD_ORDER ); -#endif BLANK ();DEFINE (_PMD_SHIFT,PMD_SHIFT );DEFINE (_PGDIR_SHIFT,PGDIR_SHIFT );
Signature · 1 line
2.34.1
PATCH v2 11/15 loongarch: drop definition of PUD_ORDER
In reply to Mike RapoportFrom: Mike Rapoport <[email protected]>
This is the order of the page table allocation, not the order of a PUD. Since its always hardwired to 0, simply drop it.
--- arch/loongarch/include/asm/pgalloc.h | 2 +- arch/loongarch/include/asm/pgtable.h | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-)
arch/loongarch/include/asm/pgalloc.h +1 -1
@@ -90,7 +90,7 @@ static inline pud_t *pud_alloc_one(struct mm_struct *mm, unsigned long address) {pud_t *pud; - pud = (pud_t *)__get_free_pages (GFP_KERNEL ,PUD_ORDER ); + pud = (pud_t *)__get_free_page (GFP_KERNEL );if (pud)pud_init ((unsigned long )pud, (unsigned long )invalid_pmd_table);return pud;
arch/loongarch/include/asm/pgtable.h +2 -3
@@ -22,7 +22,6 @@#endif #define PGD_ORDER 0 -#define PUD_ORDER 0#if CONFIG_PGTABLE_LEVELS ==2 #define PGDIR_SHIFT (PAGE_SHIFT + (PAGE_SHIFT - 3))
@@ -38,7 +37,7 @@#define PUD_SHIFT (PMD_SHIFT + (PAGE_SHIFT - 3))#define PUD_SIZE (1UL << PUD_SHIFT)#define PUD_MASK (~(PUD_SIZE-1)) -#define PGDIR_SHIFT (PUD_SHIFT + (PAGE_SHIFT + PUD_ORDER - 3)) +#define PGDIR_SHIFT (PUD_SHIFT + (PAGE_SHIFT - 3))#endif #define PGDIR_SIZE (1UL << PGDIR_SHIFT)
@@ -48,7 +47,7 @@#define PTRS_PER_PGD ((PAGE_SIZE << PGD_ORDER) >> 3)#if CONFIG_PGTABLE_LEVELS >3 -#define PTRS_PER_PUD ((PAGE_SIZE << PUD_ORDER) >> 3) +#define PTRS_PER_PUD (PAGE_SIZE >> 3)#endif #if CONFIG_PGTABLE_LEVELS >2 #define PTRS_PER_PMD (PAGE_SIZE >> 3)
Signature · 1 line
2.34.1
PATCH v2 12/15 loongarch: drop definition of PGD_ORDER
In reply to Mike RapoportFrom: Mike Rapoport <[email protected]>
This is the order of the page table allocation, not the order of a PGD. Since its always hardwired to 0, simply drop it.
--- arch/loongarch/include/asm/pgtable.h | 6 ++---- arch/loongarch/kernel/asm-offsets.c | 2 -- arch/loongarch/mm/pgtable.c | 2 +- 3 files changed, 3 insertions(+), 7 deletions(-)
arch/loongarch/include/asm/pgtable.h +2 -4
@@ -21,8 +21,6 @@#include <asm-generic/pgtable-nop4d.h> #endif -#define PGD_ORDER 0 -#if CONFIG_PGTABLE_LEVELS ==2 #define PGDIR_SHIFT (PAGE_SHIFT + (PAGE_SHIFT - 3))#elif CONFIG_PGTABLE_LEVELS ==3
@@ -43,9 +41,9 @@#define PGDIR_SIZE (1UL << PGDIR_SHIFT)#define PGDIR_MASK (~(PGDIR_SIZE-1)) -#define VA_BITS (PGDIR_SHIFT + (PAGE_SHIFT + PGD_ORDER - 3)) +#define VA_BITS (PGDIR_SHIFT + (PAGE_SHIFT - 3)) -#define PTRS_PER_PGD ((PAGE_SIZE << PGD_ORDER) >> 3) +#define PTRS_PER_PGD (PAGE_SIZE >> 3)#if CONFIG_PGTABLE_LEVELS >3 #define PTRS_PER_PUD (PAGE_SIZE >> 3)#endif
arch/loongarch/kernel/asm-offsets.c +0 -2
@@ -190,8 +190,6 @@ void output_mm_defines(void)#endif DEFINE (_PTE_T_LOG2,PTE_T_LOG2 );BLANK (); -DEFINE (_PGD_ORDER,PGD_ORDER ); -BLANK ();DEFINE (_PMD_SHIFT,PMD_SHIFT );DEFINE (_PGDIR_SHIFT,PGDIR_SHIFT );BLANK ();
arch/loongarch/mm/pgtable.c +1 -1
@@ -13,7 +13,7 @@ pgd_t *pgd_alloc(struct mm_struct *mm) {pgd_t *ret, *init; - ret = (pgd_t *)__get_free_pages (GFP_KERNEL ,PGD_ORDER ); + ret = (pgd_t *)__get_free_page (GFP_KERNEL );if (ret) { init =pgd_offset (&init_mm,0UL );pgd_init ((unsigned long )ret);
Signature · 1 line
2.34.1
PATCH v2 13/15 parisc: Rename PGD_ORDER to PGD_TABLE_ORDER
In reply to Mike RapoportFrom: Mike Rapoport <[email protected]>
This is the order of the page table allocation, not the order of a PGD.
--- arch/parisc/include/asm/pgalloc.h | 6 +++--- arch/parisc/include/asm/pgtable.h | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-)
arch/parisc/include/asm/pgalloc.h +3 -3
@@ -20,18 +20,18 @@ static inline pgd_t *pgd_alloc(struct mm_struct *mm) {pgd_t *pgd; - pgd = (pgd_t *)__get_free_pages (GFP_KERNEL ,PGD_ORDER ); + pgd = (pgd_t *)__get_free_pages (GFP_KERNEL ,PGD_TABLE_ORDER );if (unlikely (pgd ==NULL ))return NULL ; -memset (pgd,0 ,PAGE_SIZE <<PGD_ORDER ); +memset (pgd,0 ,PAGE_SIZE <<PGD_TABLE_ORDER );return pgd; }static inline void pgd_free (struct mm_struct *mm,pgd_t *pgd) { -free_pages ((unsigned long )pgd,PGD_ORDER ); +free_pages ((unsigned long )pgd,PGD_TABLE_ORDER ); }#if CONFIG_PGTABLE_LEVELS ==3
arch/parisc/include/asm/pgtable.h +4 -4
@@ -118,9 +118,9 @@ extern void __update_cache(pte_t pte);#if CONFIG_PGTABLE_LEVELS ==3 #define PMD_TABLE_ORDER 1 -#define PGD_ORDER 0 +#define PGD_TABLE_ORDER 0#else -#define PGD_ORDER 1 +#define PGD_TABLE_ORDER 1#endif /* Definitions for 3rd level (we use PLD here for Page Lower directory
@@ -144,10 +144,10 @@ extern void __update_cache(pte_t pte);/* Definitions for 1st level */ #define PGDIR_SHIFT (PLD_SHIFT + BITS_PER_PTE + BITS_PER_PMD) -#if (PGDIR_SHIFT +PAGE_SHIFT +PGD_ORDER -BITS_PER_PGD_ENTRY ) >BITS_PER_LONG +#if (PGDIR_SHIFT +PAGE_SHIFT +PGD_TABLE_ORDER -BITS_PER_PGD_ENTRY ) >BITS_PER_LONG #define BITS_PER_PGD (BITS_PER_LONG - PGDIR_SHIFT)#else -#define BITS_PER_PGD (PAGE_SHIFT + PGD_ORDER - BITS_PER_PGD_ENTRY) +#define BITS_PER_PGD (PAGE_SHIFT + PGD_TABLE_ORDER - BITS_PER_PGD_ENTRY)#endif #define PGDIR_SIZE (1UL << PGDIR_SHIFT)#define PGDIR_MASK (~(PGDIR_SIZE-1))
Signature · 1 line
2.34.1
PATCH v2 14/15 xtensa: drop definition of PGD_ORDER
In reply to Mike RapoportFrom: Mike Rapoport <[email protected]>
This is the order of the page table allocation, not the order of a PGD. Since its always hardwired to 0, simply drop it.
--- arch/xtensa/include/asm/pgalloc.h | 2 +- arch/xtensa/include/asm/pgtable.h | 1 - 2 files changed, 1 insertion(+), 2 deletions(-)
arch/xtensa/include/asm/pgalloc.h +1 -1
@@ -29,7 +29,7 @@static inline pgd_t *pgd_alloc (struct mm_struct *mm) { -return (pgd_t *)__get_free_pages (GFP_KERNEL | __GFP_ZERO,PGD_ORDER ); +return (pgd_t *)__get_free_page (GFP_KERNEL | __GFP_ZERO); }static inline void ptes_clear (pte_t *ptep)
arch/xtensa/include/asm/pgtable.h +0 -1
@@ -57,7 +57,6 @@#define PTRS_PER_PTE 1024#define PTRS_PER_PTE_SHIFT 10#define PTRS_PER_PGD 1024 -#define PGD_ORDER 0#define USER_PTRS_PER_PGD (TASK_SIZE/PGDIR_SIZE)#define FIRST_USER_PGD_NR (FIRST_USER_ADDRESS >> PGDIR_SHIFT)
Signature · 1 line
2.34.1
Re: [PATCH v2 14/15] xtensa: drop definition of PGD_ORDER
Quoted 5 lines · Mike Rapoport
From: Mike Rapoport <[email protected]>
This is the order of the page table allocation, not the order of a PGD. Since its always hardwired to 0, simply drop it.
it's
arch/xtensa/include/asm/pgalloc.h
Quoted 11 lines
Signed-off-by Mike Rapoport <[email protected]>--- arch/xtensa/include/asm/pgalloc.h | 2 +- arch/xtensa/include/asm/pgtable.h | 1 - 2 files changed, 1 insertion(+), 2 deletions(-)arch/xtensa/include/asm/pgalloc.h +0
-0
Signature · 2 lines
Thanks. -- Max
PATCH v2 15/15 ARM: head.S: rename PMD_ORDER to PMD_ENTRY_ORDER
In reply to Mike RapoportFrom: Mike Rapoport <[email protected]>
PMD_ORDER denotes order of magnitude for a PMD entry, i.e PMD entry size is 2 ^ PMD_ORDER.
Rename PMD_ORDER to PMD_ENTRY_ORDER to allow a generic definition of PMD_ORDER as order of a PMD allocation: (PMD_SHIFT - PAGE_SHIFT).
--- arch/arm/kernel/head.S | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-)
arch/arm/kernel/head.S +17 -17
@@ -38,10 +38,10 @@ #ifdef CONFIG_ARM_LPAE /* LPAE requires an additional page for the PGD */ #define PG_DIR_SIZE 0x5000 -#define PMD_ORDER 3 +#define PMD_ENTRY_ORDER 3 /* PMD entry size is 2^PMD_ENTRY_ORDER */ #else #define PG_DIR_SIZE 0x4000 -#define PMD_ORDER 2 +#define PMD_ENTRY_ORDER 2 #endif .globl swapper_pg_dir
@@ -240,7 +240,7 @@ __create_page_tables: mov r6, r6, lsr #SECTION_SHIFT 1: orr r3, r7, r5, lsl #SECTION_SHIFT @ flags + kernel base - str r3, [r4, r5, lsl #PMD_ORDER] @ identity mapping + str r3, [r4, r5, lsl #PMD_ENTRY_ORDER] @ identity mapping cmp r5, r6 addlo r5, r5, #1 @ next section blo 1b
@@ -250,7 +250,7 @@ __create_page_tables: * set two variables to indicate the physical start and end of the * kernel. */ - add r0, r4, #KERNEL_OFFSET >> (SECTION_SHIFT - PMD_ORDER) + add r0, r4, #KERNEL_OFFSET >> (SECTION_SHIFT - PMD_ENTRY_ORDER) ldr r6, =(_end - 1) adr_l r5, kernel_sec_start @ _pa(kernel_sec_start) #if defined CONFIG_CPU_ENDIAN_BE8 || defined CONFIG_CPU_ENDIAN_BE32
@@ -259,8 +259,8 @@ __create_page_tables: str r8, [r5] @ Save physical start of kernel (LE) #endif orr r3, r8, r7 @ Add the MMU flags - add r6, r4, r6, lsr #(SECTION_SHIFT - PMD_ORDER) -1: str r3, [r0], #1 << PMD_ORDER + add r6, r4, r6, lsr #(SECTION_SHIFT - PMD_ENTRY_ORDER) +1: str r3, [r0], #1 << PMD_ENTRY_ORDER add r3, r3, #1 << SECTION_SHIFT cmp r0, r6 bls 1b
@@ -280,14 +280,14 @@ __create_page_tables: mov r3, pc mov r3, r3, lsr #SECTION_SHIFT orr r3, r7, r3, lsl #SECTION_SHIFT - add r0, r4, #(XIP_START & 0xff000000) >> (SECTION_SHIFT - PMD_ORDER) - str r3, [r0, #((XIP_START & 0x00f00000) >> SECTION_SHIFT) << PMD_ORDER]! + add r0, r4, #(XIP_START & 0xff000000) >> (SECTION_SHIFT - PMD_ENTRY_ORDER) + str r3, [r0, #((XIP_START & 0x00f00000) >> SECTION_SHIFT) << PMD_ENTRY_ORDER]! ldr r6, =(_edata_loc - 1) - add r0, r0, #1 << PMD_ORDER - add r6, r4, r6, lsr #(SECTION_SHIFT - PMD_ORDER) + add r0, r0, #1 << PMD_ENTRY_ORDER + add r6, r4, r6, lsr #(SECTION_SHIFT - PMD_ENTRY_ORDER) 1: cmp r0, r6 add r3, r3, #1 << SECTION_SHIFT - strls r3, [r0], #1 << PMD_ORDER + strls r3, [r0], #1 << PMD_ENTRY_ORDER bls 1b #endif
@@ -297,10 +297,10 @@ __create_page_tables: */ mov r0, r2, lsr #SECTION_SHIFT cmp r2, #0 - ldrne r3, =FDT_FIXED_BASE >> (SECTION_SHIFT - PMD_ORDER) + ldrne r3, =FDT_FIXED_BASE >> (SECTION_SHIFT - PMD_ENTRY_ORDER) addne r3, r3, r4 orrne r6, r7, r0, lsl #SECTION_SHIFT - strne r6, [r3], #1 << PMD_ORDER + strne r6, [r3], #1 << PMD_ENTRY_ORDER addne r6, r6, #1 << SECTION_SHIFT strne r6, [r3]
@@ -319,7 +319,7 @@ __create_page_tables: addruart r7, r3, r0 mov r3, r3, lsr #SECTION_SHIFT - mov r3, r3, lsl #PMD_ORDER + mov r3, r3, lsl #PMD_ENTRY_ORDER add r0, r4, r3 mov r3, r7, lsr #SECTION_SHIFT
@@ -349,7 +349,7 @@ __create_page_tables: * If we're using the NetWinder or CATS, we also need to map * in the 16550-type serial port for the debug messages */ - add r0, r4, #0xff000000 >> (SECTION_SHIFT - PMD_ORDER) + add r0, r4, #0xff000000 >> (SECTION_SHIFT - PMD_ENTRY_ORDER) orr r3, r7, #0x7c000000 str r3, [r0] #endif
@@ -359,10 +359,10 @@ __create_page_tables: * Similar reasons here - for debug. This is * only for Acorn RiscPC architectures. */ - add r0, r4, #0x02000000 >> (SECTION_SHIFT - PMD_ORDER) + add r0, r4, #0x02000000 >> (SECTION_SHIFT - PMD_ENTRY_ORDER) orr r3, r7, #0x02000000 str r3, [r0] - add r0, r4, #0xd8000000 >> (SECTION_SHIFT - PMD_ORDER) + add r0, r4, #0xd8000000 >> (SECTION_SHIFT - PMD_ENTRY_ORDER) str r3, [r0] #endif #endif
Signature · 1 line
2.34.1