Skip to content

Commit 9849a56

Browse files
kiryltorvalds
authored andcommitted
arch, mm: convert all architectures to use 5level-fixup.h
If an architecture uses 4level-fixup.h we don't need to do anything as it includes 5level-fixup.h. If an architecture uses pgtable-nop*d.h, define __ARCH_USE_5LEVEL_HACK before inclusion of the header. It makes asm-generic code to use 5level-fixup.h. If an architecture has 4-level paging or folds levels on its own, include 5level-fixup.h directly. Signed-off-by: Kirill A. Shutemov <[email protected]> Acked-by: Michal Hocko <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
1 parent 30ec842 commit 9849a56

File tree

34 files changed

+46
-1
lines changed

34 files changed

+46
-1
lines changed

arch/arc/include/asm/hugepage.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
#define _ASM_ARC_HUGEPAGE_H
1212

1313
#include <linux/types.h>
14+
#define __ARCH_USE_5LEVEL_HACK
1415
#include <asm-generic/pgtable-nopmd.h>
1516

1617
static inline pte_t pmd_pte(pmd_t pmd)

arch/arc/include/asm/pgtable.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737

3838
#include <asm/page.h>
3939
#include <asm/mmu.h>
40+
#define __ARCH_USE_5LEVEL_HACK
4041
#include <asm-generic/pgtable-nopmd.h>
4142
#include <linux/const.h>
4243

arch/arm/include/asm/pgtable.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020

2121
#else
2222

23+
#define __ARCH_USE_5LEVEL_HACK
2324
#include <asm-generic/pgtable-nopud.h>
2425
#include <asm/memory.h>
2526
#include <asm/pgtable-hwdef.h>

arch/arm64/include/asm/pgtable-types.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,9 +55,13 @@ typedef struct { pteval_t pgprot; } pgprot_t;
5555
#define __pgprot(x) ((pgprot_t) { (x) } )
5656

5757
#if CONFIG_PGTABLE_LEVELS == 2
58+
#define __ARCH_USE_5LEVEL_HACK
5859
#include <asm-generic/pgtable-nopmd.h>
5960
#elif CONFIG_PGTABLE_LEVELS == 3
61+
#define __ARCH_USE_5LEVEL_HACK
6062
#include <asm-generic/pgtable-nopud.h>
63+
#elif CONFIG_PGTABLE_LEVELS == 4
64+
#include <asm-generic/5level-fixup.h>
6165
#endif
6266

6367
#endif /* __ASM_PGTABLE_TYPES_H */

arch/avr32/include/asm/pgtable-2level.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
#ifndef __ASM_AVR32_PGTABLE_2LEVEL_H
99
#define __ASM_AVR32_PGTABLE_2LEVEL_H
1010

11+
#define __ARCH_USE_5LEVEL_HACK
1112
#include <asm-generic/pgtable-nopmd.h>
1213

1314
/*

arch/cris/include/asm/pgtable.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
#define _CRIS_PGTABLE_H
77

88
#include <asm/page.h>
9+
#define __ARCH_USE_5LEVEL_HACK
910
#include <asm-generic/pgtable-nopmd.h>
1011

1112
#ifndef __ASSEMBLY__

arch/frv/include/asm/pgtable.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
#ifndef _ASM_PGTABLE_H
1717
#define _ASM_PGTABLE_H
1818

19+
#include <asm-generic/5level-fixup.h>
1920
#include <asm/mem-layout.h>
2021
#include <asm/setup.h>
2122
#include <asm/processor.h>

arch/h8300/include/asm/pgtable.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
#ifndef _H8300_PGTABLE_H
22
#define _H8300_PGTABLE_H
3+
#define __ARCH_USE_5LEVEL_HACK
34
#include <asm-generic/pgtable-nopud.h>
45
#include <asm-generic/pgtable.h>
56
#define pgtable_cache_init() do { } while (0)

arch/hexagon/include/asm/pgtable.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
*/
2727
#include <linux/swap.h>
2828
#include <asm/page.h>
29+
#define __ARCH_USE_5LEVEL_HACK
2930
#include <asm-generic/pgtable-nopmd.h>
3031

3132
/* A handy thing to have if one has the RAM. Declared in head.S */

arch/ia64/include/asm/pgtable.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -587,8 +587,10 @@ extern struct page *zero_page_memmap_ptr;
587587

588588

589589
#if CONFIG_PGTABLE_LEVELS == 3
590+
#define __ARCH_USE_5LEVEL_HACK
590591
#include <asm-generic/pgtable-nopud.h>
591592
#endif
593+
#include <asm-generic/5level-fixup.h>
592594
#include <asm-generic/pgtable.h>
593595

594596
#endif /* _ASM_IA64_PGTABLE_H */

arch/metag/include/asm/pgtable.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
#define _METAG_PGTABLE_H
77

88
#include <asm/pgtable-bits.h>
9+
#define __ARCH_USE_5LEVEL_HACK
910
#include <asm-generic/pgtable-nopmd.h>
1011

1112
/* Invalid regions on Meta: 0x00000000-0x001FFFFF and 0xFFFF0000-0xFFFFFFFF */

arch/microblaze/include/asm/page.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,8 @@ typedef struct { unsigned long pgd; } pgd_t;
9595
# else /* CONFIG_MMU */
9696
typedef struct { unsigned long ste[64]; } pmd_t;
9797
typedef struct { pmd_t pue[1]; } pud_t;
98-
typedef struct { pud_t pge[1]; } pgd_t;
98+
typedef struct { pud_t p4e[1]; } p4d_t;
99+
typedef struct { p4d_t pge[1]; } pgd_t;
99100
# endif /* CONFIG_MMU */
100101

101102
# define pte_val(x) ((x).pte)

arch/mips/include/asm/pgtable-32.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
#include <asm/cachectl.h>
1717
#include <asm/fixmap.h>
1818

19+
#define __ARCH_USE_5LEVEL_HACK
1920
#include <asm-generic/pgtable-nopmd.h>
2021

2122
extern int temp_tlb_entry;

arch/mips/include/asm/pgtable-64.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
#include <asm/cachectl.h>
1818
#include <asm/fixmap.h>
1919

20+
#define __ARCH_USE_5LEVEL_HACK
2021
#if defined(CONFIG_PAGE_SIZE_64KB) && !defined(CONFIG_MIPS_VA_BITS_48)
2122
#include <asm-generic/pgtable-nopmd.h>
2223
#else

arch/mn10300/include/asm/page.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ typedef struct page *pgtable_t;
5757
#define __pgd(x) ((pgd_t) { (x) })
5858
#define __pgprot(x) ((pgprot_t) { (x) })
5959

60+
#define __ARCH_USE_5LEVEL_HACK
6061
#include <asm-generic/pgtable-nopmd.h>
6162

6263
#endif /* !__ASSEMBLY__ */

arch/nios2/include/asm/pgtable.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
#include <asm/tlbflush.h>
2323

2424
#include <asm/pgtable-bits.h>
25+
#define __ARCH_USE_5LEVEL_HACK
2526
#include <asm-generic/pgtable-nopmd.h>
2627

2728
#define FIRST_USER_ADDRESS 0UL

arch/openrisc/include/asm/pgtable.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
#ifndef __ASM_OPENRISC_PGTABLE_H
2626
#define __ASM_OPENRISC_PGTABLE_H
2727

28+
#define __ARCH_USE_5LEVEL_HACK
2829
#include <asm-generic/pgtable-nopmd.h>
2930

3031
#ifndef __ASSEMBLY__

arch/powerpc/include/asm/book3s/32/pgtable.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#ifndef _ASM_POWERPC_BOOK3S_32_PGTABLE_H
22
#define _ASM_POWERPC_BOOK3S_32_PGTABLE_H
33

4+
#define __ARCH_USE_5LEVEL_HACK
45
#include <asm-generic/pgtable-nopmd.h>
56

67
#include <asm/book3s/32/hash.h>

arch/powerpc/include/asm/book3s/64/pgtable.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
#ifndef _ASM_POWERPC_BOOK3S_64_PGTABLE_H_
22
#define _ASM_POWERPC_BOOK3S_64_PGTABLE_H_
33

4+
#include <asm-generic/5level-fixup.h>
5+
46
#ifndef __ASSEMBLY__
57
#include <linux/mmdebug.h>
68
#endif
9+
710
/*
811
* Common bits between hash and Radix page table
912
*/

arch/powerpc/include/asm/nohash/32/pgtable.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#ifndef _ASM_POWERPC_NOHASH_32_PGTABLE_H
22
#define _ASM_POWERPC_NOHASH_32_PGTABLE_H
33

4+
#define __ARCH_USE_5LEVEL_HACK
45
#include <asm-generic/pgtable-nopmd.h>
56

67
#ifndef __ASSEMBLY__

arch/powerpc/include/asm/nohash/64/pgtable-4k.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
#ifndef _ASM_POWERPC_NOHASH_64_PGTABLE_4K_H
22
#define _ASM_POWERPC_NOHASH_64_PGTABLE_4K_H
3+
4+
#include <asm-generic/5level-fixup.h>
5+
36
/*
47
* Entries per page directory level. The PTE level must use a 64b record
58
* for each page table entry. The PMD and PGD level use a 32b record for

arch/powerpc/include/asm/nohash/64/pgtable-64k.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#ifndef _ASM_POWERPC_NOHASH_64_PGTABLE_64K_H
22
#define _ASM_POWERPC_NOHASH_64_PGTABLE_64K_H
33

4+
#define __ARCH_USE_5LEVEL_HACK
45
#include <asm-generic/pgtable-nopud.h>
56

67

arch/s390/include/asm/pgtable.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
* the S390 page table tree.
2525
*/
2626
#ifndef __ASSEMBLY__
27+
#include <asm-generic/5level-fixup.h>
2728
#include <linux/sched.h>
2829
#include <linux/mm_types.h>
2930
#include <linux/page-flags.h>

