diff options
| author | Thomas Gleixner <tglx@linutronix.de> | 2016-08-22 10:34:13 +0200 | 
|---|---|---|
| committer | Thomas Gleixner <tglx@linutronix.de> | 2016-08-22 10:34:13 +0200 | 
| commit | d16c995fe43021c765186bf8b9f7e1cc4b043232 (patch) | |
| tree | 67eed481534bc6c7102110e65ab4c6ee9e0b786a /arch/x86/kernel/setup.c | |
| parent | f3b0946d629c8bfbd3e5f038e30cb9c711a35f10 (diff) | |
| parent | 7611da865c1060b2a7c87a15de663a59035747f8 (diff) | |
Merge tag 'irqchip-for-4.8-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/maz/arm-platforms into irq/urgent
Pull genirq/irqchip fixes for 4.8-rc4 from Marc Zygnier
- A critical fix for chained irqchip where we failed to configure
  the cascade interrupt trigger
- A GIC fix for self-IPI in SMP-on-UP configurations
- A PM fix for GICv3
- A initialization fix the the GICv3 ITS, triggered by kexec
Diffstat (limited to 'arch/x86/kernel/setup.c')
| -rw-r--r-- | arch/x86/kernel/setup.c | 27 | 
1 files changed, 17 insertions, 10 deletions
diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c index 991b77986d57..0fa60f5f5a16 100644 --- a/arch/x86/kernel/setup.c +++ b/arch/x86/kernel/setup.c @@ -936,8 +936,6 @@ void __init setup_arch(char **cmdline_p)  	x86_init.oem.arch_setup(); -	kernel_randomize_memory(); -  	iomem_resource.end = (1ULL << boot_cpu_data.x86_phys_bits) - 1;  	setup_memory_map();  	parse_setup_data(); @@ -1055,6 +1053,12 @@ void __init setup_arch(char **cmdline_p)  	max_possible_pfn = max_pfn; +	/* +	 * Define random base addresses for memory sections after max_pfn is +	 * defined and before each memory section base is used. +	 */ +	kernel_randomize_memory(); +  #ifdef CONFIG_X86_32  	/* max_low_pfn get updated here */  	find_low_pfn_range(); @@ -1097,6 +1101,8 @@ void __init setup_arch(char **cmdline_p)  		efi_find_mirror();  	} +	reserve_bios_regions(); +  	/*  	 * The EFI specification says that boot service code won't be called  	 * after ExitBootServices(). This is, in fact, a lie. @@ -1125,7 +1131,15 @@ void __init setup_arch(char **cmdline_p)  	early_trap_pf_init(); -	setup_real_mode(); +	/* +	 * Update mmu_cr4_features (and, indirectly, trampoline_cr4_features) +	 * with the current CR4 value.  This may not be necessary, but +	 * auditing all the early-boot CR4 manipulation would be needed to +	 * rule it out. +	 */ +	if (boot_cpu_data.cpuid_level >= 0) +		/* A CPU has %cr4 if and only if it has CPUID. */ +		mmu_cr4_features = __read_cr4();  	memblock_set_current_limit(get_max_mapped()); @@ -1174,13 +1188,6 @@ void __init setup_arch(char **cmdline_p)  	kasan_init(); -	if (boot_cpu_data.cpuid_level >= 0) { -		/* A CPU has %cr4 if and only if it has CPUID */ -		mmu_cr4_features = __read_cr4(); -		if (trampoline_cr4_features) -			*trampoline_cr4_features = mmu_cr4_features; -	} -  #ifdef CONFIG_X86_32  	/* sync back kernel address range */  	clone_pgd_range(initial_page_table + KERNEL_PGD_BOUNDARY,  | 
