From: David Brown <davidb@codeaurora.org>
To: Marc Zyngier <marc.zyngier@arm.com>
Cc: linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org, David Brown <davidb@codeaurora.org>,
Arnd Bergmann <arnd@arndb.de>,
linux-arm-msm@vger.kernel.org
Subject: [PATCH 1/2] ARM: SoC: convert MSM SMP to SoC descriptor
Date: Wed, 12 Sep 2012 16:01:39 -0700 [thread overview]
Message-ID: <1347490900-8409-1-git-send-email-davidb@codeaurora.org> (raw)
In-Reply-To: <1347461906-13527-7-git-send-email-arnd@arndb.de>
From: Marc Zyngier <marc.zyngier@arm.com>
Convert MSM SMP platforms to use the SoC descriptor to provide
their SMP and CPU hotplug operations.
Cc: David Brown <davidb@codeaurora.org>
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
This is an adaptation of this change on top of the msm-for-3.7 tree I
recently sent out a pull request for. The only real change is to
resolve the conflicts with the simplified board files.
arch/arm/mach-msm/board-dt-8660.c | 2 ++
arch/arm/mach-msm/board-dt-8960.c | 2 ++
arch/arm/mach-msm/core.h | 2 ++
arch/arm/mach-msm/hotplug.c | 18 +++---------------
arch/arm/mach-msm/platsmp.c | 19 +++++++++++++++----
5 files changed, 24 insertions(+), 19 deletions(-)
create mode 100644 arch/arm/mach-msm/core.h
diff --git a/arch/arm/mach-msm/board-dt-8660.c b/arch/arm/mach-msm/board-dt-8660.c
index f77f57f..e5643f6 100644
--- a/arch/arm/mach-msm/board-dt-8660.c
+++ b/arch/arm/mach-msm/board-dt-8660.c
@@ -20,6 +20,7 @@
#include <mach/board.h>
#include "common.h"
+#include "core.h"
static const struct of_device_id msm_dt_gic_match[] __initconst = {
{ .compatible = "qcom,msm-8660-qgic", .data = gic_of_init },
@@ -53,6 +54,7 @@ static const char *msm8x60_fluid_match[] __initdata = {
};
DT_MACHINE_START(MSM_DT, "Qualcomm MSM (Flattened Device Tree)")
+ .smp = smp_ops(msm_smp_ops),
.map_io = msm_map_msm8x60_io,
.init_irq = msm8x60_init_irq,
.handle_irq = gic_handle_irq,
diff --git a/arch/arm/mach-msm/board-dt-8960.c b/arch/arm/mach-msm/board-dt-8960.c
index 8df99b8..139d61b 100644
--- a/arch/arm/mach-msm/board-dt-8960.c
+++ b/arch/arm/mach-msm/board-dt-8960.c
@@ -18,6 +18,7 @@
#include <asm/mach/arch.h>
#include "common.h"
+#include "core.h"
static const struct of_device_id msm_dt_gic_match[] __initconst = {
{ .compatible = "qcom,msm-qgic2", .data = gic_of_init },
@@ -40,6 +41,7 @@ static const char * const msm8960_dt_match[] __initconst = {
};
DT_MACHINE_START(MSM8960_DT, "Qualcomm MSM (Flattened Device Tree)")
+ .smp = smp_ops(msm_smp_ops),
.map_io = msm_map_msm8960_io,
.init_irq = msm_dt_init_irq,
.timer = &msm_dt_timer,
diff --git a/arch/arm/mach-msm/core.h b/arch/arm/mach-msm/core.h
new file mode 100644
index 0000000..a9bab53
--- /dev/null
+++ b/arch/arm/mach-msm/core.h
@@ -0,0 +1,2 @@
+extern struct smp_operations msm_smp_ops;
+extern void msm_cpu_die(unsigned int cpu);
diff --git a/arch/arm/mach-msm/hotplug.c b/arch/arm/mach-msm/hotplug.c
index a446fc1..d0f79e8 100644
--- a/arch/arm/mach-msm/hotplug.c
+++ b/arch/arm/mach-msm/hotplug.c
@@ -13,6 +13,8 @@
#include <asm/cacheflush.h>
#include <asm/smp_plat.h>
+#include "core.h"
+
extern volatile int pen_release;
static inline void cpu_enter_lowpower(void)
@@ -57,17 +59,12 @@ static inline void platform_do_lowpower(unsigned int cpu)
}
}
-int platform_cpu_kill(unsigned int cpu)
-{
- return 1;
-}
-
/*
* platform-specific code to shutdown a CPU
*
* Called with IRQs disabled
*/
-void platform_cpu_die(unsigned int cpu)
+void msm_cpu_die(unsigned int cpu)
{
/*
* we're ready for shutdown now, so do it
@@ -81,12 +78,3 @@ void platform_cpu_die(unsigned int cpu)
*/
cpu_leave_lowpower();
}
-
-int platform_cpu_disable(unsigned int cpu)
-{
- /*
- * we don't allow CPU 0 to be shutdown (it is still too special
- * e.g. clock tick interrupts)
- */
- return cpu == 0 ? -EPERM : 0;
-}
diff --git a/arch/arm/mach-msm/platsmp.c b/arch/arm/mach-msm/platsmp.c
index b119f99..313bd7d 100644
--- a/arch/arm/mach-msm/platsmp.c
+++ b/arch/arm/mach-msm/platsmp.c
@@ -23,6 +23,7 @@
#include <asm/smp_plat.h>
#include "scm-boot.h"
+#include "core.h"
#define VDD_SC1_ARRAY_CLAMP_GFS_CTL 0x15A0
#define SCSS_CPU1CORE_RESET 0xD80
@@ -43,7 +44,7 @@ static inline int get_core_count(void)
return ((read_cpuid_id() >> 4) & 3) + 1;
}
-void __cpuinit platform_secondary_init(unsigned int cpu)
+static void __cpuinit msm_secondary_init(unsigned int cpu)
{
/*
* if any interrupts are already enabled for the primary
@@ -85,7 +86,7 @@ static __cpuinit void prepare_cold_cpu(unsigned int cpu)
"address\n");
}
-int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle)
+static int __cpuinit msm_boot_secondary(unsigned int cpu, struct task_struct *idle)
{
unsigned long timeout;
static int cold_boot_done;
@@ -145,7 +146,7 @@ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle)
* does not support the ARM SCU, so just set the possible cpu mask to
* NR_CPUS.
*/
-void __init smp_init_cpus(void)
+static void __init msm_smp_init_cpus(void)
{
unsigned int i, ncores = get_core_count();
@@ -161,6 +162,16 @@ void __init smp_init_cpus(void)
set_smp_cross_call(gic_raise_softirq);
}
-void __init platform_smp_prepare_cpus(unsigned int max_cpus)
+static void __init msm_smp_prepare_cpus(unsigned int max_cpus)
{
}
+
+struct smp_operations msm_smp_ops __initdata = {
+ .smp_init_cpus = msm_smp_init_cpus,
+ .smp_prepare_cpus = msm_smp_prepare_cpus,
+ .smp_secondary_init = msm_secondary_init,
+ .smp_boot_secondary = msm_boot_secondary,
+#ifdef CONFIG_HOTPLUG_CPU
+ .cpu_die = msm_cpu_die,
+#endif
+};
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation
WARNING: multiple messages have this Message-ID (diff)
From: davidb@codeaurora.org (David Brown)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 1/2] ARM: SoC: convert MSM SMP to SoC descriptor
Date: Wed, 12 Sep 2012 16:01:39 -0700 [thread overview]
Message-ID: <1347490900-8409-1-git-send-email-davidb@codeaurora.org> (raw)
In-Reply-To: <1347461906-13527-7-git-send-email-arnd@arndb.de>
From: Marc Zyngier <marc.zyngier@arm.com>
Convert MSM SMP platforms to use the SoC descriptor to provide
their SMP and CPU hotplug operations.
Cc: David Brown <davidb@codeaurora.org>
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
This is an adaptation of this change on top of the msm-for-3.7 tree I
recently sent out a pull request for. The only real change is to
resolve the conflicts with the simplified board files.
arch/arm/mach-msm/board-dt-8660.c | 2 ++
arch/arm/mach-msm/board-dt-8960.c | 2 ++
arch/arm/mach-msm/core.h | 2 ++
arch/arm/mach-msm/hotplug.c | 18 +++---------------
arch/arm/mach-msm/platsmp.c | 19 +++++++++++++++----
5 files changed, 24 insertions(+), 19 deletions(-)
create mode 100644 arch/arm/mach-msm/core.h
diff --git a/arch/arm/mach-msm/board-dt-8660.c b/arch/arm/mach-msm/board-dt-8660.c
index f77f57f..e5643f6 100644
--- a/arch/arm/mach-msm/board-dt-8660.c
+++ b/arch/arm/mach-msm/board-dt-8660.c
@@ -20,6 +20,7 @@
#include <mach/board.h>
#include "common.h"
+#include "core.h"
static const struct of_device_id msm_dt_gic_match[] __initconst = {
{ .compatible = "qcom,msm-8660-qgic", .data = gic_of_init },
@@ -53,6 +54,7 @@ static const char *msm8x60_fluid_match[] __initdata = {
};
DT_MACHINE_START(MSM_DT, "Qualcomm MSM (Flattened Device Tree)")
+ .smp = smp_ops(msm_smp_ops),
.map_io = msm_map_msm8x60_io,
.init_irq = msm8x60_init_irq,
.handle_irq = gic_handle_irq,
diff --git a/arch/arm/mach-msm/board-dt-8960.c b/arch/arm/mach-msm/board-dt-8960.c
index 8df99b8..139d61b 100644
--- a/arch/arm/mach-msm/board-dt-8960.c
+++ b/arch/arm/mach-msm/board-dt-8960.c
@@ -18,6 +18,7 @@
#include <asm/mach/arch.h>
#include "common.h"
+#include "core.h"
static const struct of_device_id msm_dt_gic_match[] __initconst = {
{ .compatible = "qcom,msm-qgic2", .data = gic_of_init },
@@ -40,6 +41,7 @@ static const char * const msm8960_dt_match[] __initconst = {
};
DT_MACHINE_START(MSM8960_DT, "Qualcomm MSM (Flattened Device Tree)")
+ .smp = smp_ops(msm_smp_ops),
.map_io = msm_map_msm8960_io,
.init_irq = msm_dt_init_irq,
.timer = &msm_dt_timer,
diff --git a/arch/arm/mach-msm/core.h b/arch/arm/mach-msm/core.h
new file mode 100644
index 0000000..a9bab53
--- /dev/null
+++ b/arch/arm/mach-msm/core.h
@@ -0,0 +1,2 @@
+extern struct smp_operations msm_smp_ops;
+extern void msm_cpu_die(unsigned int cpu);
diff --git a/arch/arm/mach-msm/hotplug.c b/arch/arm/mach-msm/hotplug.c
index a446fc1..d0f79e8 100644
--- a/arch/arm/mach-msm/hotplug.c
+++ b/arch/arm/mach-msm/hotplug.c
@@ -13,6 +13,8 @@
#include <asm/cacheflush.h>
#include <asm/smp_plat.h>
+#include "core.h"
+
extern volatile int pen_release;
static inline void cpu_enter_lowpower(void)
@@ -57,17 +59,12 @@ static inline void platform_do_lowpower(unsigned int cpu)
}
}
-int platform_cpu_kill(unsigned int cpu)
-{
- return 1;
-}
-
/*
* platform-specific code to shutdown a CPU
*
* Called with IRQs disabled
*/
-void platform_cpu_die(unsigned int cpu)
+void msm_cpu_die(unsigned int cpu)
{
/*
* we're ready for shutdown now, so do it
@@ -81,12 +78,3 @@ void platform_cpu_die(unsigned int cpu)
*/
cpu_leave_lowpower();
}
-
-int platform_cpu_disable(unsigned int cpu)
-{
- /*
- * we don't allow CPU 0 to be shutdown (it is still too special
- * e.g. clock tick interrupts)
- */
- return cpu == 0 ? -EPERM : 0;
-}
diff --git a/arch/arm/mach-msm/platsmp.c b/arch/arm/mach-msm/platsmp.c
index b119f99..313bd7d 100644
--- a/arch/arm/mach-msm/platsmp.c
+++ b/arch/arm/mach-msm/platsmp.c
@@ -23,6 +23,7 @@
#include <asm/smp_plat.h>
#include "scm-boot.h"
+#include "core.h"
#define VDD_SC1_ARRAY_CLAMP_GFS_CTL 0x15A0
#define SCSS_CPU1CORE_RESET 0xD80
@@ -43,7 +44,7 @@ static inline int get_core_count(void)
return ((read_cpuid_id() >> 4) & 3) + 1;
}
-void __cpuinit platform_secondary_init(unsigned int cpu)
+static void __cpuinit msm_secondary_init(unsigned int cpu)
{
/*
* if any interrupts are already enabled for the primary
@@ -85,7 +86,7 @@ static __cpuinit void prepare_cold_cpu(unsigned int cpu)
"address\n");
}
-int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle)
+static int __cpuinit msm_boot_secondary(unsigned int cpu, struct task_struct *idle)
{
unsigned long timeout;
static int cold_boot_done;
@@ -145,7 +146,7 @@ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle)
* does not support the ARM SCU, so just set the possible cpu mask to
* NR_CPUS.
*/
-void __init smp_init_cpus(void)
+static void __init msm_smp_init_cpus(void)
{
unsigned int i, ncores = get_core_count();
@@ -161,6 +162,16 @@ void __init smp_init_cpus(void)
set_smp_cross_call(gic_raise_softirq);
}
-void __init platform_smp_prepare_cpus(unsigned int max_cpus)
+static void __init msm_smp_prepare_cpus(unsigned int max_cpus)
{
}
+
+struct smp_operations msm_smp_ops __initdata = {
+ .smp_init_cpus = msm_smp_init_cpus,
+ .smp_prepare_cpus = msm_smp_prepare_cpus,
+ .smp_secondary_init = msm_secondary_init,
+ .smp_boot_secondary = msm_boot_secondary,
+#ifdef CONFIG_HOTPLUG_CPU
+ .cpu_die = msm_cpu_die,
+#endif
+};
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation
next prev parent reply other threads:[~2012-09-12 23:02 UTC|newest]
Thread overview: 62+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-09-12 14:58 [PATCH v9 00/13] Per sub-architecture SMP operations Arnd Bergmann
2012-09-12 14:58 ` Arnd Bergmann
2012-09-12 14:58 ` [PATCH v9 01/13] ARM: SoC: add per-platform " Arnd Bergmann
2012-09-12 14:58 ` Arnd Bergmann
2012-09-12 14:58 ` [PATCH v9 02/13] ARM: SoC: convert VExpress/RealView to SoC descriptor Arnd Bergmann
2012-09-12 14:58 ` Arnd Bergmann
2012-09-12 14:58 ` [PATCH v9 03/13] ARM: SoC: convert OMAP4 " Arnd Bergmann
2012-09-12 14:58 ` Arnd Bergmann
2012-09-12 14:58 ` [PATCH v9 04/13] ARM: SoC: convert Tegra " Arnd Bergmann
2012-09-12 14:58 ` Arnd Bergmann
2012-09-12 14:58 ` [PATCH v9 05/13] ARM: SoC: convert Exynos4 " Arnd Bergmann
2012-09-12 14:58 ` Arnd Bergmann
2012-09-13 5:10 ` Kyungmin Park
2012-09-13 5:10 ` Kyungmin Park
2012-09-14 4:33 ` Kukjin Kim
2012-09-14 4:33 ` Kukjin Kim
2012-09-12 14:58 ` [PATCH v9 06/13] ARM: SoC: convert MSM SMP " Arnd Bergmann
2012-09-12 14:58 ` Arnd Bergmann
2012-09-12 16:26 ` David Brown
2012-09-12 16:26 ` David Brown
2012-09-12 20:32 ` Stephen Boyd
2012-09-12 20:32 ` Stephen Boyd
2012-09-12 23:01 ` David Brown [this message]
2012-09-12 23:01 ` [PATCH 1/2] " David Brown
2012-09-12 23:01 ` [PATCH 2/2] ARM: msm: Move core.h contents into common.h David Brown
2012-09-12 23:01 ` David Brown
2012-09-13 8:47 ` [PATCH 1/2] ARM: SoC: convert MSM SMP to SoC descriptor Arnd Bergmann
2012-09-13 8:47 ` Arnd Bergmann
2012-09-13 16:15 ` David Brown
2012-09-13 16:15 ` David Brown
2012-09-14 7:57 ` Arnd Bergmann
2012-09-14 7:57 ` Arnd Bergmann
2012-09-12 14:58 ` [PATCH v9 07/13] ARM: SoC: convert ux500 " Arnd Bergmann
2012-09-12 14:58 ` Arnd Bergmann
[not found] ` <CAE2-_9o5gEpEddGLvRRA=pe=vroTnBXmGmoBO1Ojos-hOJXQAQ@mail.gmail.com>
2012-09-12 16:30 ` Fwd: " Srinidhi Kasagar
2012-09-12 16:30 ` Srinidhi Kasagar
2012-09-12 14:58 ` [PATCH v9 08/13] ARM: SoC: convert shmobile SMP " Arnd Bergmann
2012-09-12 14:58 ` Arnd Bergmann
2012-09-12 14:58 ` [PATCH v9 09/13] ARM: SoC: convert highbank " Arnd Bergmann
2012-09-12 14:58 ` Arnd Bergmann
2012-09-12 15:23 ` Rob Herring
2012-09-12 15:23 ` Rob Herring
2012-09-12 14:58 ` [PATCH v9 10/13] ARM: SoC: convert imx6q " Arnd Bergmann
2012-09-12 14:58 ` Arnd Bergmann
2012-09-13 1:17 ` Shawn Guo
2012-09-13 1:17 ` Shawn Guo
2012-09-13 8:44 ` Arnd Bergmann
2012-09-13 8:44 ` Arnd Bergmann
2012-09-12 14:58 ` [PATCH v9 11/13] ARM: SoC: convert spear13xx " Arnd Bergmann
2012-09-12 14:58 ` Arnd Bergmann
2012-09-13 11:18 ` viresh kumar
2012-09-13 11:18 ` viresh kumar
2012-09-12 14:58 ` [PATCH v9 12/13] ARM: smp: Make SoC descriptor mandatory for SMP platforms Arnd Bergmann
2012-09-12 14:58 ` Arnd Bergmann
2012-09-12 14:58 ` [PATCH v9 13/13] ARM: consolidate pen_release instead of having per platform definitions Arnd Bergmann
2012-09-12 14:58 ` Arnd Bergmann
2012-09-12 19:54 ` Nicolas Pitre
2012-09-12 19:54 ` Nicolas Pitre
2012-09-12 20:42 ` [PATCH v9 00/13] Per sub-architecture SMP operations Nicolas Pitre
2012-09-12 20:42 ` Nicolas Pitre
2012-09-13 11:11 ` Marc Zyngier
2012-09-13 11:11 ` Marc Zyngier
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1347490900-8409-1-git-send-email-davidb@codeaurora.org \
--to=davidb@codeaurora.org \
--cc=arnd@arndb.de \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=marc.zyngier@arm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.