xen: restore runstate_info even if !have_vcpu_info_placement
authorJeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
Sat, 21 Nov 2009 00:46:29 +0000 (08:46 +0800)
committerJeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
Thu, 3 Dec 2009 19:14:51 +0000 (11:14 -0800)
Even if have_vcpu_info_placement is not set, we still need to set up
the runstate area on each resumed vcpu.

Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
Cc: Stable Kernel <stable@kernel.org>
arch/x86/xen/enlighten.c

index cb61f77e4496ce9f6e3fac1370f608129be45d66..a7b49f99a1307e33c15e49b262a0ed84a95e3ff7 100644 (file)
@@ -138,26 +138,23 @@ static void xen_vcpu_setup(int cpu)
  */
 void xen_vcpu_restore(void)
 {
-       if (have_vcpu_info_placement) {
-               int cpu;
+       int cpu;
 
-               for_each_online_cpu(cpu) {
-                       bool other_cpu = (cpu != smp_processor_id());
+       for_each_online_cpu(cpu) {
+               bool other_cpu = (cpu != smp_processor_id());
 
-                       if (other_cpu &&
-                           HYPERVISOR_vcpu_op(VCPUOP_down, cpu, NULL))
-                               BUG();
+               if (other_cpu &&
+                   HYPERVISOR_vcpu_op(VCPUOP_down, cpu, NULL))
+                       BUG();
 
-                       xen_setup_runstate_info(cpu);
+               xen_setup_runstate_info(cpu);
 
+               if (have_vcpu_info_placement)
                        xen_vcpu_setup(cpu);
 
-                       if (other_cpu &&
-                           HYPERVISOR_vcpu_op(VCPUOP_up, cpu, NULL))
-                               BUG();
-               }
-
-               BUG_ON(!have_vcpu_info_placement);
+               if (other_cpu &&
+                   HYPERVISOR_vcpu_op(VCPUOP_up, cpu, NULL))
+                       BUG();
        }
 }