From: Andrew Cooper Date: Fri, 13 Dec 2019 17:56:40 +0000 (+0000) Subject: x86/S3: Restore cr4 later during resume X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=581deaa82952ac652ca1d838da34307a15031046;p=people%2Fdwmw2%2Fxen.git x86/S3: Restore cr4 later during resume Just like the BSP/AP paths, %cr4 is loaded with only PAE. Defer restoring all of %cr4 (MCE in particular) until all the system structures (IDT/TSS in particular) have been loaded. Signed-off-by: Andrew Cooper Reviewed-by: Roger Pau Monné Acked-by: Jan Beulich --- diff --git a/xen/arch/x86/acpi/suspend.c b/xen/arch/x86/acpi/suspend.c index c9dea67bf3..32d0f71ffd 100644 --- a/xen/arch/x86/acpi/suspend.c +++ b/xen/arch/x86/acpi/suspend.c @@ -43,6 +43,9 @@ void restore_rest_processor_state(void) { load_system_tables(); + /* Restore full CR4 (inc MCE) now that the IDT is in place. */ + write_cr4(mmu_cr4_features); + /* Recover syscall MSRs */ wrmsrl(MSR_LSTAR, saved_lstar); wrmsrl(MSR_CSTAR, saved_cstar); diff --git a/xen/arch/x86/acpi/wakeup_prot.S b/xen/arch/x86/acpi/wakeup_prot.S index 2f6c8e18ef..a81849fd2b 100644 --- a/xen/arch/x86/acpi/wakeup_prot.S +++ b/xen/arch/x86/acpi/wakeup_prot.S @@ -45,10 +45,6 @@ ENTRY(do_suspend_lowlevel) ENTRY(s3_resume) lgdt boot_gdtr(%rip) - /* mmu_cr4_features contains latest cr4 setting */ - mov REF(mmu_cr4_features), GREG(ax) - mov GREG(ax), %cr4 - mov REF(saved_cr0), GREG(ax) mov GREG(ax), %cr0