Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 65ade2f8 authored by Kirill A. Shutemov's avatar Kirill A. Shutemov Committed by Ingo Molnar
Browse files

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: default avatarKirill A. Shutemov <kirill.shutemov@linux.intel.com>
Reviewed-by: default avatarJuergen 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: default avatarIngo Molnar <mingo@kernel.org>
parent c88d7150
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -922,7 +922,7 @@ extern pgd_t trampoline_pgd_entry;
static inline void __meminit init_trampoline_default(void)
static inline void __meminit init_trampoline_default(void)
{
{
	/* Default trampoline pgd value */
	/* Default trampoline pgd value */
	trampoline_pgd_entry = init_level4_pgt[pgd_index(__PAGE_OFFSET)];
	trampoline_pgd_entry = init_top_pgt[pgd_index(__PAGE_OFFSET)];
}
}
# ifdef CONFIG_RANDOMIZE_MEMORY
# ifdef CONFIG_RANDOMIZE_MEMORY
void __meminit init_trampoline(void);
void __meminit init_trampoline(void);
+2 −2
Original line number Original line Diff line number Diff line
@@ -20,9 +20,9 @@ extern pmd_t level2_kernel_pgt[512];
extern pmd_t level2_fixmap_pgt[512];
extern pmd_t level2_fixmap_pgt[512];
extern pmd_t level2_ident_pgt[512];
extern pmd_t level2_ident_pgt[512];
extern pte_t level1_fixmap_pgt[512];
extern pte_t level1_fixmap_pgt[512];
extern pgd_t init_level4_pgt[];
extern pgd_t init_top_pgt[];


#define swapper_pg_dir init_level4_pgt
#define swapper_pg_dir init_top_pgt


extern void paging_init(void);
extern void paging_init(void);


+1 −1
Original line number Original line Diff line number Diff line
@@ -125,7 +125,7 @@ void __init init_espfix_bsp(void)
	p4d_t *p4d;
	p4d_t *p4d;


	/* Install the espfix pud into the kernel page directory */
	/* Install the espfix pud into the kernel page directory */
	pgd = &init_level4_pgt[pgd_index(ESPFIX_BASE_ADDR)];
	pgd = &init_top_pgt[pgd_index(ESPFIX_BASE_ADDR)];
	p4d = p4d_alloc(&init_mm, pgd, ESPFIX_BASE_ADDR);
	p4d = p4d_alloc(&init_mm, pgd, ESPFIX_BASE_ADDR);
	p4d_populate(&init_mm, p4d, espfix_pud_page);
	p4d_populate(&init_mm, p4d, espfix_pud_page);


+9 −10
Original line number Original line Diff line number Diff line
@@ -33,7 +33,7 @@
/*
/*
 * Manage page tables very early on.
 * Manage page tables very early on.
 */
 */
extern pgd_t early_level4_pgt[PTRS_PER_PGD];
extern pgd_t early_top_pgt[PTRS_PER_PGD];
extern pmd_t early_dynamic_pgts[EARLY_DYNAMIC_PAGE_TABLES][PTRS_PER_PMD];
extern pmd_t early_dynamic_pgts[EARLY_DYNAMIC_PAGE_TABLES][PTRS_PER_PMD];
static unsigned int __initdata next_early_pgt;
static unsigned int __initdata next_early_pgt;
pmdval_t early_pmd_flags = __PAGE_KERNEL_LARGE & ~(_PAGE_GLOBAL | _PAGE_NX);
pmdval_t early_pmd_flags = __PAGE_KERNEL_LARGE & ~(_PAGE_GLOBAL | _PAGE_NX);
@@ -67,7 +67,7 @@ void __init __startup_64(unsigned long physaddr)


	/* Fixup the physical addresses in the page table */
	/* Fixup the physical addresses in the page table */


	pgd = fixup_pointer(&early_level4_pgt, physaddr);
	pgd = fixup_pointer(&early_top_pgt, physaddr);
	pgd[pgd_index(__START_KERNEL_map)] += load_delta;
	pgd[pgd_index(__START_KERNEL_map)] += load_delta;


	pud = fixup_pointer(&level3_kernel_pgt, physaddr);
	pud = fixup_pointer(&level3_kernel_pgt, physaddr);
@@ -124,9 +124,9 @@ void __init __startup_64(unsigned long physaddr)
/* Wipe all early page tables except for the kernel symbol map */
/* Wipe all early page tables except for the kernel symbol map */
static void __init reset_early_page_tables(void)
static void __init reset_early_page_tables(void)
{
{
	memset(early_level4_pgt, 0, sizeof(pgd_t)*(PTRS_PER_PGD-1));
	memset(early_top_pgt, 0, sizeof(pgd_t)*(PTRS_PER_PGD-1));
	next_early_pgt = 0;
	next_early_pgt = 0;
	write_cr3(__pa_nodebug(early_level4_pgt));
	write_cr3(__pa_nodebug(early_top_pgt));
}
}


/* Create a new PMD entry */
/* Create a new PMD entry */
@@ -138,12 +138,11 @@ int __init early_make_pgtable(unsigned long address)
	pmdval_t pmd, *pmd_p;
	pmdval_t pmd, *pmd_p;


	/* Invalid address or early pgt is done ?  */
	/* Invalid address or early pgt is done ?  */
	if (physaddr >= MAXMEM ||
	if (physaddr >= MAXMEM || read_cr3_pa() != __pa_nodebug(early_top_pgt))
	    read_cr3_pa() != __pa_nodebug(early_level4_pgt))
		return -1;
		return -1;


again:
again:
	pgd_p = &early_level4_pgt[pgd_index(address)].pgd;
	pgd_p = &early_top_pgt[pgd_index(address)].pgd;
	pgd = *pgd_p;
	pgd = *pgd_p;


	/*
	/*
@@ -240,7 +239,7 @@ asmlinkage __visible void __init x86_64_start_kernel(char * real_mode_data)


	clear_bss();
	clear_bss();


	clear_page(init_level4_pgt);
	clear_page(init_top_pgt);


	kasan_early_init();
	kasan_early_init();


@@ -255,8 +254,8 @@ asmlinkage __visible void __init x86_64_start_kernel(char * real_mode_data)
	 */
	 */
	load_ucode_bsp();
	load_ucode_bsp();


	/* set init_level4_pgt kernel high mapping*/
	/* set init_top_pgt kernel high mapping*/
	init_level4_pgt[511] = early_level4_pgt[511];
	init_top_pgt[511] = early_top_pgt[511];


	x86_64_start_reservations(real_mode_data);
	x86_64_start_reservations(real_mode_data);
}
}
+7 −7
Original line number Original line Diff line number Diff line
@@ -77,7 +77,7 @@ startup_64:
	call	__startup_64
	call	__startup_64
	popq	%rsi
	popq	%rsi


	movq	$(early_level4_pgt - __START_KERNEL_map), %rax
	movq	$(early_top_pgt - __START_KERNEL_map), %rax
	jmp 1f
	jmp 1f
ENTRY(secondary_startup_64)
ENTRY(secondary_startup_64)
	/*
	/*
@@ -97,7 +97,7 @@ ENTRY(secondary_startup_64)
	/* Sanitize CPU configuration */
	/* Sanitize CPU configuration */
	call verify_cpu
	call verify_cpu


	movq	$(init_level4_pgt - __START_KERNEL_map), %rax
	movq	$(init_top_pgt - __START_KERNEL_map), %rax
1:
1:


	/* Enable PAE mode and PGE */
	/* Enable PAE mode and PGE */
@@ -328,7 +328,7 @@ GLOBAL(name)
	.endr
	.endr


	__INITDATA
	__INITDATA
NEXT_PAGE(early_level4_pgt)
NEXT_PAGE(early_top_pgt)
	.fill	511,8,0
	.fill	511,8,0
	.quad	level3_kernel_pgt - __START_KERNEL_map + _PAGE_TABLE
	.quad	level3_kernel_pgt - __START_KERNEL_map + _PAGE_TABLE


@@ -338,14 +338,14 @@ NEXT_PAGE(early_dynamic_pgts)
	.data
	.data


#ifndef CONFIG_XEN
#ifndef CONFIG_XEN
NEXT_PAGE(init_level4_pgt)
NEXT_PAGE(init_top_pgt)
	.fill	512,8,0
	.fill	512,8,0
#else
#else
NEXT_PAGE(init_level4_pgt)
NEXT_PAGE(init_top_pgt)
	.quad   level3_ident_pgt - __START_KERNEL_map + _KERNPG_TABLE
	.quad   level3_ident_pgt - __START_KERNEL_map + _KERNPG_TABLE
	.org    init_level4_pgt + L4_PAGE_OFFSET*8, 0
	.org    init_top_pgt + L4_PAGE_OFFSET*8, 0
	.quad   level3_ident_pgt - __START_KERNEL_map + _KERNPG_TABLE
	.quad   level3_ident_pgt - __START_KERNEL_map + _KERNPG_TABLE
	.org    init_level4_pgt + L4_START_KERNEL*8, 0
	.org    init_top_pgt + L4_START_KERNEL*8, 0
	/* (2^48-(2*1024*1024*1024))/(2^39) = 511 */
	/* (2^48-(2*1024*1024*1024))/(2^39) = 511 */
	.quad   level3_kernel_pgt - __START_KERNEL_map + _PAGE_TABLE
	.quad   level3_kernel_pgt - __START_KERNEL_map + _PAGE_TABLE


Loading