diff options
Diffstat (limited to 'arch/x86/kernel/reboot.c')
| -rw-r--r-- | arch/x86/kernel/reboot.c | 4 | 
1 files changed, 4 insertions, 0 deletions
diff --git a/arch/x86/kernel/reboot.c b/arch/x86/kernel/reboot.c index 54180fa6f66f..add33f600531 100644 --- a/arch/x86/kernel/reboot.c +++ b/arch/x86/kernel/reboot.c @@ -105,6 +105,10 @@ void __noreturn machine_real_restart(unsigned int type)  	load_cr3(initial_page_table);  #else  	write_cr3(real_mode_header->trampoline_pgd); + +	/* Exiting long mode will fail if CR4.PCIDE is set. */ +	if (static_cpu_has(X86_FEATURE_PCID)) +		cr4_clear_bits(X86_CR4_PCIDE);  #endif  	/* Jump to the identity-mapped low memory code */  | 
