diff options
author | Kirill A. Shutemov <kirill.shutemov@linux.intel.com> | 2018-05-18 06:35:24 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2018-05-19 05:56:57 -0400 |
commit | ed7588d5dc6f5e7202fb9bbeb14d94706ba225d7 (patch) | |
tree | 359a4e804f7d677e83b0283975bb1bc39ae3ca56 /arch/x86 | |
parent | ad3fe525b9507d8d750d60e8e5dd8e0c0836fb99 (diff) |
x86/mm: Stop pretending pgtable_l5_enabled is a variable
pgtable_l5_enabled is defined using cpu_feature_enabled() but we refer
to it as a variable. This is misleading.
Make pgtable_l5_enabled() a function.
We cannot literally define it as a function due to circular dependencies
between header files. Function-alike macros is close enough.
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Hugh Dickins <hughd@google.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/r/20180518103528.59260-4-kirill.shutemov@linux.intel.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'arch/x86')
-rw-r--r-- | arch/x86/include/asm/page_64_types.h | 2 | ||||
-rw-r--r-- | arch/x86/include/asm/paravirt.h | 4 | ||||
-rw-r--r-- | arch/x86/include/asm/pgalloc.h | 4 | ||||
-rw-r--r-- | arch/x86/include/asm/pgtable.h | 10 | ||||
-rw-r--r-- | arch/x86/include/asm/pgtable_32_types.h | 2 | ||||
-rw-r--r-- | arch/x86/include/asm/pgtable_64.h | 2 | ||||
-rw-r--r-- | arch/x86/include/asm/pgtable_64_types.h | 14 | ||||
-rw-r--r-- | arch/x86/include/asm/sparsemem.h | 4 | ||||
-rw-r--r-- | arch/x86/kernel/head64.c | 2 | ||||
-rw-r--r-- | arch/x86/kernel/machine_kexec_64.c | 3 | ||||
-rw-r--r-- | arch/x86/mm/dump_pagetables.c | 6 | ||||
-rw-r--r-- | arch/x86/mm/fault.c | 4 | ||||
-rw-r--r-- | arch/x86/mm/ident_map.c | 2 | ||||
-rw-r--r-- | arch/x86/mm/init_64.c | 8 | ||||
-rw-r--r-- | arch/x86/mm/kasan_init_64.c | 8 | ||||
-rw-r--r-- | arch/x86/mm/kaslr.c | 8 | ||||
-rw-r--r-- | arch/x86/mm/tlb.c | 2 | ||||
-rw-r--r-- | arch/x86/platform/efi/efi_64.c | 2 | ||||
-rw-r--r-- | arch/x86/power/hibernate_64.c | 2 |
19 files changed, 47 insertions, 42 deletions
diff --git a/arch/x86/include/asm/page_64_types.h b/arch/x86/include/asm/page_64_types.h index 2c5a966dc222..6afac386a434 100644 --- a/arch/x86/include/asm/page_64_types.h +++ b/arch/x86/include/asm/page_64_types.h | |||
@@ -53,7 +53,7 @@ | |||
53 | #define __PHYSICAL_MASK_SHIFT 52 | 53 | #define __PHYSICAL_MASK_SHIFT 52 |
54 | 54 | ||
55 | #ifdef CONFIG_X86_5LEVEL | 55 | #ifdef CONFIG_X86_5LEVEL |
56 | #define __VIRTUAL_MASK_SHIFT (pgtable_l5_enabled ? 56 : 47) | 56 | #define __VIRTUAL_MASK_SHIFT (pgtable_l5_enabled() ? 56 : 47) |
57 | #else | 57 | #else |
58 | #define __VIRTUAL_MASK_SHIFT 47 | 58 | #define __VIRTUAL_MASK_SHIFT 47 |
59 | #endif | 59 | #endif |
diff --git a/arch/x86/include/asm/paravirt.h b/arch/x86/include/asm/paravirt.h index 9be2bf13825b..d49bbf4bb5c8 100644 --- a/arch/x86/include/asm/paravirt.h +++ b/arch/x86/include/asm/paravirt.h | |||
@@ -574,14 +574,14 @@ static inline void __set_pgd(pgd_t *pgdp, pgd_t pgd) | |||
574 | } | 574 | } |
575 | 575 | ||
576 | #define set_pgd(pgdp, pgdval) do { \ | 576 | #define set_pgd(pgdp, pgdval) do { \ |
577 | if (pgtable_l5_enabled) \ | 577 | if (pgtable_l5_enabled()) \ |
578 | __set_pgd(pgdp, pgdval); \ | 578 | __set_pgd(pgdp, pgdval); \ |
579 | else \ | 579 | else \ |
580 | set_p4d((p4d_t *)(pgdp), (p4d_t) { (pgdval).pgd }); \ | 580 | set_p4d((p4d_t *)(pgdp), (p4d_t) { (pgdval).pgd }); \ |
581 | } while (0) | 581 | } while (0) |
582 | 582 | ||
583 | #define pgd_clear(pgdp) do { \ | 583 | #define pgd_clear(pgdp) do { \ |
584 | if (pgtable_l5_enabled) \ | 584 | if (pgtable_l5_enabled()) \ |
585 | set_pgd(pgdp, __pgd(0)); \ | 585 | set_pgd(pgdp, __pgd(0)); \ |
586 | } while (0) | 586 | } while (0) |
587 | 587 | ||
diff --git a/arch/x86/include/asm/pgalloc.h b/arch/x86/include/asm/pgalloc.h index 263c142a6a6c..ada6410fd2ec 100644 --- a/arch/x86/include/asm/pgalloc.h +++ b/arch/x86/include/asm/pgalloc.h | |||
@@ -167,7 +167,7 @@ static inline void __pud_free_tlb(struct mmu_gather *tlb, pud_t *pud, | |||
167 | #if CONFIG_PGTABLE_LEVELS > 4 | 167 | #if CONFIG_PGTABLE_LEVELS > 4 |
168 | static inline void pgd_populate(struct mm_struct *mm, pgd_t *pgd, p4d_t *p4d) | 168 | static inline void pgd_populate(struct mm_struct *mm, pgd_t *pgd, p4d_t *p4d) |
169 | { | 169 | { |
170 | if (!pgtable_l5_enabled) | 170 | if (!pgtable_l5_enabled()) |
171 | return; | 171 | return; |
172 | paravirt_alloc_p4d(mm, __pa(p4d) >> PAGE_SHIFT); | 172 | paravirt_alloc_p4d(mm, __pa(p4d) >> PAGE_SHIFT); |
173 | set_pgd(pgd, __pgd(_PAGE_TABLE | __pa(p4d))); | 173 | set_pgd(pgd, __pgd(_PAGE_TABLE | __pa(p4d))); |
@@ -193,7 +193,7 @@ extern void ___p4d_free_tlb(struct mmu_gather *tlb, p4d_t *p4d); | |||
193 | static inline void __p4d_free_tlb(struct mmu_gather *tlb, p4d_t *p4d, | 193 | static inline void __p4d_free_tlb(struct mmu_gather *tlb, p4d_t *p4d, |
194 | unsigned long address) | 194 | unsigned long address) |
195 | { | 195 | { |
196 | if (pgtable_l5_enabled) | 196 | if (pgtable_l5_enabled()) |
197 | ___p4d_free_tlb(tlb, p4d); | 197 | ___p4d_free_tlb(tlb, p4d); |
198 | } | 198 | } |
199 | 199 | ||
diff --git a/arch/x86/include/asm/pgtable.h b/arch/x86/include/asm/pgtable.h index f1633de5a675..5715647fc4fe 100644 --- a/arch/x86/include/asm/pgtable.h +++ b/arch/x86/include/asm/pgtable.h | |||
@@ -65,7 +65,7 @@ extern pmdval_t early_pmd_flags; | |||
65 | 65 | ||
66 | #ifndef __PAGETABLE_P4D_FOLDED | 66 | #ifndef __PAGETABLE_P4D_FOLDED |
67 | #define set_pgd(pgdp, pgd) native_set_pgd(pgdp, pgd) | 67 | #define set_pgd(pgdp, pgd) native_set_pgd(pgdp, pgd) |
68 | #define pgd_clear(pgd) (pgtable_l5_enabled ? native_pgd_clear(pgd) : 0) | 68 | #define pgd_clear(pgd) (pgtable_l5_enabled() ? native_pgd_clear(pgd) : 0) |
69 | #endif | 69 | #endif |
70 | 70 | ||
71 | #ifndef set_p4d | 71 | #ifndef set_p4d |
@@ -881,7 +881,7 @@ static inline unsigned long p4d_index(unsigned long address) | |||
881 | #if CONFIG_PGTABLE_LEVELS > 4 | 881 | #if CONFIG_PGTABLE_LEVELS > 4 |
882 | static inline int pgd_present(pgd_t pgd) | 882 | static inline int pgd_present(pgd_t pgd) |
883 | { | 883 | { |
884 | if (!pgtable_l5_enabled) | 884 | if (!pgtable_l5_enabled()) |
885 | return 1; | 885 | return 1; |
886 | return pgd_flags(pgd) & _PAGE_PRESENT; | 886 | return pgd_flags(pgd) & _PAGE_PRESENT; |
887 | } | 887 | } |
@@ -900,7 +900,7 @@ static inline unsigned long pgd_page_vaddr(pgd_t pgd) | |||
900 | /* to find an entry in a page-table-directory. */ | 900 | /* to find an entry in a page-table-directory. */ |
901 | static inline p4d_t *p4d_offset(pgd_t *pgd, unsigned long address) | 901 | static inline p4d_t *p4d_offset(pgd_t *pgd, unsigned long address) |
902 | { | 902 | { |
903 | if (!pgtable_l5_enabled) | 903 | if (!pgtable_l5_enabled()) |
904 | return (p4d_t *)pgd; | 904 | return (p4d_t *)pgd; |
905 | return (p4d_t *)pgd_page_vaddr(*pgd) + p4d_index(address); | 905 | return (p4d_t *)pgd_page_vaddr(*pgd) + p4d_index(address); |
906 | } | 906 | } |
@@ -909,7 +909,7 @@ static inline int pgd_bad(pgd_t pgd) | |||
909 | { | 909 | { |
910 | unsigned long ignore_flags = _PAGE_USER; | 910 | unsigned long ignore_flags = _PAGE_USER; |
911 | 911 | ||
912 | if (!pgtable_l5_enabled) | 912 | if (!pgtable_l5_enabled()) |
913 | return 0; | 913 | return 0; |
914 | 914 | ||
915 | if (IS_ENABLED(CONFIG_PAGE_TABLE_ISOLATION)) | 915 | if (IS_ENABLED(CONFIG_PAGE_TABLE_ISOLATION)) |
@@ -920,7 +920,7 @@ static inline int pgd_bad(pgd_t pgd) | |||
920 | 920 | ||
921 | static inline int pgd_none(pgd_t pgd) | 921 | static inline int pgd_none(pgd_t pgd) |
922 | { | 922 | { |
923 | if (!pgtable_l5_enabled) | 923 | if (!pgtable_l5_enabled()) |
924 | return 0; | 924 | return 0; |
925 | /* | 925 | /* |
926 | * There is no need to do a workaround for the KNL stray | 926 | * There is no need to do a workaround for the KNL stray |
diff --git a/arch/x86/include/asm/pgtable_32_types.h b/arch/x86/include/asm/pgtable_32_types.h index e3225e83db7d..d9a001a4a872 100644 --- a/arch/x86/include/asm/pgtable_32_types.h +++ b/arch/x86/include/asm/pgtable_32_types.h | |||
@@ -15,7 +15,7 @@ | |||
15 | # include <asm/pgtable-2level_types.h> | 15 | # include <asm/pgtable-2level_types.h> |
16 | #endif | 16 | #endif |
17 | 17 | ||
18 | #define pgtable_l5_enabled 0 | 18 | #define pgtable_l5_enabled() 0 |
19 | 19 | ||
20 | #define PGDIR_SIZE (1UL << PGDIR_SHIFT) | 20 | #define PGDIR_SIZE (1UL << PGDIR_SHIFT) |
21 | #define PGDIR_MASK (~(PGDIR_SIZE - 1)) | 21 | #define PGDIR_MASK (~(PGDIR_SIZE - 1)) |
diff --git a/arch/x86/include/asm/pgtable_64.h b/arch/x86/include/asm/pgtable_64.h index 877bc27718ae..3c5385f9a88f 100644 --- a/arch/x86/include/asm/pgtable_64.h +++ b/arch/x86/include/asm/pgtable_64.h | |||
@@ -220,7 +220,7 @@ static inline void native_set_p4d(p4d_t *p4dp, p4d_t p4d) | |||
220 | { | 220 | { |
221 | pgd_t pgd; | 221 | pgd_t pgd; |
222 | 222 | ||
223 | if (pgtable_l5_enabled || !IS_ENABLED(CONFIG_PAGE_TABLE_ISOLATION)) { | 223 | if (pgtable_l5_enabled() || !IS_ENABLED(CONFIG_PAGE_TABLE_ISOLATION)) { |
224 | *p4dp = p4d; | 224 | *p4dp = p4d; |
225 | return; | 225 | return; |
226 | } | 226 | } |
diff --git a/arch/x86/include/asm/pgtable_64_types.h b/arch/x86/include/asm/pgtable_64_types.h index c14a4116a693..054765ab2da2 100644 --- a/arch/x86/include/asm/pgtable_64_types.h +++ b/arch/x86/include/asm/pgtable_64_types.h | |||
@@ -28,12 +28,16 @@ extern unsigned int __pgtable_l5_enabled; | |||
28 | * cpu_feature_enabled() is not available in early boot code. | 28 | * cpu_feature_enabled() is not available in early boot code. |
29 | * Use variable instead. | 29 | * Use variable instead. |
30 | */ | 30 | */ |
31 | #define pgtable_l5_enabled __pgtable_l5_enabled | 31 | static inline bool pgtable_l5_enabled(void) |
32 | { | ||
33 | return __pgtable_l5_enabled; | ||
34 | } | ||
32 | #else | 35 | #else |
33 | #define pgtable_l5_enabled cpu_feature_enabled(X86_FEATURE_LA57) | 36 | #define pgtable_l5_enabled() cpu_feature_enabled(X86_FEATURE_LA57) |
34 | #endif /* USE_EARLY_PGTABLE_L5 */ | 37 | #endif /* USE_EARLY_PGTABLE_L5 */ |
38 | |||
35 | #else | 39 | #else |
36 | #define pgtable_l5_enabled 0 | 40 | #define pgtable_l5_enabled() 0 |
37 | #endif /* CONFIG_X86_5LEVEL */ | 41 | #endif /* CONFIG_X86_5LEVEL */ |
38 | 42 | ||
39 | extern unsigned int pgdir_shift; | 43 | extern unsigned int pgdir_shift; |
@@ -109,7 +113,7 @@ extern unsigned int ptrs_per_p4d; | |||
109 | 113 | ||
110 | #define LDT_PGD_ENTRY_L4 -3UL | 114 | #define LDT_PGD_ENTRY_L4 -3UL |
111 | #define LDT_PGD_ENTRY_L5 -112UL | 115 | #define LDT_PGD_ENTRY_L5 -112UL |
112 | #define LDT_PGD_ENTRY (pgtable_l5_enabled ? LDT_PGD_ENTRY_L5 : LDT_PGD_ENTRY_L4) | 116 | #define LDT_PGD_ENTRY (pgtable_l5_enabled() ? LDT_PGD_ENTRY_L5 : LDT_PGD_ENTRY_L4) |
113 | #define LDT_BASE_ADDR (LDT_PGD_ENTRY << PGDIR_SHIFT) | 117 | #define LDT_BASE_ADDR (LDT_PGD_ENTRY << PGDIR_SHIFT) |
114 | 118 | ||
115 | #define __VMALLOC_BASE_L4 0xffffc90000000000UL | 119 | #define __VMALLOC_BASE_L4 0xffffc90000000000UL |
@@ -123,7 +127,7 @@ extern unsigned int ptrs_per_p4d; | |||
123 | 127 | ||
124 | #ifdef CONFIG_DYNAMIC_MEMORY_LAYOUT | 128 | #ifdef CONFIG_DYNAMIC_MEMORY_LAYOUT |
125 | # define VMALLOC_START vmalloc_base | 129 | # define VMALLOC_START vmalloc_base |
126 | # define VMALLOC_SIZE_TB (pgtable_l5_enabled ? VMALLOC_SIZE_TB_L5 : VMALLOC_SIZE_TB_L4) | 130 | # define VMALLOC_SIZE_TB (pgtable_l5_enabled() ? VMALLOC_SIZE_TB_L5 : VMALLOC_SIZE_TB_L4) |
127 | # define VMEMMAP_START vmemmap_base | 131 | # define VMEMMAP_START vmemmap_base |
128 | #else | 132 | #else |
129 | # define VMALLOC_START __VMALLOC_BASE_L4 | 133 | # define VMALLOC_START __VMALLOC_BASE_L4 |
diff --git a/arch/x86/include/asm/sparsemem.h b/arch/x86/include/asm/sparsemem.h index 4617a2bf123c..199218719a86 100644 --- a/arch/x86/include/asm/sparsemem.h +++ b/arch/x86/include/asm/sparsemem.h | |||
@@ -27,8 +27,8 @@ | |||
27 | # endif | 27 | # endif |
28 | #else /* CONFIG_X86_32 */ | 28 | #else /* CONFIG_X86_32 */ |
29 | # define SECTION_SIZE_BITS 27 /* matt - 128 is convenient right now */ | 29 | # define SECTION_SIZE_BITS 27 /* matt - 128 is convenient right now */ |
30 | # define MAX_PHYSADDR_BITS (pgtable_l5_enabled ? 52 : 44) | 30 | # define MAX_PHYSADDR_BITS (pgtable_l5_enabled() ? 52 : 44) |
31 | # define MAX_PHYSMEM_BITS (pgtable_l5_enabled ? 52 : 46) | 31 | # define MAX_PHYSMEM_BITS (pgtable_l5_enabled() ? 52 : 46) |
32 | #endif | 32 | #endif |
33 | 33 | ||
34 | #endif /* CONFIG_SPARSEMEM */ | 34 | #endif /* CONFIG_SPARSEMEM */ |
diff --git a/arch/x86/kernel/head64.c b/arch/x86/kernel/head64.c index 494fea1dbd6e..8d372d1c266d 100644 --- a/arch/x86/kernel/head64.c +++ b/arch/x86/kernel/head64.c | |||
@@ -279,7 +279,7 @@ again: | |||
279 | * critical -- __PAGE_OFFSET would point us back into the dynamic | 279 | * critical -- __PAGE_OFFSET would point us back into the dynamic |
280 | * range and we might end up looping forever... | 280 | * range and we might end up looping forever... |
281 | */ | 281 | */ |
282 | if (!pgtable_l5_enabled) | 282 | if (!pgtable_l5_enabled()) |
283 | p4d_p = pgd_p; | 283 | p4d_p = pgd_p; |
284 | else if (pgd) | 284 | else if (pgd) |
285 | p4d_p = (p4dval_t *)((pgd & PTE_PFN_MASK) + __START_KERNEL_map - phys_base); | 285 | p4d_p = (p4dval_t *)((pgd & PTE_PFN_MASK) + __START_KERNEL_map - phys_base); |
diff --git a/arch/x86/kernel/machine_kexec_64.c b/arch/x86/kernel/machine_kexec_64.c index 6010449ca6d2..4c8acdfdc5a7 100644 --- a/arch/x86/kernel/machine_kexec_64.c +++ b/arch/x86/kernel/machine_kexec_64.c | |||
@@ -354,7 +354,8 @@ void arch_crash_save_vmcoreinfo(void) | |||
354 | { | 354 | { |
355 | VMCOREINFO_NUMBER(phys_base); | 355 | VMCOREINFO_NUMBER(phys_base); |
356 | VMCOREINFO_SYMBOL(init_top_pgt); | 356 | VMCOREINFO_SYMBOL(init_top_pgt); |
357 | VMCOREINFO_NUMBER(pgtable_l5_enabled); | 357 | vmcoreinfo_append_str("NUMBER(pgtable_l5_enabled)=%d\n", |
358 | pgtable_l5_enabled()); | ||
358 | 359 | ||
359 | #ifdef CONFIG_NUMA | 360 | #ifdef CONFIG_NUMA |
360 | VMCOREINFO_SYMBOL(node_data); | 361 | VMCOREINFO_SYMBOL(node_data); |
diff --git a/arch/x86/mm/dump_pagetables.c b/arch/x86/mm/dump_pagetables.c index cc7ff5957194..2f3c9196b834 100644 --- a/arch/x86/mm/dump_pagetables.c +++ b/arch/x86/mm/dump_pagetables.c | |||
@@ -360,7 +360,7 @@ static inline bool kasan_page_table(struct seq_file *m, struct pg_state *st, | |||
360 | void *pt) | 360 | void *pt) |
361 | { | 361 | { |
362 | if (__pa(pt) == __pa(kasan_zero_pmd) || | 362 | if (__pa(pt) == __pa(kasan_zero_pmd) || |
363 | (pgtable_l5_enabled && __pa(pt) == __pa(kasan_zero_p4d)) || | 363 | (pgtable_l5_enabled() && __pa(pt) == __pa(kasan_zero_p4d)) || |
364 | __pa(pt) == __pa(kasan_zero_pud)) { | 364 | __pa(pt) == __pa(kasan_zero_pud)) { |
365 | pgprotval_t prot = pte_flags(kasan_zero_pte[0]); | 365 | pgprotval_t prot = pte_flags(kasan_zero_pte[0]); |
366 | note_page(m, st, __pgprot(prot), 0, 5); | 366 | note_page(m, st, __pgprot(prot), 0, 5); |
@@ -476,8 +476,8 @@ static void walk_p4d_level(struct seq_file *m, struct pg_state *st, pgd_t addr, | |||
476 | } | 476 | } |
477 | } | 477 | } |
478 | 478 | ||
479 | #define pgd_large(a) (pgtable_l5_enabled ? pgd_large(a) : p4d_large(__p4d(pgd_val(a)))) | 479 | #define pgd_large(a) (pgtable_l5_enabled() ? pgd_large(a) : p4d_large(__p4d(pgd_val(a)))) |
480 | #define pgd_none(a) (pgtable_l5_enabled ? pgd_none(a) : p4d_none(__p4d(pgd_val(a)))) | 480 | #define pgd_none(a) (pgtable_l5_enabled() ? pgd_none(a) : p4d_none(__p4d(pgd_val(a)))) |
481 | 481 | ||
482 | static inline bool is_hypervisor_range(int idx) | 482 | static inline bool is_hypervisor_range(int idx) |
483 | { | 483 | { |
diff --git a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c index 73bd8c95ac71..77ec014554e7 100644 --- a/arch/x86/mm/fault.c +++ b/arch/x86/mm/fault.c | |||
@@ -439,7 +439,7 @@ static noinline int vmalloc_fault(unsigned long address) | |||
439 | if (pgd_none(*pgd_k)) | 439 | if (pgd_none(*pgd_k)) |
440 | return -1; | 440 | return -1; |
441 | 441 | ||
442 | if (pgtable_l5_enabled) { | 442 | if (pgtable_l5_enabled()) { |
443 | if (pgd_none(*pgd)) { | 443 | if (pgd_none(*pgd)) { |
444 | set_pgd(pgd, *pgd_k); | 444 | set_pgd(pgd, *pgd_k); |
445 | arch_flush_lazy_mmu_mode(); | 445 | arch_flush_lazy_mmu_mode(); |
@@ -454,7 +454,7 @@ static noinline int vmalloc_fault(unsigned long address) | |||
454 | if (p4d_none(*p4d_k)) | 454 | if (p4d_none(*p4d_k)) |
455 | return -1; | 455 | return -1; |
456 | 456 | ||
457 | if (p4d_none(*p4d) && !pgtable_l5_enabled) { | 457 | if (p4d_none(*p4d) && !pgtable_l5_enabled()) { |
458 | set_p4d(p4d, *p4d_k); | 458 | set_p4d(p4d, *p4d_k); |
459 | arch_flush_lazy_mmu_mode(); | 459 | arch_flush_lazy_mmu_mode(); |
460 | } else { | 460 | } else { |
diff --git a/arch/x86/mm/ident_map.c b/arch/x86/mm/ident_map.c index a2f0c7e20fb0..fe7a12599d8e 100644 --- a/arch/x86/mm/ident_map.c +++ b/arch/x86/mm/ident_map.c | |||
@@ -123,7 +123,7 @@ int kernel_ident_mapping_init(struct x86_mapping_info *info, pgd_t *pgd_page, | |||
123 | result = ident_p4d_init(info, p4d, addr, next); | 123 | result = ident_p4d_init(info, p4d, addr, next); |
124 | if (result) | 124 | if (result) |
125 | return result; | 125 | return result; |
126 | if (pgtable_l5_enabled) { | 126 | if (pgtable_l5_enabled()) { |
127 | set_pgd(pgd, __pgd(__pa(p4d) | info->kernpg_flag)); | 127 | set_pgd(pgd, __pgd(__pa(p4d) | info->kernpg_flag)); |
128 | } else { | 128 | } else { |
129 | /* | 129 | /* |
diff --git a/arch/x86/mm/init_64.c b/arch/x86/mm/init_64.c index 0a400606dea0..17383f9677fa 100644 --- a/arch/x86/mm/init_64.c +++ b/arch/x86/mm/init_64.c | |||
@@ -180,7 +180,7 @@ static void sync_global_pgds_l4(unsigned long start, unsigned long end) | |||
180 | */ | 180 | */ |
181 | void sync_global_pgds(unsigned long start, unsigned long end) | 181 | void sync_global_pgds(unsigned long start, unsigned long end) |
182 | { | 182 | { |
183 | if (pgtable_l5_enabled) | 183 | if (pgtable_l5_enabled()) |
184 | sync_global_pgds_l5(start, end); | 184 | sync_global_pgds_l5(start, end); |
185 | else | 185 | else |
186 | sync_global_pgds_l4(start, end); | 186 | sync_global_pgds_l4(start, end); |
@@ -643,7 +643,7 @@ phys_p4d_init(p4d_t *p4d_page, unsigned long paddr, unsigned long paddr_end, | |||
643 | unsigned long vaddr = (unsigned long)__va(paddr); | 643 | unsigned long vaddr = (unsigned long)__va(paddr); |
644 | int i = p4d_index(vaddr); | 644 | int i = p4d_index(vaddr); |
645 | 645 | ||
646 | if (!pgtable_l5_enabled) | 646 | if (!pgtable_l5_enabled()) |
647 | return phys_pud_init((pud_t *) p4d_page, paddr, paddr_end, page_size_mask); | 647 | return phys_pud_init((pud_t *) p4d_page, paddr, paddr_end, page_size_mask); |
648 | 648 | ||
649 | for (; i < PTRS_PER_P4D; i++, paddr = paddr_next) { | 649 | for (; i < PTRS_PER_P4D; i++, paddr = paddr_next) { |
@@ -723,7 +723,7 @@ kernel_physical_mapping_init(unsigned long paddr_start, | |||
723 | page_size_mask); | 723 | page_size_mask); |
724 | 724 | ||
725 | spin_lock(&init_mm.page_table_lock); | 725 | spin_lock(&init_mm.page_table_lock); |
726 | if (pgtable_l5_enabled) | 726 | if (pgtable_l5_enabled()) |
727 | pgd_populate(&init_mm, pgd, p4d); | 727 | pgd_populate(&init_mm, pgd, p4d); |
728 | else | 728 | else |
729 | p4d_populate(&init_mm, p4d_offset(pgd, vaddr), (pud_t *) p4d); | 729 | p4d_populate(&init_mm, p4d_offset(pgd, vaddr), (pud_t *) p4d); |
@@ -1100,7 +1100,7 @@ remove_p4d_table(p4d_t *p4d_start, unsigned long addr, unsigned long end, | |||
1100 | * 5-level case we should free them. This code will have to change | 1100 | * 5-level case we should free them. This code will have to change |
1101 | * to adapt for boot-time switching between 4 and 5 level page tables. | 1101 | * to adapt for boot-time switching between 4 and 5 level page tables. |
1102 | */ | 1102 | */ |
1103 | if (pgtable_l5_enabled) | 1103 | if (pgtable_l5_enabled()) |
1104 | free_pud_table(pud_base, p4d); | 1104 | free_pud_table(pud_base, p4d); |
1105 | } | 1105 | } |
1106 | 1106 | ||
diff --git a/arch/x86/mm/kasan_init_64.c b/arch/x86/mm/kasan_init_64.c index 340bb9b32e01..e3e77527f8df 100644 --- a/arch/x86/mm/kasan_init_64.c +++ b/arch/x86/mm/kasan_init_64.c | |||
@@ -180,7 +180,7 @@ static void __init clear_pgds(unsigned long start, | |||
180 | * With folded p4d, pgd_clear() is nop, use p4d_clear() | 180 | * With folded p4d, pgd_clear() is nop, use p4d_clear() |
181 | * instead. | 181 | * instead. |
182 | */ | 182 | */ |
183 | if (pgtable_l5_enabled) | 183 | if (pgtable_l5_enabled()) |
184 | pgd_clear(pgd); | 184 | pgd_clear(pgd); |
185 | else | 185 | else |
186 | p4d_clear(p4d_offset(pgd, start)); | 186 | p4d_clear(p4d_offset(pgd, start)); |
@@ -195,7 +195,7 @@ static inline p4d_t *early_p4d_offset(pgd_t *pgd, unsigned long addr) | |||
195 | { | 195 | { |
196 | unsigned long p4d; | 196 | unsigned long p4d; |
197 | 197 | ||
198 | if (!pgtable_l5_enabled) | 198 | if (!pgtable_l5_enabled()) |
199 | return (p4d_t *)pgd; | 199 | return (p4d_t *)pgd; |
200 | 200 | ||
201 | p4d = __pa_nodebug(pgd_val(*pgd)) & PTE_PFN_MASK; | 201 | p4d = __pa_nodebug(pgd_val(*pgd)) & PTE_PFN_MASK; |
@@ -282,7 +282,7 @@ void __init kasan_early_init(void) | |||
282 | for (i = 0; i < PTRS_PER_PUD; i++) | 282 | for (i = 0; i < PTRS_PER_PUD; i++) |
283 | kasan_zero_pud[i] = __pud(pud_val); | 283 | kasan_zero_pud[i] = __pud(pud_val); |
284 | 284 | ||
285 | for (i = 0; pgtable_l5_enabled && i < PTRS_PER_P4D; i++) | 285 | for (i = 0; pgtable_l5_enabled() && i < PTRS_PER_P4D; i++) |
286 | kasan_zero_p4d[i] = __p4d(p4d_val); | 286 | kasan_zero_p4d[i] = __p4d(p4d_val); |
287 | 287 | ||
288 | kasan_map_early_shadow(early_top_pgt); | 288 | kasan_map_early_shadow(early_top_pgt); |
@@ -313,7 +313,7 @@ void __init kasan_init(void) | |||
313 | * bunch of things like kernel code, modules, EFI mapping, etc. | 313 | * bunch of things like kernel code, modules, EFI mapping, etc. |
314 | * We need to take extra steps to not overwrite them. | 314 | * We need to take extra steps to not overwrite them. |
315 | */ | 315 | */ |
316 | if (pgtable_l5_enabled) { | 316 | if (pgtable_l5_enabled()) { |
317 | void *ptr; | 317 | void *ptr; |
318 | 318 | ||
319 | ptr = (void *)pgd_page_vaddr(*pgd_offset_k(KASAN_SHADOW_END)); | 319 | ptr = (void *)pgd_page_vaddr(*pgd_offset_k(KASAN_SHADOW_END)); |
diff --git a/arch/x86/mm/kaslr.c b/arch/x86/mm/kaslr.c index 615cc03ced84..61db77b0eda9 100644 --- a/arch/x86/mm/kaslr.c +++ b/arch/x86/mm/kaslr.c | |||
@@ -78,7 +78,7 @@ void __init kernel_randomize_memory(void) | |||
78 | struct rnd_state rand_state; | 78 | struct rnd_state rand_state; |
79 | unsigned long remain_entropy; | 79 | unsigned long remain_entropy; |
80 | 80 | ||
81 | vaddr_start = pgtable_l5_enabled ? __PAGE_OFFSET_BASE_L5 : __PAGE_OFFSET_BASE_L4; | 81 | vaddr_start = pgtable_l5_enabled() ? __PAGE_OFFSET_BASE_L5 : __PAGE_OFFSET_BASE_L4; |
82 | vaddr = vaddr_start; | 82 | vaddr = vaddr_start; |
83 | 83 | ||
84 | /* | 84 | /* |
@@ -124,7 +124,7 @@ void __init kernel_randomize_memory(void) | |||
124 | */ | 124 | */ |
125 | entropy = remain_entropy / (ARRAY_SIZE(kaslr_regions) - i); | 125 | entropy = remain_entropy / (ARRAY_SIZE(kaslr_regions) - i); |
126 | prandom_bytes_state(&rand_state, &rand, sizeof(rand)); | 126 | prandom_bytes_state(&rand_state, &rand, sizeof(rand)); |
127 | if (pgtable_l5_enabled) | 127 | if (pgtable_l5_enabled()) |
128 | entropy = (rand % (entropy + 1)) & P4D_MASK; | 128 | entropy = (rand % (entropy + 1)) & P4D_MASK; |
129 | else | 129 | else |
130 | entropy = (rand % (entropy + 1)) & PUD_MASK; | 130 | entropy = (rand % (entropy + 1)) & PUD_MASK; |
@@ -136,7 +136,7 @@ void __init kernel_randomize_memory(void) | |||
136 | * randomization alignment. | 136 | * randomization alignment. |
137 | */ | 137 | */ |
138 | vaddr += get_padding(&kaslr_regions[i]); | 138 | vaddr += get_padding(&kaslr_regions[i]); |
139 | if (pgtable_l5_enabled) | 139 | if (pgtable_l5_enabled()) |
140 | vaddr = round_up(vaddr + 1, P4D_SIZE); | 140 | vaddr = round_up(vaddr + 1, P4D_SIZE); |
141 | else | 141 | else |
142 | vaddr = round_up(vaddr + 1, PUD_SIZE); | 142 | vaddr = round_up(vaddr + 1, PUD_SIZE); |
@@ -212,7 +212,7 @@ void __meminit init_trampoline(void) | |||
212 | return; | 212 | return; |
213 | } | 213 | } |
214 | 214 | ||
215 | if (pgtable_l5_enabled) | 215 | if (pgtable_l5_enabled()) |
216 | init_trampoline_p4d(); | 216 | init_trampoline_p4d(); |
217 | else | 217 | else |
218 | init_trampoline_pud(); | 218 | init_trampoline_pud(); |
diff --git a/arch/x86/mm/tlb.c b/arch/x86/mm/tlb.c index e055d1a06699..6eb1f34c3c85 100644 --- a/arch/x86/mm/tlb.c +++ b/arch/x86/mm/tlb.c | |||
@@ -157,7 +157,7 @@ static void sync_current_stack_to_mm(struct mm_struct *mm) | |||
157 | unsigned long sp = current_stack_pointer; | 157 | unsigned long sp = current_stack_pointer; |
158 | pgd_t *pgd = pgd_offset(mm, sp); | 158 | pgd_t *pgd = pgd_offset(mm, sp); |
159 | 159 | ||
160 | if (pgtable_l5_enabled) { | 160 | if (pgtable_l5_enabled()) { |
161 | if (unlikely(pgd_none(*pgd))) { | 161 | if (unlikely(pgd_none(*pgd))) { |
162 | pgd_t *pgd_ref = pgd_offset_k(sp); | 162 | pgd_t *pgd_ref = pgd_offset_k(sp); |
163 | 163 | ||
diff --git a/arch/x86/platform/efi/efi_64.c b/arch/x86/platform/efi/efi_64.c index bed7e7f4e44c..e01f7ceb9e7a 100644 --- a/arch/x86/platform/efi/efi_64.c +++ b/arch/x86/platform/efi/efi_64.c | |||
@@ -225,7 +225,7 @@ int __init efi_alloc_page_tables(void) | |||
225 | 225 | ||
226 | pud = pud_alloc(&init_mm, p4d, EFI_VA_END); | 226 | pud = pud_alloc(&init_mm, p4d, EFI_VA_END); |
227 | if (!pud) { | 227 | if (!pud) { |
228 | if (pgtable_l5_enabled) | 228 | if (pgtable_l5_enabled()) |
229 | free_page((unsigned long) pgd_page_vaddr(*pgd)); | 229 | free_page((unsigned long) pgd_page_vaddr(*pgd)); |
230 | free_pages((unsigned long)efi_pgd, PGD_ALLOCATION_ORDER); | 230 | free_pages((unsigned long)efi_pgd, PGD_ALLOCATION_ORDER); |
231 | return -ENOMEM; | 231 | return -ENOMEM; |
diff --git a/arch/x86/power/hibernate_64.c b/arch/x86/power/hibernate_64.c index ccf4a49bb065..67ccf64c8bd8 100644 --- a/arch/x86/power/hibernate_64.c +++ b/arch/x86/power/hibernate_64.c | |||
@@ -72,7 +72,7 @@ static int set_up_temporary_text_mapping(pgd_t *pgd) | |||
72 | * tables used by the image kernel. | 72 | * tables used by the image kernel. |
73 | */ | 73 | */ |
74 | 74 | ||
75 | if (pgtable_l5_enabled) { | 75 | if (pgtable_l5_enabled()) { |
76 | p4d = (p4d_t *)get_safe_page(GFP_ATOMIC); | 76 | p4d = (p4d_t *)get_safe_page(GFP_ATOMIC); |
77 | if (!p4d) | 77 | if (!p4d) |
78 | return -ENOMEM; | 78 | return -ENOMEM; |