[PATCH 1/2] ARM: conditionally allow master CPU hotplugging

Mike Turquette mturquette at ti.com
Mon Jul 18 20:33:22 EDT 2011


Currently all CPUs are marked as hotpluggable in topology_init().  This
is not true for all ARM SMP platforms including OMAP4.  In the OMAP4
case, CPU0 is considered as privileged due to TrustZone software and
other considerations.

This patch introduces a new config option, HOTPLUG_CPU_MASTER, which
prevents the first CPU in possible_cpu_mask from being marked
hotpluggable if set.

Signed-off-by: Mike Turquette <mturquette at ti.com>
---
 arch/arm/Kconfig        |    8 ++++++++
 arch/arm/kernel/setup.c |    5 +++++
 2 files changed, 13 insertions(+), 0 deletions(-)

diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 9adc278..a6e34f5 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -1393,6 +1393,14 @@ config HOTPLUG_CPU
 	  Say Y here to experiment with turning CPUs off and on.  CPUs
 	  can be controlled through /sys/devices/system/cpu.

+config HOTPLUG_CPU_MASTER
+	bool "Prevent first CPU (master) from hotplugging"
+	depends on HOTPLUG_CPU
+	help
+	  Say Y here if your platform treats the first CPU as a special
+	  "master" CPU and cannot allow it to hotplug.  This prevents the
+	  "online" entry in sysfs for that CPU.
+
 config LOCAL_TIMERS
 	bool "Use local timer interrupts"
 	depends on SMP
diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c
index ed11fb0..3785420 100644
--- a/arch/arm/kernel/setup.c
+++ b/arch/arm/kernel/setup.c
@@ -940,7 +940,12 @@ static int __init topology_init(void)

 	for_each_possible_cpu(cpu) {
 		struct cpuinfo_arm *cpuinfo =3D &per_cpu(cpu_data, cpu);
+#ifdef CONFIG_HOTPLUG_CPU_MASTER
+		if (cpu)
+			cpuinfo->cpu.hotpluggable =3D 1;
+#else
 		cpuinfo->cpu.hotpluggable =3D 1;
+#endif
 		register_cpu(&cpuinfo->cpu, cpu);
 	}

--=20
1.7.4.1



and,





More information about the linux-arm-kernel mailing list