[GIT PULL] x86/boot changes for v4.10

From: Ingo Molnar
Date: Mon Dec 12 2016 - 04:31:59 EST


Linus,

Please pull the latest x86-boot-for-linus git tree from:

git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git x86-boot-for-linus

# HEAD: 6248f4567442081994ad61c63bd9870e147983e0 x86/boot/64: Optimize fixmap page fixup

Misc cleanups/simplifications by Borislav Petkov, Paul Bolle and Wei Yang.

Thanks,

Ingo

------------------>
Borislav Petkov (1):
x86/boot/64: Optimize fixmap page fixup

Paul Bolle (1):
x86/boot/build: Remove always empty $(USERINCLUDE)

Wei Yang (1):
x86/boot: Simplify the GDTR calculation assembly code a bit


arch/x86/boot/Makefile | 2 +-
arch/x86/boot/compressed/head_64.S | 3 +--
arch/x86/kernel/head_64.S | 8 ++++++--
3 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/arch/x86/boot/Makefile b/arch/x86/boot/Makefile
index 12ea8f8384f4..0d810fb15eac 100644
--- a/arch/x86/boot/Makefile
+++ b/arch/x86/boot/Makefile
@@ -65,7 +65,7 @@ clean-files += cpustr.h

# ---------------------------------------------------------------------------

-KBUILD_CFLAGS := $(USERINCLUDE) $(REALMODE_CFLAGS) -D_SETUP
+KBUILD_CFLAGS := $(REALMODE_CFLAGS) -D_SETUP
KBUILD_AFLAGS := $(KBUILD_CFLAGS) -D__ASSEMBLY__
GCOV_PROFILE := n
UBSAN_SANITIZE := n
diff --git a/arch/x86/boot/compressed/head_64.S b/arch/x86/boot/compressed/head_64.S
index efdfba21a5b2..4d85e600db78 100644
--- a/arch/x86/boot/compressed/head_64.S
+++ b/arch/x86/boot/compressed/head_64.S
@@ -119,8 +119,7 @@ ENTRY(startup_32)
*/

/* Load new GDT with the 64bit segments using 32bit descriptor */
- leal gdt(%ebp), %eax
- movl %eax, gdt+2(%ebp)
+ addl %ebp, gdt+2(%ebp)
lgdt gdt(%ebp)

/* Enable PAE mode */
diff --git a/arch/x86/kernel/head_64.S b/arch/x86/kernel/head_64.S
index b4421cc191b0..a4a814ffb8ca 100644
--- a/arch/x86/kernel/head_64.S
+++ b/arch/x86/kernel/head_64.S
@@ -147,6 +147,9 @@ L3_START_KERNEL = pud_index(__START_KERNEL_map)
decl %ecx
jnz 1b

+ test %rbp, %rbp
+ jz .Lskip_fixup
+
/*
* Fixup the kernel text+data virtual addresses. Note that
* we might write invalid pmds, when the kernel is relocated
@@ -154,9 +157,9 @@ L3_START_KERNEL = pud_index(__START_KERNEL_map)
* beyond _end.
*/
leaq level2_kernel_pgt(%rip), %rdi
- leaq 4096(%rdi), %r8
+ leaq PAGE_SIZE(%rdi), %r8
/* See if it is a valid page table entry */
-1: testb $1, 0(%rdi)
+1: testb $_PAGE_PRESENT, 0(%rdi)
jz 2f
addq %rbp, 0(%rdi)
/* Go to the next page */
@@ -167,6 +170,7 @@ L3_START_KERNEL = pud_index(__START_KERNEL_map)
/* Fixup phys_base */
addq %rbp, phys_base(%rip)

+.Lskip_fixup:
movq $(early_level4_pgt - __START_KERNEL_map), %rax
jmp 1f
ENTRY(secondary_startup_64)