summaryrefslogtreecommitdiffstats
path: root/arch/s390/include/asm/smp.h
diff options
context:
space:
mode:
authorIngo Molnar <mingo@kernel.org>2014-04-18 12:14:55 +0200
committerIngo Molnar <mingo@kernel.org>2014-04-18 12:14:55 +0200
commit1111b680d34bc19190f02a1b4479c3fcc592c22e (patch)
tree9d45ad88b9354205a2d1fd76a338ab8693a16d86 /arch/s390/include/asm/smp.h
parent37b6cb475a6d74bc047c53bc323d6eb3113e27a4 (diff)
parent24223657806a0ebd0ae5c9caaf7b021091889cf2 (diff)
Merge branch 'perf/urgent' into perf/core, to pick up PMU driver fixes.
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'arch/s390/include/asm/smp.h')
-rw-r--r--arch/s390/include/asm/smp.h13
1 files changed, 12 insertions, 1 deletions
diff --git a/arch/s390/include/asm/smp.h b/arch/s390/include/asm/smp.h
index 16077939409..21703f85b48 100644
--- a/arch/s390/include/asm/smp.h
+++ b/arch/s390/include/asm/smp.h
@@ -7,6 +7,8 @@
#ifndef __ASM_SMP_H
#define __ASM_SMP_H
+#include <asm/sigp.h>
+
#ifdef CONFIG_SMP
#include <asm/lowcore.h>
@@ -50,9 +52,18 @@ static inline int smp_store_status(int cpu) { return 0; }
static inline int smp_vcpu_scheduled(int cpu) { return 1; }
static inline void smp_yield_cpu(int cpu) { }
static inline void smp_yield(void) { }
-static inline void smp_stop_cpu(void) { }
static inline void smp_fill_possible_mask(void) { }
+static inline void smp_stop_cpu(void)
+{
+ u16 pcpu = stap();
+
+ for (;;) {
+ __pcpu_sigp(pcpu, SIGP_STOP, 0, NULL);
+ cpu_relax();
+ }
+}
+
#endif /* CONFIG_SMP */
#ifdef CONFIG_HOTPLUG_CPU