Re: CPU Hotplug - Support for BSP removal

From: Alex Williamson <alex.williamson_at_hp.com>
Date: 2005-02-15 04:09:51
On Sat, 2005-02-12 at 07:14 -0800, Ashok Raj wrote:
> Hi
> 
> This patch requires the cpei retarget patch posted earlier. 
> 
> CAVEAT: tiger4 BIOS does not have the right value for branch reg0 when handed
> off to OS. I observed i could handoff the BSP to SAL, but due to incorrect jump
> address in b0, it ends up in some while (1); loop later. So we cannot send 
> another IPI to wakeup the bsp. The system seemed to run fine with rest of
> the processors.

  In my reading of the spec, I don't see how we can count on the BSP b0
being the appropriate value for return to SAL.  If I don't enable the
fixup option, we branch off to some bad address and the CPU is lost.
With the fixup, hotplugging the BSP on and rx2600 seems to work.

> I havent done much with the cpep stuff.

  At a minimum, the patches below are required.  Thanks,

	Alex

-- 
Alex Williamson                             HP Linux & Open Source Lab

--- linux/arch/ia64/Kconfig	2005-02-14 09:36:15.642178325 -0700
+++ linux/arch/ia64/Kconfig	2005-02-14 09:36:29.286709408 -0700
@@ -285,7 +285,7 @@
 
 config BSP_REMOVE_WORKAROUND
 	bool "Enable temporary workaround to fix b0 value for CPU hotplug"
-	depends on PERMIT_BSP_REMOVE && FORCE_CPEI_RETARGET && EXPERIMENTAL
+	depends on PERMIT_BSP_REMOVE && EXPERIMENTAL
 	default y
 	---help---
 	On tiger 4 systems's BSP's branch reg 0 (b0) is not set correctly.
--- linux/arch/ia64/kernel/topology.c	2005-02-14 09:37:20.191005660 -0700
+++ linux/arch/ia64/kernel/topology.c	2005-02-14 09:26:30.178318310 -0700
@@ -31,6 +31,7 @@
 int arch_register_cpu(int num)
 {
 	struct node *parent = NULL;
+	extern int cpe_vector;
 	
 #ifdef CONFIG_NUMA
 	parent = &sysfs_nodes[cpu_to_node(num)];
@@ -40,7 +41,7 @@
 	 * If CPEI cannot be re-targetted, and this is
 	 * CPEI target, then dont create the control file
 	 */
-	if (!can_cpei_retarget() && is_cpu_cpei_target(num))
+	if (cpe_vector > 0 && !can_cpei_retarget() && is_cpu_cpei_target(num))
 		sysfs_cpus[num].cpu.no_control = 1;
 
 	return register_cpu(&sysfs_cpus[num].cpu, num, parent);


-
To unsubscribe from this list: send the line "unsubscribe linux-ia64" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Received on Mon Feb 14 12:11:03 2005

This archive was generated by hypermail 2.1.8 : 2005-08-02 09:20:35 EST