diff options
author | Kirill A. Shutemov <kirill.shutemov@linux.intel.com> | 2015-04-14 18:46:14 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2015-04-14 19:49:02 -0400 |
commit | 982333683385343d8d2db9a1df69c98406f42687 (patch) | |
tree | 2ce273cf325bcad64d032090344778fb0267f59a | |
parent | 6b8ce2a1a464526335672c33cbf3cb9fc638efff (diff) |
x86: expose number of page table levels on Kconfig level
We would want to use number of page table level to define mm_struct.
Let's expose it as CONFIG_PGTABLE_LEVELS.
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Tested-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r-- | arch/x86/Kconfig | 6 | ||||
-rw-r--r-- | arch/x86/include/asm/paravirt.h | 8 | ||||
-rw-r--r-- | arch/x86/include/asm/paravirt_types.h | 8 | ||||
-rw-r--r-- | arch/x86/include/asm/pgalloc.h | 8 | ||||
-rw-r--r-- | arch/x86/include/asm/pgtable-2level_types.h | 1 | ||||
-rw-r--r-- | arch/x86/include/asm/pgtable-3level_types.h | 2 | ||||
-rw-r--r-- | arch/x86/include/asm/pgtable.h | 8 | ||||
-rw-r--r-- | arch/x86/include/asm/pgtable_64_types.h | 1 | ||||
-rw-r--r-- | arch/x86/include/asm/pgtable_types.h | 4 | ||||
-rw-r--r-- | arch/x86/kernel/paravirt.c | 6 | ||||
-rw-r--r-- | arch/x86/mm/pgtable.c | 14 | ||||
-rw-r--r-- | arch/x86/xen/mmu.c | 14 | ||||
-rw-r--r-- | include/trace/events/xen.h | 2 |
13 files changed, 42 insertions, 40 deletions
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index faff6934c05a..3e3aaad23414 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig | |||
@@ -277,6 +277,12 @@ config ARCH_SUPPORTS_UPROBES | |||
277 | config FIX_EARLYCON_MEM | 277 | config FIX_EARLYCON_MEM |
278 | def_bool y | 278 | def_bool y |
279 | 279 | ||
280 | config PGTABLE_LEVELS | ||
281 | int | ||
282 | default 4 if X86_64 | ||
283 | default 3 if X86_PAE | ||
284 | default 2 | ||
285 | |||
280 | source "init/Kconfig" | 286 | source "init/Kconfig" |
281 | source "kernel/Kconfig.freezer" | 287 | source "kernel/Kconfig.freezer" |
282 | 288 | ||
diff --git a/arch/x86/include/asm/paravirt.h b/arch/x86/include/asm/paravirt.h index 5f6051d5d139..8957810ad7d1 100644 --- a/arch/x86/include/asm/paravirt.h +++ b/arch/x86/include/asm/paravirt.h | |||
@@ -545,7 +545,7 @@ static inline void set_pmd(pmd_t *pmdp, pmd_t pmd) | |||
545 | PVOP_VCALL2(pv_mmu_ops.set_pmd, pmdp, val); | 545 | PVOP_VCALL2(pv_mmu_ops.set_pmd, pmdp, val); |
546 | } | 546 | } |
547 | 547 | ||
548 | #if PAGETABLE_LEVELS >= 3 | 548 | #if CONFIG_PGTABLE_LEVELS >= 3 |
549 | static inline pmd_t __pmd(pmdval_t val) | 549 | static inline pmd_t __pmd(pmdval_t val) |
550 | { | 550 | { |
551 | pmdval_t ret; | 551 | pmdval_t ret; |
@@ -585,7 +585,7 @@ static inline void set_pud(pud_t *pudp, pud_t pud) | |||
585 | PVOP_VCALL2(pv_mmu_ops.set_pud, pudp, | 585 | PVOP_VCALL2(pv_mmu_ops.set_pud, pudp, |
586 | val); | 586 | val); |
587 | } | 587 | } |
588 | #if PAGETABLE_LEVELS == 4 | 588 | #if CONFIG_PGTABLE_LEVELS == 4 |
589 | static inline pud_t __pud(pudval_t val) | 589 | static inline pud_t __pud(pudval_t val) |
590 | { | 590 | { |
591 | pudval_t ret; | 591 | pudval_t ret; |
@@ -636,9 +636,9 @@ static inline void pud_clear(pud_t *pudp) | |||
636 | set_pud(pudp, __pud(0)); | 636 | set_pud(pudp, __pud(0)); |
637 | } | 637 | } |
638 | 638 | ||
639 | #endif /* PAGETABLE_LEVELS == 4 */ | 639 | #endif /* CONFIG_PGTABLE_LEVELS == 4 */ |
640 | 640 | ||
641 | #endif /* PAGETABLE_LEVELS >= 3 */ | 641 | #endif /* CONFIG_PGTABLE_LEVELS >= 3 */ |
642 | 642 | ||
643 | #ifdef CONFIG_X86_PAE | 643 | #ifdef CONFIG_X86_PAE |
644 | /* Special-case pte-setting operations for PAE, which can't update a | 644 | /* Special-case pte-setting operations for PAE, which can't update a |
diff --git a/arch/x86/include/asm/paravirt_types.h b/arch/x86/include/asm/paravirt_types.h index 7549b8b369e4..f7b0b5c112f2 100644 --- a/arch/x86/include/asm/paravirt_types.h +++ b/arch/x86/include/asm/paravirt_types.h | |||
@@ -294,7 +294,7 @@ struct pv_mmu_ops { | |||
294 | struct paravirt_callee_save pgd_val; | 294 | struct paravirt_callee_save pgd_val; |
295 | struct paravirt_callee_save make_pgd; | 295 | struct paravirt_callee_save make_pgd; |
296 | 296 | ||
297 | #if PAGETABLE_LEVELS >= 3 | 297 | #if CONFIG_PGTABLE_LEVELS >= 3 |
298 | #ifdef CONFIG_X86_PAE | 298 | #ifdef CONFIG_X86_PAE |
299 | void (*set_pte_atomic)(pte_t *ptep, pte_t pteval); | 299 | void (*set_pte_atomic)(pte_t *ptep, pte_t pteval); |
300 | void (*pte_clear)(struct mm_struct *mm, unsigned long addr, | 300 | void (*pte_clear)(struct mm_struct *mm, unsigned long addr, |
@@ -308,13 +308,13 @@ struct pv_mmu_ops { | |||
308 | struct paravirt_callee_save pmd_val; | 308 | struct paravirt_callee_save pmd_val; |
309 | struct paravirt_callee_save make_pmd; | 309 | struct paravirt_callee_save make_pmd; |
310 | 310 | ||
311 | #if PAGETABLE_LEVELS == 4 | 311 | #if CONFIG_PGTABLE_LEVELS == 4 |
312 | struct paravirt_callee_save pud_val; | 312 | struct paravirt_callee_save pud_val; |
313 | struct paravirt_callee_save make_pud; | 313 | struct paravirt_callee_save make_pud; |
314 | 314 | ||
315 | void (*set_pgd)(pgd_t *pudp, pgd_t pgdval); | 315 | void (*set_pgd)(pgd_t *pudp, pgd_t pgdval); |
316 | #endif /* PAGETABLE_LEVELS == 4 */ | 316 | #endif /* CONFIG_PGTABLE_LEVELS == 4 */ |
317 | #endif /* PAGETABLE_LEVELS >= 3 */ | 317 | #endif /* CONFIG_PGTABLE_LEVELS >= 3 */ |
318 | 318 | ||
319 | struct pv_lazy_ops lazy_mode; | 319 | struct pv_lazy_ops lazy_mode; |
320 | 320 | ||
diff --git a/arch/x86/include/asm/pgalloc.h b/arch/x86/include/asm/pgalloc.h index c4412e972bbd..bf7f8b55b0f9 100644 --- a/arch/x86/include/asm/pgalloc.h +++ b/arch/x86/include/asm/pgalloc.h | |||
@@ -77,7 +77,7 @@ static inline void pmd_populate(struct mm_struct *mm, pmd_t *pmd, | |||
77 | 77 | ||
78 | #define pmd_pgtable(pmd) pmd_page(pmd) | 78 | #define pmd_pgtable(pmd) pmd_page(pmd) |
79 | 79 | ||
80 | #if PAGETABLE_LEVELS > 2 | 80 | #if CONFIG_PGTABLE_LEVELS > 2 |
81 | static inline pmd_t *pmd_alloc_one(struct mm_struct *mm, unsigned long addr) | 81 | static inline pmd_t *pmd_alloc_one(struct mm_struct *mm, unsigned long addr) |
82 | { | 82 | { |
83 | struct page *page; | 83 | struct page *page; |
@@ -116,7 +116,7 @@ static inline void pud_populate(struct mm_struct *mm, pud_t *pud, pmd_t *pmd) | |||
116 | } | 116 | } |
117 | #endif /* CONFIG_X86_PAE */ | 117 | #endif /* CONFIG_X86_PAE */ |
118 | 118 | ||
119 | #if PAGETABLE_LEVELS > 3 | 119 | #if CONFIG_PGTABLE_LEVELS > 3 |
120 | static inline void pgd_populate(struct mm_struct *mm, pgd_t *pgd, pud_t *pud) | 120 | static inline void pgd_populate(struct mm_struct *mm, pgd_t *pgd, pud_t *pud) |
121 | { | 121 | { |
122 | paravirt_alloc_pud(mm, __pa(pud) >> PAGE_SHIFT); | 122 | paravirt_alloc_pud(mm, __pa(pud) >> PAGE_SHIFT); |
@@ -142,7 +142,7 @@ static inline void __pud_free_tlb(struct mmu_gather *tlb, pud_t *pud, | |||
142 | ___pud_free_tlb(tlb, pud); | 142 | ___pud_free_tlb(tlb, pud); |
143 | } | 143 | } |
144 | 144 | ||
145 | #endif /* PAGETABLE_LEVELS > 3 */ | 145 | #endif /* CONFIG_PGTABLE_LEVELS > 3 */ |
146 | #endif /* PAGETABLE_LEVELS > 2 */ | 146 | #endif /* CONFIG_PGTABLE_LEVELS > 2 */ |
147 | 147 | ||
148 | #endif /* _ASM_X86_PGALLOC_H */ | 148 | #endif /* _ASM_X86_PGALLOC_H */ |
diff --git a/arch/x86/include/asm/pgtable-2level_types.h b/arch/x86/include/asm/pgtable-2level_types.h index daacc23e3fb9..392576433e77 100644 --- a/arch/x86/include/asm/pgtable-2level_types.h +++ b/arch/x86/include/asm/pgtable-2level_types.h | |||
@@ -17,7 +17,6 @@ typedef union { | |||
17 | #endif /* !__ASSEMBLY__ */ | 17 | #endif /* !__ASSEMBLY__ */ |
18 | 18 | ||
19 | #define SHARED_KERNEL_PMD 0 | 19 | #define SHARED_KERNEL_PMD 0 |
20 | #define PAGETABLE_LEVELS 2 | ||
21 | 20 | ||
22 | /* | 21 | /* |
23 | * traditional i386 two-level paging structure: | 22 | * traditional i386 two-level paging structure: |
diff --git a/arch/x86/include/asm/pgtable-3level_types.h b/arch/x86/include/asm/pgtable-3level_types.h index 1bd5876c8649..bcc89625ebe5 100644 --- a/arch/x86/include/asm/pgtable-3level_types.h +++ b/arch/x86/include/asm/pgtable-3level_types.h | |||
@@ -24,8 +24,6 @@ typedef union { | |||
24 | #define SHARED_KERNEL_PMD 1 | 24 | #define SHARED_KERNEL_PMD 1 |
25 | #endif | 25 | #endif |
26 | 26 | ||
27 | #define PAGETABLE_LEVELS 3 | ||
28 | |||
29 | /* | 27 | /* |
30 | * PGDIR_SHIFT determines what a top-level page table entry can map | 28 | * PGDIR_SHIFT determines what a top-level page table entry can map |
31 | */ | 29 | */ |
diff --git a/arch/x86/include/asm/pgtable.h b/arch/x86/include/asm/pgtable.h index a0c35bf6cb92..fe57e7a98839 100644 --- a/arch/x86/include/asm/pgtable.h +++ b/arch/x86/include/asm/pgtable.h | |||
@@ -551,7 +551,7 @@ static inline unsigned long pages_to_mb(unsigned long npg) | |||
551 | return npg >> (20 - PAGE_SHIFT); | 551 | return npg >> (20 - PAGE_SHIFT); |
552 | } | 552 | } |
553 | 553 | ||
554 | #if PAGETABLE_LEVELS > 2 | 554 | #if CONFIG_PGTABLE_LEVELS > 2 |
555 | static inline int pud_none(pud_t pud) | 555 | static inline int pud_none(pud_t pud) |
556 | { | 556 | { |
557 | return native_pud_val(pud) == 0; | 557 | return native_pud_val(pud) == 0; |
@@ -594,9 +594,9 @@ static inline int pud_large(pud_t pud) | |||
594 | { | 594 | { |
595 | return 0; | 595 | return 0; |
596 | } | 596 | } |
597 | #endif /* PAGETABLE_LEVELS > 2 */ | 597 | #endif /* CONFIG_PGTABLE_LEVELS > 2 */ |
598 | 598 | ||
599 | #if PAGETABLE_LEVELS > 3 | 599 | #if CONFIG_PGTABLE_LEVELS > 3 |
600 | static inline int pgd_present(pgd_t pgd) | 600 | static inline int pgd_present(pgd_t pgd) |
601 | { | 601 | { |
602 | return pgd_flags(pgd) & _PAGE_PRESENT; | 602 | return pgd_flags(pgd) & _PAGE_PRESENT; |
@@ -633,7 +633,7 @@ static inline int pgd_none(pgd_t pgd) | |||
633 | { | 633 | { |
634 | return !native_pgd_val(pgd); | 634 | return !native_pgd_val(pgd); |
635 | } | 635 | } |
636 | #endif /* PAGETABLE_LEVELS > 3 */ | 636 | #endif /* CONFIG_PGTABLE_LEVELS > 3 */ |
637 | 637 | ||
638 | #endif /* __ASSEMBLY__ */ | 638 | #endif /* __ASSEMBLY__ */ |
639 | 639 | ||
diff --git a/arch/x86/include/asm/pgtable_64_types.h b/arch/x86/include/asm/pgtable_64_types.h index 602b6028c5b6..e6844dfb4471 100644 --- a/arch/x86/include/asm/pgtable_64_types.h +++ b/arch/x86/include/asm/pgtable_64_types.h | |||
@@ -20,7 +20,6 @@ typedef struct { pteval_t pte; } pte_t; | |||
20 | #endif /* !__ASSEMBLY__ */ | 20 | #endif /* !__ASSEMBLY__ */ |
21 | 21 | ||
22 | #define SHARED_KERNEL_PMD 0 | 22 | #define SHARED_KERNEL_PMD 0 |
23 | #define PAGETABLE_LEVELS 4 | ||
24 | 23 | ||
25 | /* | 24 | /* |
26 | * PGDIR_SHIFT determines what a top-level page table entry can map | 25 | * PGDIR_SHIFT determines what a top-level page table entry can map |
diff --git a/arch/x86/include/asm/pgtable_types.h b/arch/x86/include/asm/pgtable_types.h index 8c7c10802e9c..78f0c8cbe316 100644 --- a/arch/x86/include/asm/pgtable_types.h +++ b/arch/x86/include/asm/pgtable_types.h | |||
@@ -234,7 +234,7 @@ static inline pgdval_t pgd_flags(pgd_t pgd) | |||
234 | return native_pgd_val(pgd) & PTE_FLAGS_MASK; | 234 | return native_pgd_val(pgd) & PTE_FLAGS_MASK; |
235 | } | 235 | } |
236 | 236 | ||
237 | #if PAGETABLE_LEVELS > 3 | 237 | #if CONFIG_PGTABLE_LEVELS > 3 |
238 | typedef struct { pudval_t pud; } pud_t; | 238 | typedef struct { pudval_t pud; } pud_t; |
239 | 239 | ||
240 | static inline pud_t native_make_pud(pmdval_t val) | 240 | static inline pud_t native_make_pud(pmdval_t val) |
@@ -255,7 +255,7 @@ static inline pudval_t native_pud_val(pud_t pud) | |||
255 | } | 255 | } |
256 | #endif | 256 | #endif |
257 | 257 | ||
258 | #if PAGETABLE_LEVELS > 2 | 258 | #if CONFIG_PGTABLE_LEVELS > 2 |
259 | typedef struct { pmdval_t pmd; } pmd_t; | 259 | typedef struct { pmdval_t pmd; } pmd_t; |
260 | 260 | ||
261 | static inline pmd_t native_make_pmd(pmdval_t val) | 261 | static inline pmd_t native_make_pmd(pmdval_t val) |
diff --git a/arch/x86/kernel/paravirt.c b/arch/x86/kernel/paravirt.c index 548d25f00c90..c614dd492f5f 100644 --- a/arch/x86/kernel/paravirt.c +++ b/arch/x86/kernel/paravirt.c | |||
@@ -443,7 +443,7 @@ struct pv_mmu_ops pv_mmu_ops = { | |||
443 | .ptep_modify_prot_start = __ptep_modify_prot_start, | 443 | .ptep_modify_prot_start = __ptep_modify_prot_start, |
444 | .ptep_modify_prot_commit = __ptep_modify_prot_commit, | 444 | .ptep_modify_prot_commit = __ptep_modify_prot_commit, |
445 | 445 | ||
446 | #if PAGETABLE_LEVELS >= 3 | 446 | #if CONFIG_PGTABLE_LEVELS >= 3 |
447 | #ifdef CONFIG_X86_PAE | 447 | #ifdef CONFIG_X86_PAE |
448 | .set_pte_atomic = native_set_pte_atomic, | 448 | .set_pte_atomic = native_set_pte_atomic, |
449 | .pte_clear = native_pte_clear, | 449 | .pte_clear = native_pte_clear, |
@@ -454,13 +454,13 @@ struct pv_mmu_ops pv_mmu_ops = { | |||
454 | .pmd_val = PTE_IDENT, | 454 | .pmd_val = PTE_IDENT, |
455 | .make_pmd = PTE_IDENT, | 455 | .make_pmd = PTE_IDENT, |
456 | 456 | ||
457 | #if PAGETABLE_LEVELS == 4 | 457 | #if CONFIG_PGTABLE_LEVELS == 4 |
458 | .pud_val = PTE_IDENT, | 458 | .pud_val = PTE_IDENT, |
459 | .make_pud = PTE_IDENT, | 459 | .make_pud = PTE_IDENT, |
460 | 460 | ||
461 | .set_pgd = native_set_pgd, | 461 | .set_pgd = native_set_pgd, |
462 | #endif | 462 | #endif |
463 | #endif /* PAGETABLE_LEVELS >= 3 */ | 463 | #endif /* CONFIG_PGTABLE_LEVELS >= 3 */ |
464 | 464 | ||
465 | .pte_val = PTE_IDENT, | 465 | .pte_val = PTE_IDENT, |
466 | .pgd_val = PTE_IDENT, | 466 | .pgd_val = PTE_IDENT, |
diff --git a/arch/x86/mm/pgtable.c b/arch/x86/mm/pgtable.c index 5a7e5252c878..b28edfecbdfe 100644 --- a/arch/x86/mm/pgtable.c +++ b/arch/x86/mm/pgtable.c | |||
@@ -58,7 +58,7 @@ void ___pte_free_tlb(struct mmu_gather *tlb, struct page *pte) | |||
58 | tlb_remove_page(tlb, pte); | 58 | tlb_remove_page(tlb, pte); |
59 | } | 59 | } |
60 | 60 | ||
61 | #if PAGETABLE_LEVELS > 2 | 61 | #if CONFIG_PGTABLE_LEVELS > 2 |
62 | void ___pmd_free_tlb(struct mmu_gather *tlb, pmd_t *pmd) | 62 | void ___pmd_free_tlb(struct mmu_gather *tlb, pmd_t *pmd) |
63 | { | 63 | { |
64 | struct page *page = virt_to_page(pmd); | 64 | struct page *page = virt_to_page(pmd); |
@@ -74,14 +74,14 @@ void ___pmd_free_tlb(struct mmu_gather *tlb, pmd_t *pmd) | |||
74 | tlb_remove_page(tlb, page); | 74 | tlb_remove_page(tlb, page); |
75 | } | 75 | } |
76 | 76 | ||
77 | #if PAGETABLE_LEVELS > 3 | 77 | #if CONFIG_PGTABLE_LEVELS > 3 |
78 | void ___pud_free_tlb(struct mmu_gather *tlb, pud_t *pud) | 78 | void ___pud_free_tlb(struct mmu_gather *tlb, pud_t *pud) |
79 | { | 79 | { |
80 | paravirt_release_pud(__pa(pud) >> PAGE_SHIFT); | 80 | paravirt_release_pud(__pa(pud) >> PAGE_SHIFT); |
81 | tlb_remove_page(tlb, virt_to_page(pud)); | 81 | tlb_remove_page(tlb, virt_to_page(pud)); |
82 | } | 82 | } |
83 | #endif /* PAGETABLE_LEVELS > 3 */ | 83 | #endif /* CONFIG_PGTABLE_LEVELS > 3 */ |
84 | #endif /* PAGETABLE_LEVELS > 2 */ | 84 | #endif /* CONFIG_PGTABLE_LEVELS > 2 */ |
85 | 85 | ||
86 | static inline void pgd_list_add(pgd_t *pgd) | 86 | static inline void pgd_list_add(pgd_t *pgd) |
87 | { | 87 | { |
@@ -117,9 +117,9 @@ static void pgd_ctor(struct mm_struct *mm, pgd_t *pgd) | |||
117 | /* If the pgd points to a shared pagetable level (either the | 117 | /* If the pgd points to a shared pagetable level (either the |
118 | ptes in non-PAE, or shared PMD in PAE), then just copy the | 118 | ptes in non-PAE, or shared PMD in PAE), then just copy the |
119 | references from swapper_pg_dir. */ | 119 | references from swapper_pg_dir. */ |
120 | if (PAGETABLE_LEVELS == 2 || | 120 | if (CONFIG_PGTABLE_LEVELS == 2 || |
121 | (PAGETABLE_LEVELS == 3 && SHARED_KERNEL_PMD) || | 121 | (CONFIG_PGTABLE_LEVELS == 3 && SHARED_KERNEL_PMD) || |
122 | PAGETABLE_LEVELS == 4) { | 122 | CONFIG_PGTABLE_LEVELS == 4) { |
123 | clone_pgd_range(pgd + KERNEL_PGD_BOUNDARY, | 123 | clone_pgd_range(pgd + KERNEL_PGD_BOUNDARY, |
124 | swapper_pg_dir + KERNEL_PGD_BOUNDARY, | 124 | swapper_pg_dir + KERNEL_PGD_BOUNDARY, |
125 | KERNEL_PGD_PTRS); | 125 | KERNEL_PGD_PTRS); |
diff --git a/arch/x86/xen/mmu.c b/arch/x86/xen/mmu.c index adca9e2b6553..65083ad63b6f 100644 --- a/arch/x86/xen/mmu.c +++ b/arch/x86/xen/mmu.c | |||
@@ -502,7 +502,7 @@ __visible pmd_t xen_make_pmd(pmdval_t pmd) | |||
502 | } | 502 | } |
503 | PV_CALLEE_SAVE_REGS_THUNK(xen_make_pmd); | 503 | PV_CALLEE_SAVE_REGS_THUNK(xen_make_pmd); |
504 | 504 | ||
505 | #if PAGETABLE_LEVELS == 4 | 505 | #if CONFIG_PGTABLE_LEVELS == 4 |
506 | __visible pudval_t xen_pud_val(pud_t pud) | 506 | __visible pudval_t xen_pud_val(pud_t pud) |
507 | { | 507 | { |
508 | return pte_mfn_to_pfn(pud.pud); | 508 | return pte_mfn_to_pfn(pud.pud); |
@@ -589,7 +589,7 @@ static void xen_set_pgd(pgd_t *ptr, pgd_t val) | |||
589 | 589 | ||
590 | xen_mc_issue(PARAVIRT_LAZY_MMU); | 590 | xen_mc_issue(PARAVIRT_LAZY_MMU); |
591 | } | 591 | } |
592 | #endif /* PAGETABLE_LEVELS == 4 */ | 592 | #endif /* CONFIG_PGTABLE_LEVELS == 4 */ |
593 | 593 | ||
594 | /* | 594 | /* |
595 | * (Yet another) pagetable walker. This one is intended for pinning a | 595 | * (Yet another) pagetable walker. This one is intended for pinning a |
@@ -1628,7 +1628,7 @@ static void xen_release_pmd(unsigned long pfn) | |||
1628 | xen_release_ptpage(pfn, PT_PMD); | 1628 | xen_release_ptpage(pfn, PT_PMD); |
1629 | } | 1629 | } |
1630 | 1630 | ||
1631 | #if PAGETABLE_LEVELS == 4 | 1631 | #if CONFIG_PGTABLE_LEVELS == 4 |
1632 | static void xen_alloc_pud(struct mm_struct *mm, unsigned long pfn) | 1632 | static void xen_alloc_pud(struct mm_struct *mm, unsigned long pfn) |
1633 | { | 1633 | { |
1634 | xen_alloc_ptpage(mm, pfn, PT_PUD); | 1634 | xen_alloc_ptpage(mm, pfn, PT_PUD); |
@@ -2046,7 +2046,7 @@ static void __init xen_post_allocator_init(void) | |||
2046 | pv_mmu_ops.set_pte = xen_set_pte; | 2046 | pv_mmu_ops.set_pte = xen_set_pte; |
2047 | pv_mmu_ops.set_pmd = xen_set_pmd; | 2047 | pv_mmu_ops.set_pmd = xen_set_pmd; |
2048 | pv_mmu_ops.set_pud = xen_set_pud; | 2048 | pv_mmu_ops.set_pud = xen_set_pud; |
2049 | #if PAGETABLE_LEVELS == 4 | 2049 | #if CONFIG_PGTABLE_LEVELS == 4 |
2050 | pv_mmu_ops.set_pgd = xen_set_pgd; | 2050 | pv_mmu_ops.set_pgd = xen_set_pgd; |
2051 | #endif | 2051 | #endif |
2052 | 2052 | ||
@@ -2056,7 +2056,7 @@ static void __init xen_post_allocator_init(void) | |||
2056 | pv_mmu_ops.alloc_pmd = xen_alloc_pmd; | 2056 | pv_mmu_ops.alloc_pmd = xen_alloc_pmd; |
2057 | pv_mmu_ops.release_pte = xen_release_pte; | 2057 | pv_mmu_ops.release_pte = xen_release_pte; |
2058 | pv_mmu_ops.release_pmd = xen_release_pmd; | 2058 | pv_mmu_ops.release_pmd = xen_release_pmd; |
2059 | #if PAGETABLE_LEVELS == 4 | 2059 | #if CONFIG_PGTABLE_LEVELS == 4 |
2060 | pv_mmu_ops.alloc_pud = xen_alloc_pud; | 2060 | pv_mmu_ops.alloc_pud = xen_alloc_pud; |
2061 | pv_mmu_ops.release_pud = xen_release_pud; | 2061 | pv_mmu_ops.release_pud = xen_release_pud; |
2062 | #endif | 2062 | #endif |
@@ -2122,14 +2122,14 @@ static const struct pv_mmu_ops xen_mmu_ops __initconst = { | |||
2122 | .make_pmd = PV_CALLEE_SAVE(xen_make_pmd), | 2122 | .make_pmd = PV_CALLEE_SAVE(xen_make_pmd), |
2123 | .pmd_val = PV_CALLEE_SAVE(xen_pmd_val), | 2123 | .pmd_val = PV_CALLEE_SAVE(xen_pmd_val), |
2124 | 2124 | ||
2125 | #if PAGETABLE_LEVELS == 4 | 2125 | #if CONFIG_PGTABLE_LEVELS == 4 |
2126 | .pud_val = PV_CALLEE_SAVE(xen_pud_val), | 2126 | .pud_val = PV_CALLEE_SAVE(xen_pud_val), |
2127 | .make_pud = PV_CALLEE_SAVE(xen_make_pud), | 2127 | .make_pud = PV_CALLEE_SAVE(xen_make_pud), |
2128 | .set_pgd = xen_set_pgd_hyper, | 2128 | .set_pgd = xen_set_pgd_hyper, |
2129 | 2129 | ||
2130 | .alloc_pud = xen_alloc_pmd_init, | 2130 | .alloc_pud = xen_alloc_pmd_init, |
2131 | .release_pud = xen_release_pmd_init, | 2131 | .release_pud = xen_release_pmd_init, |
2132 | #endif /* PAGETABLE_LEVELS == 4 */ | 2132 | #endif /* CONFIG_PGTABLE_LEVELS == 4 */ |
2133 | 2133 | ||
2134 | .activate_mm = xen_activate_mm, | 2134 | .activate_mm = xen_activate_mm, |
2135 | .dup_mmap = xen_dup_mmap, | 2135 | .dup_mmap = xen_dup_mmap, |
diff --git a/include/trace/events/xen.h b/include/trace/events/xen.h index d06b6da5c1e3..bce990f5a35d 100644 --- a/include/trace/events/xen.h +++ b/include/trace/events/xen.h | |||
@@ -224,7 +224,7 @@ TRACE_EVENT(xen_mmu_pmd_clear, | |||
224 | TP_printk("pmdp %p", __entry->pmdp) | 224 | TP_printk("pmdp %p", __entry->pmdp) |
225 | ); | 225 | ); |
226 | 226 | ||
227 | #if PAGETABLE_LEVELS >= 4 | 227 | #if CONFIG_PGTABLE_LEVELS >= 4 |
228 | 228 | ||
229 | TRACE_EVENT(xen_mmu_set_pud, | 229 | TRACE_EVENT(xen_mmu_set_pud, |
230 | TP_PROTO(pud_t *pudp, pud_t pudval), | 230 | TP_PROTO(pud_t *pudp, pud_t pudval), |