aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKirill A. Shutemov <kirill.shutemov@linux.intel.com>2017-06-06 07:31:27 -0400
committerIngo Molnar <mingo@kernel.org>2017-06-13 02:56:55 -0400
commit65ade2f872b474fa8a04c2d397783350326634e6 (patch)
treebe48f2f6498867493898ba2f8563c3f5f989d55e
parentc88d71508e36b514413464bd2e01f96f34583a0e (diff)
x86/boot/64: Rename init_level4_pgt and early_level4_pgt
With CONFIG_X86_5LEVEL=y, level 4 is no longer top level of page tables. Let's give these variable more generic names: init_top_pgt and early_top_pgt. Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com> Reviewed-by: Juergen Gross <jgross@suse.com> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: Andy Lutomirski <luto@amacapital.net> Cc: Andy Lutomirski <luto@kernel.org> Cc: Borislav Petkov <bp@alien8.de> Cc: Brian Gerst <brgerst@gmail.com> Cc: Dave Hansen <dave.hansen@intel.com> Cc: Denys Vlasenko <dvlasenk@redhat.com> Cc: H. Peter Anvin <hpa@zytor.com> Cc: Josh Poimboeuf <jpoimboe@redhat.com> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: linux-arch@vger.kernel.org Cc: linux-mm@kvack.org Link: http://lkml.kernel.org/r/20170606113133.22974-9-kirill.shutemov@linux.intel.com Signed-off-by: Ingo Molnar <mingo@kernel.org>
-rw-r--r--arch/x86/include/asm/pgtable.h2
-rw-r--r--arch/x86/include/asm/pgtable_64.h4
-rw-r--r--arch/x86/kernel/espfix_64.c2
-rw-r--r--arch/x86/kernel/head64.c19
-rw-r--r--arch/x86/kernel/head_64.S14
-rw-r--r--arch/x86/kernel/machine_kexec_64.c2
-rw-r--r--arch/x86/mm/dump_pagetables.c2
-rw-r--r--arch/x86/mm/kasan_init_64.c12
-rw-r--r--arch/x86/realmode/init.c2
-rw-r--r--arch/x86/xen/mmu_pv.c16
-rw-r--r--arch/x86/xen/xen-pvh.S2
11 files changed, 38 insertions, 39 deletions
diff --git a/arch/x86/include/asm/pgtable.h b/arch/x86/include/asm/pgtable.h
index 942482ac36a8..77037b6f1caa 100644
--- a/arch/x86/include/asm/pgtable.h
+++ b/arch/x86/include/asm/pgtable.h
@@ -922,7 +922,7 @@ extern pgd_t trampoline_pgd_entry;
922static inline void __meminit init_trampoline_default(void) 922static inline void __meminit init_trampoline_default(void)
923{ 923{
924 /* Default trampoline pgd value */ 924 /* Default trampoline pgd value */
925 trampoline_pgd_entry = init_level4_pgt[pgd_index(__PAGE_OFFSET)]; 925 trampoline_pgd_entry = init_top_pgt[pgd_index(__PAGE_OFFSET)];
926} 926}
927# ifdef CONFIG_RANDOMIZE_MEMORY 927# ifdef CONFIG_RANDOMIZE_MEMORY
928void __meminit init_trampoline(void); 928void __meminit init_trampoline(void);
diff --git a/arch/x86/include/asm/pgtable_64.h b/arch/x86/include/asm/pgtable_64.h
index 12ea31274eb6..affcb2a9c563 100644
--- a/arch/x86/include/asm/pgtable_64.h
+++ b/arch/x86/include/asm/pgtable_64.h
@@ -20,9 +20,9 @@ extern pmd_t level2_kernel_pgt[512];
20extern pmd_t level2_fixmap_pgt[512]; 20extern pmd_t level2_fixmap_pgt[512];
21extern pmd_t level2_ident_pgt[512]; 21extern pmd_t level2_ident_pgt[512];
22extern pte_t level1_fixmap_pgt[512]; 22extern pte_t level1_fixmap_pgt[512];
23extern pgd_t init_level4_pgt[]; 23extern pgd_t init_top_pgt[];
24 24
25#define swapper_pg_dir init_level4_pgt 25#define swapper_pg_dir init_top_pgt
26 26
27extern void paging_init(void); 27extern void paging_init(void);
28 28
diff --git a/arch/x86/kernel/espfix_64.c b/arch/x86/kernel/espfix_64.c
index 8e598a1ad986..6b91e2eb8d3f 100644
--- a/arch/x86/kernel/espfix_64.c
+++ b/arch/x86/kernel/espfix_64.c
@@ -125,7 +125,7 @@ void __init init_espfix_bsp(void)
125 p4d_t *p4d; 125 p4d_t *p4d;
126 126
127 /* Install the espfix pud into the kernel page directory */ 127 /* Install the espfix pud into the kernel page directory */
128 pgd = &init_level4_pgt[pgd_index(ESPFIX_BASE_ADDR)]; 128 pgd = &init_top_pgt[pgd_index(ESPFIX_BASE_ADDR)];
129 p4d = p4d_alloc(&init_mm, pgd, ESPFIX_BASE_ADDR); 129 p4d = p4d_alloc(&init_mm, pgd, ESPFIX_BASE_ADDR);
130 p4d_populate(&init_mm, p4d, espfix_pud_page); 130 p4d_populate(&init_mm, p4d, espfix_pud_page);
131 131
diff --git a/arch/x86/kernel/head64.c b/arch/x86/kernel/head64.c
index 1f2a499929c3..71ca01b6cc59 100644
--- a/arch/x86/kernel/head64.c
+++ b/arch/x86/kernel/head64.c
@@ -33,7 +33,7 @@
33/* 33/*
34 * Manage page tables very early on. 34 * Manage page tables very early on.
35 */ 35 */
36extern pgd_t early_level4_pgt[PTRS_PER_PGD]; 36extern pgd_t early_top_pgt[PTRS_PER_PGD];
37extern pmd_t early_dynamic_pgts[EARLY_DYNAMIC_PAGE_TABLES][PTRS_PER_PMD]; 37extern pmd_t early_dynamic_pgts[EARLY_DYNAMIC_PAGE_TABLES][PTRS_PER_PMD];
38static unsigned int __initdata next_early_pgt; 38static unsigned int __initdata next_early_pgt;
39pmdval_t early_pmd_flags = __PAGE_KERNEL_LARGE & ~(_PAGE_GLOBAL | _PAGE_NX); 39pmdval_t early_pmd_flags = __PAGE_KERNEL_LARGE & ~(_PAGE_GLOBAL | _PAGE_NX);
@@ -67,7 +67,7 @@ void __init __startup_64(unsigned long physaddr)
67 67
68 /* Fixup the physical addresses in the page table */ 68 /* Fixup the physical addresses in the page table */
69 69
70 pgd = fixup_pointer(&early_level4_pgt, physaddr); 70 pgd = fixup_pointer(&early_top_pgt, physaddr);
71 pgd[pgd_index(__START_KERNEL_map)] += load_delta; 71 pgd[pgd_index(__START_KERNEL_map)] += load_delta;
72 72
73 pud = fixup_pointer(&level3_kernel_pgt, physaddr); 73 pud = fixup_pointer(&level3_kernel_pgt, physaddr);
@@ -124,9 +124,9 @@ void __init __startup_64(unsigned long physaddr)
124/* Wipe all early page tables except for the kernel symbol map */ 124/* Wipe all early page tables except for the kernel symbol map */
125static void __init reset_early_page_tables(void) 125static void __init reset_early_page_tables(void)
126{ 126{
127 memset(early_level4_pgt, 0, sizeof(pgd_t)*(PTRS_PER_PGD-1)); 127 memset(early_top_pgt, 0, sizeof(pgd_t)*(PTRS_PER_PGD-1));
128 next_early_pgt = 0; 128 next_early_pgt = 0;
129 write_cr3(__pa_nodebug(early_level4_pgt)); 129 write_cr3(__pa_nodebug(early_top_pgt));
130} 130}
131 131
132/* Create a new PMD entry */ 132/* Create a new PMD entry */
@@ -138,12 +138,11 @@ int __init early_make_pgtable(unsigned long address)
138 pmdval_t pmd, *pmd_p; 138 pmdval_t pmd, *pmd_p;
139 139
140 /* Invalid address or early pgt is done ? */ 140 /* Invalid address or early pgt is done ? */
141 if (physaddr >= MAXMEM || 141 if (physaddr >= MAXMEM || read_cr3_pa() != __pa_nodebug(early_top_pgt))
142 read_cr3_pa() != __pa_nodebug(early_level4_pgt))
143 return -1; 142 return -1;
144 143
145again: 144again:
146 pgd_p = &early_level4_pgt[pgd_index(address)].pgd; 145 pgd_p = &early_top_pgt[pgd_index(address)].pgd;
147 pgd = *pgd_p; 146 pgd = *pgd_p;
148 147
149 /* 148 /*
@@ -240,7 +239,7 @@ asmlinkage __visible void __init x86_64_start_kernel(char * real_mode_data)
240 239
241 clear_bss(); 240 clear_bss();
242 241
243 clear_page(init_level4_pgt); 242 clear_page(init_top_pgt);
244 243
245 kasan_early_init(); 244 kasan_early_init();
246 245
@@ -255,8 +254,8 @@ asmlinkage __visible void __init x86_64_start_kernel(char * real_mode_data)
255 */ 254 */
256 load_ucode_bsp(); 255 load_ucode_bsp();
257 256
258 /* set init_level4_pgt kernel high mapping*/ 257 /* set init_top_pgt kernel high mapping*/
259 init_level4_pgt[511] = early_level4_pgt[511]; 258 init_top_pgt[511] = early_top_pgt[511];
260 259
261 x86_64_start_reservations(real_mode_data); 260 x86_64_start_reservations(real_mode_data);
262} 261}
diff --git a/arch/x86/kernel/head_64.S b/arch/x86/kernel/head_64.S
index 1432d530fa35..0ae0bad4d4d5 100644
--- a/arch/x86/kernel/head_64.S
+++ b/arch/x86/kernel/head_64.S
@@ -77,7 +77,7 @@ startup_64:
77 call __startup_64 77 call __startup_64
78 popq %rsi 78 popq %rsi
79 79
80 movq $(early_level4_pgt - __START_KERNEL_map), %rax 80 movq $(early_top_pgt - __START_KERNEL_map), %rax
81 jmp 1f 81 jmp 1f
82ENTRY(secondary_startup_64) 82ENTRY(secondary_startup_64)
83 /* 83 /*
@@ -97,7 +97,7 @@ ENTRY(secondary_startup_64)
97 /* Sanitize CPU configuration */ 97 /* Sanitize CPU configuration */
98 call verify_cpu 98 call verify_cpu
99 99
100 movq $(init_level4_pgt - __START_KERNEL_map), %rax 100 movq $(init_top_pgt - __START_KERNEL_map), %rax
1011: 1011:
102 102
103 /* Enable PAE mode and PGE */ 103 /* Enable PAE mode and PGE */
@@ -328,7 +328,7 @@ GLOBAL(name)
328 .endr 328 .endr
329 329
330 __INITDATA 330 __INITDATA
331NEXT_PAGE(early_level4_pgt) 331NEXT_PAGE(early_top_pgt)
332 .fill 511,8,0 332 .fill 511,8,0
333 .quad level3_kernel_pgt - __START_KERNEL_map + _PAGE_TABLE 333 .quad level3_kernel_pgt - __START_KERNEL_map + _PAGE_TABLE
334 334
@@ -338,14 +338,14 @@ NEXT_PAGE(early_dynamic_pgts)
338 .data 338 .data
339 339
340#ifndef CONFIG_XEN 340#ifndef CONFIG_XEN
341NEXT_PAGE(init_level4_pgt) 341NEXT_PAGE(init_top_pgt)
342 .fill 512,8,0 342 .fill 512,8,0
343#else 343#else
344NEXT_PAGE(init_level4_pgt) 344NEXT_PAGE(init_top_pgt)
345 .quad level3_ident_pgt - __START_KERNEL_map + _KERNPG_TABLE 345 .quad level3_ident_pgt - __START_KERNEL_map + _KERNPG_TABLE
346 .org init_level4_pgt + L4_PAGE_OFFSET*8, 0 346 .org init_top_pgt + L4_PAGE_OFFSET*8, 0
347 .quad level3_ident_pgt - __START_KERNEL_map + _KERNPG_TABLE 347 .quad level3_ident_pgt - __START_KERNEL_map + _KERNPG_TABLE
348 .org init_level4_pgt + L4_START_KERNEL*8, 0 348 .org init_top_pgt + L4_START_KERNEL*8, 0
349 /* (2^48-(2*1024*1024*1024))/(2^39) = 511 */ 349 /* (2^48-(2*1024*1024*1024))/(2^39) = 511 */
350 .quad level3_kernel_pgt - __START_KERNEL_map + _PAGE_TABLE 350 .quad level3_kernel_pgt - __START_KERNEL_map + _PAGE_TABLE
351 351
diff --git a/arch/x86/kernel/machine_kexec_64.c b/arch/x86/kernel/machine_kexec_64.c
index 6f5ca4ebe6e5..cb0a30473c23 100644
--- a/arch/x86/kernel/machine_kexec_64.c
+++ b/arch/x86/kernel/machine_kexec_64.c
@@ -347,7 +347,7 @@ void machine_kexec(struct kimage *image)
347void arch_crash_save_vmcoreinfo(void) 347void arch_crash_save_vmcoreinfo(void)
348{ 348{
349 VMCOREINFO_NUMBER(phys_base); 349 VMCOREINFO_NUMBER(phys_base);
350 VMCOREINFO_SYMBOL(init_level4_pgt); 350 VMCOREINFO_SYMBOL(init_top_pgt);
351 351
352#ifdef CONFIG_NUMA 352#ifdef CONFIG_NUMA
353 VMCOREINFO_SYMBOL(node_data); 353 VMCOREINFO_SYMBOL(node_data);
diff --git a/arch/x86/mm/dump_pagetables.c b/arch/x86/mm/dump_pagetables.c
index bce6990b1d81..0470826d2bdc 100644
--- a/arch/x86/mm/dump_pagetables.c
+++ b/arch/x86/mm/dump_pagetables.c
@@ -431,7 +431,7 @@ static void ptdump_walk_pgd_level_core(struct seq_file *m, pgd_t *pgd,
431 bool checkwx) 431 bool checkwx)
432{ 432{
433#ifdef CONFIG_X86_64 433#ifdef CONFIG_X86_64
434 pgd_t *start = (pgd_t *) &init_level4_pgt; 434 pgd_t *start = (pgd_t *) &init_top_pgt;
435#else 435#else
436 pgd_t *start = swapper_pg_dir; 436 pgd_t *start = swapper_pg_dir;
437#endif 437#endif
diff --git a/arch/x86/mm/kasan_init_64.c b/arch/x86/mm/kasan_init_64.c
index 0c7d8129bed6..88215ac16b24 100644
--- a/arch/x86/mm/kasan_init_64.c
+++ b/arch/x86/mm/kasan_init_64.c
@@ -12,7 +12,7 @@
12#include <asm/tlbflush.h> 12#include <asm/tlbflush.h>
13#include <asm/sections.h> 13#include <asm/sections.h>
14 14
15extern pgd_t early_level4_pgt[PTRS_PER_PGD]; 15extern pgd_t early_top_pgt[PTRS_PER_PGD];
16extern struct range pfn_mapped[E820_MAX_ENTRIES]; 16extern struct range pfn_mapped[E820_MAX_ENTRIES];
17 17
18static int __init map_range(struct range *range) 18static int __init map_range(struct range *range)
@@ -109,8 +109,8 @@ void __init kasan_early_init(void)
109 for (i = 0; CONFIG_PGTABLE_LEVELS >= 5 && i < PTRS_PER_P4D; i++) 109 for (i = 0; CONFIG_PGTABLE_LEVELS >= 5 && i < PTRS_PER_P4D; i++)
110 kasan_zero_p4d[i] = __p4d(p4d_val); 110 kasan_zero_p4d[i] = __p4d(p4d_val);
111 111
112 kasan_map_early_shadow(early_level4_pgt); 112 kasan_map_early_shadow(early_top_pgt);
113 kasan_map_early_shadow(init_level4_pgt); 113 kasan_map_early_shadow(init_top_pgt);
114} 114}
115 115
116void __init kasan_init(void) 116void __init kasan_init(void)
@@ -121,8 +121,8 @@ void __init kasan_init(void)
121 register_die_notifier(&kasan_die_notifier); 121 register_die_notifier(&kasan_die_notifier);
122#endif 122#endif
123 123
124 memcpy(early_level4_pgt, init_level4_pgt, sizeof(early_level4_pgt)); 124 memcpy(early_top_pgt, init_top_pgt, sizeof(early_top_pgt));
125 load_cr3(early_level4_pgt); 125 load_cr3(early_top_pgt);
126 __flush_tlb_all(); 126 __flush_tlb_all();
127 127
128 clear_pgds(KASAN_SHADOW_START, KASAN_SHADOW_END); 128 clear_pgds(KASAN_SHADOW_START, KASAN_SHADOW_END);
@@ -148,7 +148,7 @@ void __init kasan_init(void)
148 kasan_populate_zero_shadow(kasan_mem_to_shadow((void *)MODULES_END), 148 kasan_populate_zero_shadow(kasan_mem_to_shadow((void *)MODULES_END),
149 (void *)KASAN_SHADOW_END); 149 (void *)KASAN_SHADOW_END);
150 150
151 load_cr3(init_level4_pgt); 151 load_cr3(init_top_pgt);
152 __flush_tlb_all(); 152 __flush_tlb_all();
153 153
154 /* 154 /*
diff --git a/arch/x86/realmode/init.c b/arch/x86/realmode/init.c
index a163a90af4aa..cd4be19c36dc 100644
--- a/arch/x86/realmode/init.c
+++ b/arch/x86/realmode/init.c
@@ -102,7 +102,7 @@ static void __init setup_real_mode(void)
102 102
103 trampoline_pgd = (u64 *) __va(real_mode_header->trampoline_pgd); 103 trampoline_pgd = (u64 *) __va(real_mode_header->trampoline_pgd);
104 trampoline_pgd[0] = trampoline_pgd_entry.pgd; 104 trampoline_pgd[0] = trampoline_pgd_entry.pgd;
105 trampoline_pgd[511] = init_level4_pgt[511].pgd; 105 trampoline_pgd[511] = init_top_pgt[511].pgd;
106#endif 106#endif
107} 107}
108 108
diff --git a/arch/x86/xen/mmu_pv.c b/arch/x86/xen/mmu_pv.c
index 4f638309deea..1d7a7213a310 100644
--- a/arch/x86/xen/mmu_pv.c
+++ b/arch/x86/xen/mmu_pv.c
@@ -1465,8 +1465,8 @@ static void xen_write_cr3(unsigned long cr3)
1465 * At the start of the day - when Xen launches a guest, it has already 1465 * At the start of the day - when Xen launches a guest, it has already
1466 * built pagetables for the guest. We diligently look over them 1466 * built pagetables for the guest. We diligently look over them
1467 * in xen_setup_kernel_pagetable and graft as appropriate them in the 1467 * in xen_setup_kernel_pagetable and graft as appropriate them in the
1468 * init_level4_pgt and its friends. Then when we are happy we load 1468 * init_top_pgt and its friends. Then when we are happy we load
1469 * the new init_level4_pgt - and continue on. 1469 * the new init_top_pgt - and continue on.
1470 * 1470 *
1471 * The generic code starts (start_kernel) and 'init_mem_mapping' sets 1471 * The generic code starts (start_kernel) and 'init_mem_mapping' sets
1472 * up the rest of the pagetables. When it has completed it loads the cr3. 1472 * up the rest of the pagetables. When it has completed it loads the cr3.
@@ -1909,12 +1909,12 @@ void __init xen_setup_kernel_pagetable(pgd_t *pgd, unsigned long max_pfn)
1909 pt_end = pt_base + xen_start_info->nr_pt_frames; 1909 pt_end = pt_base + xen_start_info->nr_pt_frames;
1910 1910
1911 /* Zap identity mapping */ 1911 /* Zap identity mapping */
1912 init_level4_pgt[0] = __pgd(0); 1912 init_top_pgt[0] = __pgd(0);
1913 1913
1914 /* Pre-constructed entries are in pfn, so convert to mfn */ 1914 /* Pre-constructed entries are in pfn, so convert to mfn */
1915 /* L4[272] -> level3_ident_pgt */ 1915 /* L4[272] -> level3_ident_pgt */
1916 /* L4[511] -> level3_kernel_pgt */ 1916 /* L4[511] -> level3_kernel_pgt */
1917 convert_pfn_mfn(init_level4_pgt); 1917 convert_pfn_mfn(init_top_pgt);
1918 1918
1919 /* L3_i[0] -> level2_ident_pgt */ 1919 /* L3_i[0] -> level2_ident_pgt */
1920 convert_pfn_mfn(level3_ident_pgt); 1920 convert_pfn_mfn(level3_ident_pgt);
@@ -1945,10 +1945,10 @@ void __init xen_setup_kernel_pagetable(pgd_t *pgd, unsigned long max_pfn)
1945 /* Copy the initial P->M table mappings if necessary. */ 1945 /* Copy the initial P->M table mappings if necessary. */
1946 i = pgd_index(xen_start_info->mfn_list); 1946 i = pgd_index(xen_start_info->mfn_list);
1947 if (i && i < pgd_index(__START_KERNEL_map)) 1947 if (i && i < pgd_index(__START_KERNEL_map))
1948 init_level4_pgt[i] = ((pgd_t *)xen_start_info->pt_base)[i]; 1948 init_top_pgt[i] = ((pgd_t *)xen_start_info->pt_base)[i];
1949 1949
1950 /* Make pagetable pieces RO */ 1950 /* Make pagetable pieces RO */
1951 set_page_prot(init_level4_pgt, PAGE_KERNEL_RO); 1951 set_page_prot(init_top_pgt, PAGE_KERNEL_RO);
1952 set_page_prot(level3_ident_pgt, PAGE_KERNEL_RO); 1952 set_page_prot(level3_ident_pgt, PAGE_KERNEL_RO);
1953 set_page_prot(level3_kernel_pgt, PAGE_KERNEL_RO); 1953 set_page_prot(level3_kernel_pgt, PAGE_KERNEL_RO);
1954 set_page_prot(level3_user_vsyscall, PAGE_KERNEL_RO); 1954 set_page_prot(level3_user_vsyscall, PAGE_KERNEL_RO);
@@ -1959,7 +1959,7 @@ void __init xen_setup_kernel_pagetable(pgd_t *pgd, unsigned long max_pfn)
1959 1959
1960 /* Pin down new L4 */ 1960 /* Pin down new L4 */
1961 pin_pagetable_pfn(MMUEXT_PIN_L4_TABLE, 1961 pin_pagetable_pfn(MMUEXT_PIN_L4_TABLE,
1962 PFN_DOWN(__pa_symbol(init_level4_pgt))); 1962 PFN_DOWN(__pa_symbol(init_top_pgt)));
1963 1963
1964 /* Unpin Xen-provided one */ 1964 /* Unpin Xen-provided one */
1965 pin_pagetable_pfn(MMUEXT_UNPIN_TABLE, PFN_DOWN(__pa(pgd))); 1965 pin_pagetable_pfn(MMUEXT_UNPIN_TABLE, PFN_DOWN(__pa(pgd)));
@@ -1969,7 +1969,7 @@ void __init xen_setup_kernel_pagetable(pgd_t *pgd, unsigned long max_pfn)
1969 * attach it to, so make sure we just set kernel pgd. 1969 * attach it to, so make sure we just set kernel pgd.
1970 */ 1970 */
1971 xen_mc_batch(); 1971 xen_mc_batch();
1972 __xen_write_cr3(true, __pa(init_level4_pgt)); 1972 __xen_write_cr3(true, __pa(init_top_pgt));
1973 xen_mc_issue(PARAVIRT_LAZY_CPU); 1973 xen_mc_issue(PARAVIRT_LAZY_CPU);
1974 1974
1975 /* We can't that easily rip out L3 and L2, as the Xen pagetables are 1975 /* We can't that easily rip out L3 and L2, as the Xen pagetables are
diff --git a/arch/x86/xen/xen-pvh.S b/arch/x86/xen/xen-pvh.S
index 5e246716d58f..e1a5fbeae08d 100644
--- a/arch/x86/xen/xen-pvh.S
+++ b/arch/x86/xen/xen-pvh.S
@@ -87,7 +87,7 @@ ENTRY(pvh_start_xen)
87 wrmsr 87 wrmsr
88 88
89 /* Enable pre-constructed page tables. */ 89 /* Enable pre-constructed page tables. */
90 mov $_pa(init_level4_pgt), %eax 90 mov $_pa(init_top_pgt), %eax
91 mov %eax, %cr3 91 mov %eax, %cr3
92 mov $(X86_CR0_PG | X86_CR0_PE), %eax 92 mov $(X86_CR0_PG | X86_CR0_PE), %eax
93 mov %eax, %cr0 93 mov %eax, %cr0