x86/boot changes for v4.6
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: 25b4caf7c50e8c501310e8c515d8518b1850c948 x86/boot: Remove unused 'is_big_kernel' variable
Early command line options parsing enhancements from Dave Hansen, plus minor cleanups and enhancements.
Thanks,
Ingo
------------------>
Alexander Kuleshov (3):
x86/boot: Micro-optimize reset_early_page_tables() x86/boot: Simplify kernel load address alignment check x86/boot: Use proper array element type in memset() size calculation
Dave Hansen (4):
x86/boot: Fix early command-line parsing when matching at end x86/boot: Fix early command-line parsing when partial word matches x86/boot: Simplify early command line parsing x86/boot: Pass in size to early cmdline parsing
Nicolas Iooss (1):
x86/boot: Remove unused 'is_big_kernel' variable
arch/x86/boot/tools/build.c | 1 - arch/x86/kernel/head64.c | 14 +++-------- arch/x86/kernel/head_64.S | 4 +-- arch/x86/lib/cmdline.c | 60 ++++++++++++++++++++++++++++++++------------- 4 files changed, 47 insertions(+), 32 deletions(-)
arch/x86/boot/tools/build.c +0 -1
@@ -49,7 +49,6 @@ typedef unsigned int u32;/* This must be large enough to hold the entire setup */ u8 buf[SETUP_SECT_MAX *512 ]; -int is_big_kernel;#define PECOFF_RELOC_RESERVE 0x20
arch/x86/kernel/head64.c +3 -11
@@ -40,13 +40,8 @@ pmdval_t early_pmd_flags = __PAGE_KERNEL_LARGE & ~(_PAGE_GLOBAL | _PAGE_NX);/* Wipe all early page tables except for the kernel symbol map */ static void __init reset_early_page_tables (void ) { -unsigned long i; - -for (i =0 ; i <PTRS_PER_PGD -1 ; i++) - early_level4_pgt[i].pgd =0 ; - +memset (early_level4_pgt,0 ,sizeof (pgd_t)*(PTRS_PER_PGD -1 )); next_early_pgt =0 ; -write_cr3 (__pa_nodebug (early_level4_pgt)); }
@@ -54,7 +49,6 @@ static void __init reset_early_page_tables(void)int __init early_make_pgtable (unsigned long address) {unsigned long physaddr = address - __PAGE_OFFSET; -unsigned long i;pgdval_t pgd, *pgd_p;pudval_t pud, *pud_p;pmdval_t pmd, *pmd_p;
@@ -81,8 +75,7 @@ int __init early_make_pgtable(unsigned long address) } pud_p = (pudval_t *)early_dynamic_pgts[next_early_pgt++]; -for (i =0 ; i <PTRS_PER_PUD ; i++) - pud_p[i] =0 ; +memset (pud_p,0 ,sizeof (*pud_p) *PTRS_PER_PUD ); *pgd_p = (pgdval_t )pud_p - __START_KERNEL_map + phys_base + _KERNPG_TABLE; } pud_p +=pud_index (address);
@@ -97,8 +90,7 @@ int __init early_make_pgtable(unsigned long address) } pmd_p = (pmdval_t *)early_dynamic_pgts[next_early_pgt++]; -for (i =0 ; i <PTRS_PER_PMD ; i++) - pmd_p[i] =0 ; +memset (pmd_p,0 ,sizeof (*pmd_p) *PTRS_PER_PMD ); *pud_p = (pudval_t )pmd_p - __START_KERNEL_map + phys_base + _KERNPG_TABLE; } pmd = (physaddr &PMD_MASK ) + early_pmd_flags;
arch/x86/kernel/head_64.S +1 -3
@@ -76,9 +76,7 @@ L3_START_KERNEL = pud_index(__START_KERNEL_map) subq $_text - __START_KERNEL_map, %rbp /* Is the address not 2M aligned? */ - movq %rbp, %rax - andl $~PMD_PAGE_MASK, %eax - testl %eax, %eax + testl $~PMD_PAGE_MASK, %ebp jnz bad_address /*
arch/x86/lib/cmdline.c +43 -17
87 lines not on this page · raw message