summaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorJeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>2009-11-21 01:46:29 +0100
committerJeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>2009-12-03 20:14:51 +0100
commit3905bb2aa7bb801b31946b37a4635ebac4009051 (patch)
tree3d952a665cdaeeee0fecede06a61060bb00b7ade /arch
parentxen: re-register runstate area earlier on resume. (diff)
downloadlinux-3905bb2aa7bb801b31946b37a4635ebac4009051.tar.xz
linux-3905bb2aa7bb801b31946b37a4635ebac4009051.zip
xen: restore runstate_info even if !have_vcpu_info_placement
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>
Diffstat (limited to 'arch')
-rw-r--r--arch/x86/xen/enlighten.c25
1 files changed, 11 insertions, 14 deletions
diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c
index cb61f77e4496..a7b49f99a130 100644
--- a/arch/x86/xen/enlighten.c
+++ b/arch/x86/xen/enlighten.c
@@ -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();
}
}