aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/xen/enlighten.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2009-12-10 12:35:02 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2009-12-10 12:35:02 -0500
commitab1831b0b87851c874a75e4b3a8538e3d76b37d7 (patch)
treee2855518eb570ad09e2bdf5b3805cfa758e0abc3 /arch/x86/xen/enlighten.c
parenteae6fa9b0c3e2cb49cc157e906dd0ac52cfd7ca5 (diff)
parentbc2c0303226ec716854d3c208c7f84fe7aa35cd7 (diff)
Merge branch 'bugfix' of git://git.kernel.org/pub/scm/linux/kernel/git/jeremy/xen
* 'bugfix' of git://git.kernel.org/pub/scm/linux/kernel/git/jeremy/xen: xen: try harder to balloon up under memory pressure. Xen balloon: fix totalram_pages counting. xen: explicitly create/destroy stop_machine workqueues outside suspend/resume region. xen: improve error handling in do_suspend. xen: don't leak IRQs over suspend/resume. xen: call clock resume notifier on all CPUs xen: use iret for return from 64b kernel to 32b usermode xen: don't call dpm_resume_noirq() with interrupts disabled. xen: register runstate info for boot CPU early xen: register runstate on secondary CPUs xen: register timer interrupt with IRQF_TIMER xen: correctly restore pfn_to_mfn_list_list after resume xen: restore runstate_info even if !have_vcpu_info_placement xen: re-register runstate area earlier on resume. xen: wait up to 5 minutes for device connetion xen: improvement to wait_for_devices() xen: fix is_disconnected_device/exists_disconnected_device xen/xenbus: make DEVICE_ATTR()s static
Diffstat (limited to 'arch/x86/xen/enlighten.c')
-rw-r--r--arch/x86/xen/enlighten.c27
1 files changed, 14 insertions, 13 deletions
diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c
index c462cea8ef09..b8e45f164e2a 100644
--- a/arch/x86/xen/enlighten.c
+++ b/arch/x86/xen/enlighten.c
@@ -138,24 +138,23 @@ static void xen_vcpu_setup(int cpu)
138 */ 138 */
139void xen_vcpu_restore(void) 139void xen_vcpu_restore(void)
140{ 140{
141 if (have_vcpu_info_placement) { 141 int cpu;
142 int cpu;
143 142
144 for_each_online_cpu(cpu) { 143 for_each_online_cpu(cpu) {
145 bool other_cpu = (cpu != smp_processor_id()); 144 bool other_cpu = (cpu != smp_processor_id());
146 145
147 if (other_cpu && 146 if (other_cpu &&
148 HYPERVISOR_vcpu_op(VCPUOP_down, cpu, NULL)) 147 HYPERVISOR_vcpu_op(VCPUOP_down, cpu, NULL))
149 BUG(); 148 BUG();
150 149
151 xen_vcpu_setup(cpu); 150 xen_setup_runstate_info(cpu);
152 151
153 if (other_cpu && 152 if (have_vcpu_info_placement)
154 HYPERVISOR_vcpu_op(VCPUOP_up, cpu, NULL)) 153 xen_vcpu_setup(cpu);
155 BUG();
156 }
157 154
158 BUG_ON(!have_vcpu_info_placement); 155 if (other_cpu &&
156 HYPERVISOR_vcpu_op(VCPUOP_up, cpu, NULL))
157 BUG();
159 } 158 }
160} 159}
161 160
@@ -1180,6 +1179,8 @@ asmlinkage void __init xen_start_kernel(void)
1180 1179
1181 xen_raw_console_write("about to get started...\n"); 1180 xen_raw_console_write("about to get started...\n");
1182 1181
1182 xen_setup_runstate_info(0);
1183
1183 /* Start the world */ 1184 /* Start the world */
1184#ifdef CONFIG_X86_32 1185#ifdef CONFIG_X86_32
1185 i386_start_kernel(); 1186 i386_start_kernel();