[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen stable-4.9] x86: correct ordering of operations during S3 resume
commit c06ec81b2957128418e47c4c81badf71c653f073 Author: Jan Beulich <jbeulich@xxxxxxxx> AuthorDate: Fri May 18 11:52:29 2018 +0200 Commit: Jan Beulich <jbeulich@xxxxxxxx> CommitDate: Fri May 18 11:52:29 2018 +0200 x86: correct ordering of operations during S3 resume Microcode loading needs to happen before re-enabling interrupts, in case only updated microcode allows the use of e.g. the SPEC_{CTRL,CMD} MSRs. Otoh it doesn't need to happen at all when we didn't suspend in the first place. It needs to happen before spin_debug_enable() though, as it acquires a lock and hence would otherwise make common/spinlock.c:check_lock() unhappy. As micrcode loading can be pretty verbose, also make sure it only runs after console_end_sync(). cpufreq_add_cpu() doesn't need calling on the only "goto enable_cpu" path, which sits ahead of cpufreq_del_cpu(). Reported-by: Simon Gaiser <simon@xxxxxxxxxxxxxxxxxxxxxx> Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx> Acked-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> master commit: cb2a4a449dfd50af309a333aa805835015fbc8c8 master date: 2018-04-16 14:08:30 +0200 --- xen/arch/x86/acpi/power.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/xen/arch/x86/acpi/power.c b/xen/arch/x86/acpi/power.c index 1e4e5680a7..cb06f842cd 100644 --- a/xen/arch/x86/acpi/power.c +++ b/xen/arch/x86/acpi/power.c @@ -203,6 +203,7 @@ static int enter_state(u32 state) printk(XENLOG_ERR "Some devices failed to power down."); system_state = SYS_STATE_resume; device_power_up(error); + console_end_sync(); error = -EIO; goto done; } @@ -243,17 +244,19 @@ static int enter_state(u32 state) if ( (state == ACPI_STATE_S3) && error ) tboot_s3_error(error); + console_end_sync(); + + microcode_resume_cpu(0); + done: spin_debug_enable(); local_irq_restore(flags); - console_end_sync(); acpi_sleep_post(state); if ( hvm_cpu_up() ) BUG(); + cpufreq_add_cpu(0); enable_cpu: - cpufreq_add_cpu(0); - microcode_resume_cpu(0); rcu_barrier(); mtrr_aps_sync_begin(); enable_nonboot_cpus(); -- generated by git-patchbot for /home/xen/git/xen.git#stable-4.9 _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |