diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2009-12-10 12:35:02 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-12-10 12:35:02 -0500 |
commit | ab1831b0b87851c874a75e4b3a8538e3d76b37d7 (patch) | |
tree | e2855518eb570ad09e2bdf5b3805cfa758e0abc3 /arch/x86/xen/enlighten.c | |
parent | eae6fa9b0c3e2cb49cc157e906dd0ac52cfd7ca5 (diff) | |
parent | bc2c0303226ec716854d3c208c7f84fe7aa35cd7 (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.c | 27 |
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 | */ |
139 | void xen_vcpu_restore(void) | 139 | void 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(); |