diff options
author | Keir Fraser <keir@xen.org> | 2011-01-14 14:18:31 +0000 |
---|---|---|
committer | Keir Fraser <keir@xen.org> | 2011-01-14 14:18:31 +0000 |
commit | 9d9af7dca878fb6f85ddf3cf3cb43df273f6b5a0 (patch) | |
tree | 0ad481426f571d5f7075a9c433d411177b310dae | |
parent | 24273c92be16bab4d48561a0d892463a544b0a4a (diff) | |
download | xen-9d9af7dca878fb6f85ddf3cf3cb43df273f6b5a0.tar.gz xen-9d9af7dca878fb6f85ddf3cf3cb43df273f6b5a0.tar.bz2 xen-9d9af7dca878fb6f85ddf3cf3cb43df273f6b5a0.zip |
x86 acpi: Fix crash in enable_nonboot_cpus() on wakeup from S3/S4
Bringing a CPU back online can require RCU work to be flushed, because
the per-cpu data from last time the CPU was online may not yet be
deallocated. Use the new rcu_barrier() interface function to achieve
this.
Signed-off-by: Keir Fraser <keir@xen.org>
-rw-r--r-- | xen/arch/x86/acpi/power.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/xen/arch/x86/acpi/power.c b/xen/arch/x86/acpi/power.c index b4a633d544..5dfdeb431f 100644 --- a/xen/arch/x86/acpi/power.c +++ b/xen/arch/x86/acpi/power.c @@ -206,6 +206,7 @@ static int enter_state(u32 state) enable_cpu: cpufreq_add_cpu(0); microcode_resume_cpu(0); + rcu_barrier(); mtrr_aps_sync_begin(); enable_nonboot_cpus(); mtrr_aps_sync_end(); |