Skip to contentSkip to conversation

sparse: fix x86_64 domU SMP cpu_present map

PATCH New Ryan Harper 1 participant 1 message Nov 1, 2005

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 sparse: fix x86_64 domU SMP cpu_present map

Changeset 7419 introduced a check for DOM0 before setting a bit in the cpu_present map. This prevents domU SMP kernels without HOTPLUG_CPU support from booting. Secondary cpus need to be present and online before init/main.c:do_basic_setup() calls init_workqueues() (which initializes per-cpu workqueues).

Without this patch, non HOTPLUG_CPU enabled kernels hang when flushing cpu workqueues as the spinlock in the structure is never initialized (it has a default value of zero which means the lock has been acquired on x86).

I've tested this patch on x86_64 SMP, x86_32 SMP, with and without HOTPLUG_CPU set. See bugzilla [1]#347 for more details.

Please apply.

1. http://bugzilla.xensource.com/bugzilla/show_bug.cgi?id=347

Signature · 25 lines
Ryan Harper
Software Engineer; Linux Technology Center
IBM Corp., Austin, Tx
(512) 838-9253   T/L: 678-9253
[email protected]

diffstat output:
 smpboot.c |    3 +--
 1 files changed, 1 insertion(+), 2 deletions(-)

Signed-off-by: Ryan Harper <[email protected]>
---
diff -r ae2e13795c63 linux-2.6-xen-sparse/arch/xen/kernel/smpboot.c
--- a/linux-2.6-xen-sparse/arch/xen/kernel/smpboot.c	Tue Nov  1 18:13:06 2005
+++ b/linux-2.6-xen-sparse/arch/xen/kernel/smpboot.c	Tue Nov  1 14:15:08 2005
@@ -236,8 +236,7 @@
 		make_page_readonly((void *)cpu_gdt_descr[cpu].address);
 
 		cpu_set(cpu, cpu_possible_map);
-		if (xen_start_info->flags & SIF_INITDOMAIN)
-			cpu_set(cpu, cpu_present_map);
+		cpu_set(cpu, cpu_present_map);
 
 		vcpu_prepare(cpu);
 	}