summaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorPaul Burton <paul.burton@imgtec.com>2014-03-14 16:06:16 +0000
committerPaul Burton <paul.burton@imgtec.com>2014-05-28 16:20:29 +0100
commit68c1232f51350b007cb1f05260e9e784770ec513 (patch)
treea9059486d9c85d889cd9615792e2dbbf76029bb0 /arch
parent245a7868d2f2e54a9a9b084de00d003a9badb2a5 (diff)
downloadop-kernel-dev-68c1232f51350b007cb1f05260e9e784770ec513.zip
op-kernel-dev-68c1232f51350b007cb1f05260e9e784770ec513.tar.gz
MIPS: smp-cps: function to determine whether CPS SMP is in use
The core power down state for cpuidle will require that the CPS SMP implementation is in use. This patch provides a mips_cps_smp_in_use function which determines whether or not the CPS SMP implementation is currently in use. Signed-off-by: Paul Burton <paul.burton@imgtec.com>
Diffstat (limited to 'arch')
-rw-r--r--arch/mips/include/asm/smp-cps.h2
-rw-r--r--arch/mips/kernel/smp-cps.c6
2 files changed, 8 insertions, 0 deletions
diff --git a/arch/mips/include/asm/smp-cps.h b/arch/mips/include/asm/smp-cps.h
index d49279e..324df2c 100644
--- a/arch/mips/include/asm/smp-cps.h
+++ b/arch/mips/include/asm/smp-cps.h
@@ -31,6 +31,8 @@ extern void mips_cps_core_init(void);
extern struct vpe_boot_config *mips_cps_boot_vpes(void);
+extern bool mips_cps_smp_in_use(void);
+
#else /* __ASSEMBLY__ */
.extern mips_cps_bootcfg;
diff --git a/arch/mips/kernel/smp-cps.c b/arch/mips/kernel/smp-cps.c
index af90e82..c7879fb 100644
--- a/arch/mips/kernel/smp-cps.c
+++ b/arch/mips/kernel/smp-cps.c
@@ -260,6 +260,12 @@ static struct plat_smp_ops cps_smp_ops = {
.cpus_done = cps_cpus_done,
};
+bool mips_cps_smp_in_use(void)
+{
+ extern struct plat_smp_ops *mp_ops;
+ return mp_ops == &cps_smp_ops;
+}
+
int register_cps_smp_ops(void)
{
if (!mips_cm_present()) {
OpenPOWER on IntegriCloud