arch/score/include/asm/pgtable.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
#define _ASM_SCORE_PGTABLE_H
33

44
#include <linux/const.h>
5+
#define __ARCH_USE_5LEVEL_HACK
56
#include <asm-generic/pgtable-nopmd.h>
67

78
#include <asm/fixmap.h>

arch/sh/include/asm/pgtable-2level.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#ifndef __ASM_SH_PGTABLE_2LEVEL_H
22
#define __ASM_SH_PGTABLE_2LEVEL_H
33

4+
#define __ARCH_USE_5LEVEL_HACK
45
#include <asm-generic/pgtable-nopmd.h>
56

67
/*

arch/sh/include/asm/pgtable-3level.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#ifndef __ASM_SH_PGTABLE_3LEVEL_H
22
#define __ASM_SH_PGTABLE_3LEVEL_H
33

4+
#define __ARCH_USE_5LEVEL_HACK
45
#include <asm-generic/pgtable-nopud.h>
56

67
/*

arch/sparc/include/asm/pgtable_64.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
* the SpitFire page tables.
1313
*/
1414

15+
#include <asm-generic/5level-fixup.h>
1516
#include <linux/compiler.h>
1617
#include <linux/const.h>
1718
#include <asm/types.h>

arch/tile/include/asm/pgtable_32.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ extern unsigned long VMALLOC_RESERVE /* = CONFIG_VMALLOC_RESERVE */;
7474
#define MAXMEM (_VMALLOC_START - PAGE_OFFSET)
7575

7676
/* We have no pmd or pud since we are strictly a two-level page table */
77+
#define __ARCH_USE_5LEVEL_HACK
7778
#include <asm-generic/pgtable-nopmd.h>
7879

7980
static inline int pud_huge_page(pud_t pud) { return 0; }

arch/tile/include/asm/pgtable_64.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@
5959
#ifndef __ASSEMBLY__
6060

6161
/* We have no pud since we are a three-level page table. */
62+
#define __ARCH_USE_5LEVEL_HACK
6263
#include <asm-generic/pgtable-nopud.h>
6364

6465
/*

arch/um/include/asm/pgtable-2level.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
#ifndef __UM_PGTABLE_2LEVEL_H
99
#define __UM_PGTABLE_2LEVEL_H
1010

11+
#define __ARCH_USE_5LEVEL_HACK
1112
#include <asm-generic/pgtable-nopmd.h>
1213

1314
/* PGDIR_SHIFT determines what a third-level page table entry can map */

arch/um/include/asm/pgtable-3level.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
#ifndef __UM_PGTABLE_3LEVEL_H
88
#define __UM_PGTABLE_3LEVEL_H
99

10+
#define __ARCH_USE_5LEVEL_HACK
1011
#include <asm-generic/pgtable-nopud.h>
1112

1213
/* PGDIR_SHIFT determines what a third-level page table entry can map */

arch/unicore32/include/asm/pgtable.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
#ifndef __UNICORE_PGTABLE_H__
1313
#define __UNICORE_PGTABLE_H__
1414

15+
#define __ARCH_USE_5LEVEL_HACK
1516
#include <asm-generic/pgtable-nopmd.h>
1617
#include <asm/cpu-single.h>
1718

arch/x86/include/asm/pgtable_types.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -273,6 +273,8 @@ static inline pgdval_t pgd_flags(pgd_t pgd)
273273
}
274274

275275
#if CONFIG_PGTABLE_LEVELS > 3
276+
#include <asm-generic/5level-fixup.h>
277+
276278
typedef struct { pudval_t pud; } pud_t;
277279

278280
static inline pud_t native_make_pud(pmdval_t val)
@@ -285,6 +287,7 @@ static inline pudval_t native_pud_val(pud_t pud)
285287
return pud.pud;
286288
}
287289
#else
290+
#define __ARCH_USE_5LEVEL_HACK
288291
#include <asm-generic/pgtable-nopud.h>
289292

290293
static inline pudval_t native_pud_val(pud_t pud)
@@ -306,6 +309,7 @@ static inline pmdval_t native_pmd_val(pmd_t pmd)
306309
return pmd.pmd;
307310
}
308311
#else
312+
#define __ARCH_USE_5LEVEL_HACK
309313
#include <asm-generic/pgtable-nopmd.h>
310314

311315
static inline pmdval_t native_pmd_val(pmd_t pmd)

arch/xtensa/include/asm/pgtable.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
#ifndef _XTENSA_PGTABLE_H
1212
#define _XTENSA_PGTABLE_H
1313

14+
#define __ARCH_USE_5LEVEL_HACK
1415
#include <asm-generic/pgtable-nopmd.h>
1516
#include <asm/page.h>
1617
#include <asm/kmem_layout.h>

0 commit comments

Comments
 (0)