[prev in list] [next in list] [prev in thread] [next in thread]
List: linaro-acpi
Subject: [Linaro-acpi] [PATCH 3/5] ARM:ACPI: introduce arch_register_cpu() and arch_unregister_cpu()
From: graeme.gregory () linaro ! org (Graeme Gregory)
Date: 2013-06-25 14:38:43
Message-ID: 1372171126-28214-4-git-send-email-gg () slimlogic ! co ! uk
[Download RAW message or body]
From: Hanjun Guo <hanjun.guo at linaro.org>
Introduce arch_register_cpu() and arch_unregister_cpu() for ACPI
processor driver.
Signed-off-by: Hanjun Guo <hanjun.guo at linaro.org>
---
arch/arm/include/asm/cpu.h | 6 ++++++
arch/arm/kernel/topology.c | 33 ++++++++++++++++++++++++++++-----
2 files changed, 34 insertions(+), 5 deletions(-)
diff --git a/arch/arm/include/asm/cpu.h b/arch/arm/include/asm/cpu.h
index 2744f06..a72f974 100644
--- a/arch/arm/include/asm/cpu.h
+++ b/arch/arm/include/asm/cpu.h
@@ -12,6 +12,7 @@
#include <linux/percpu.h>
#include <linux/cpu.h>
+#include <linux/topology.h>
struct cpuinfo_arm {
struct cpu cpu;
@@ -21,6 +22,11 @@ struct cpuinfo_arm {
#endif
};
+#ifdef CONFIG_HOTPLUG_CPU
+extern int arch_register_cpu(int cpu);
+extern void arch_unregister_cpu(int cpu);
+#endif
+
DECLARE_PER_CPU(struct cpuinfo_arm, cpu_data);
#endif
diff --git a/arch/arm/kernel/topology.c b/arch/arm/kernel/topology.c
index 0444325..4c54fb0 100644
--- a/arch/arm/kernel/topology.c
+++ b/arch/arm/kernel/topology.c
@@ -326,15 +326,38 @@ void __init init_cpu_topology(void)
parse_dt_topology();
}
+#ifdef CONFIG_HOTPLUG_CPU
+int __ref arch_register_cpu(int cpu)
+{
+ struct cpuinfo_arm *cpuinfo = &per_cpu(cpu_data, cpu);
+
+ /* BSP cann't be taken down on arm */
+ if (cpu)
+ cpuinfo->cpu.hotpluggable = 1;
+
+ return register_cpu(&cpuinfo->cpu, cpu);
+}
+EXPORT_SYMBOL(arch_register_cpu);
+
+void arch_unregister_cpu(int cpu)
+{
+ unregister_cpu(&per_cpu(cpu_data, cpu).cpu);
+}
+EXPORT_SYMBOL(arch_unregister_cpu);
+#else /* CONFIG_HOTPLUG_CPU */
+
+static int __init arch_register_cpu(int cpu)
+{
+ return register_cpu(&per_cpu(cpu_data, cpu).cpu, cpu);
+}
+#endif /* CONFIG_HOTPLUG_CPU */
+
static int __init topology_init(void)
{
int cpu;
- for_each_possible_cpu(cpu) {
- struct cpuinfo_arm *cpuinfo = &per_cpu(cpu_data, cpu);
- cpuinfo->cpu.hotpluggable = 1;
- register_cpu(&cpuinfo->cpu, cpu);
- }
+ for_each_present_cpu(cpu)
+ arch_register_cpu(cpu);
return 0;
}
--
1.7.10.4
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic