debuggers.hg

changeset 22803:0e693052c791

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>
author Keir Fraser <keir@xen.org>
date Fri Jan 14 14:18:31 2011 +0000 (2011-01-14)
parents bb0d0141ebf7
children d276f4528b32
files xen/arch/x86/acpi/power.c
line diff
     1.1 --- a/xen/arch/x86/acpi/power.c	Fri Jan 14 14:16:42 2011 +0000
     1.2 +++ b/xen/arch/x86/acpi/power.c	Fri Jan 14 14:18:31 2011 +0000
     1.3 @@ -206,6 +206,7 @@ static int enter_state(u32 state)
     1.4   enable_cpu:
     1.5      cpufreq_add_cpu(0);
     1.6      microcode_resume_cpu(0);
     1.7 +    rcu_barrier();
     1.8      mtrr_aps_sync_begin();
     1.9      enable_nonboot_cpus();
    1.10      mtrr_aps_sync_end();