All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/1] sched: provide common cpu_relax_yield definition
@ 2016-11-16 12:23 ` Christian Borntraeger
  0 siblings, 0 replies; 11+ messages in thread
From: Christian Borntraeger @ 2016-11-16 12:23 UTC (permalink / raw)
  To: Peter Zijlstra
  Cc: Russell King, Ingo Molnar, linux-s390, linux-arch, linux-kernel,
	x86, xen-devel, kvm, Will Deacon, Catalin Marinas,
	Heiko Carstens, Martin Schwidefsky, Noam Camus, linuxppc-dev,
	Nicholas Piggin, sparclinux, virtualization,
	Christian Borntraeger

No need to duplicate the same define everywhere. Since
the only user is stop-machine and the only provider is
s390, we can use a default implementation of cpu_relax_yield
in sched.h.

Suggested-by: Russell King <linux@armlinux.org.uk>
Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
---
 arch/alpha/include/asm/processor.h      | 1 -
 arch/arc/include/asm/processor.h        | 3 ---
 arch/arm/include/asm/processor.h        | 2 --
 arch/arm64/include/asm/processor.h      | 2 --
 arch/avr32/include/asm/processor.h      | 1 -
 arch/blackfin/include/asm/processor.h   | 1 -
 arch/c6x/include/asm/processor.h        | 1 -
 arch/cris/include/asm/processor.h       | 1 -
 arch/frv/include/asm/processor.h        | 1 -
 arch/h8300/include/asm/processor.h      | 1 -
 arch/hexagon/include/asm/processor.h    | 1 -
 arch/ia64/include/asm/processor.h       | 1 -
 arch/m32r/include/asm/processor.h       | 1 -
 arch/m68k/include/asm/processor.h       | 1 -
 arch/metag/include/asm/processor.h      | 1 -
 arch/microblaze/include/asm/processor.h | 1 -
 arch/mips/include/asm/processor.h       | 1 -
 arch/mn10300/include/asm/processor.h    | 1 -
 arch/nios2/include/asm/processor.h      | 1 -
 arch/openrisc/include/asm/processor.h   | 1 -
 arch/parisc/include/asm/processor.h     | 1 -
 arch/powerpc/include/asm/processor.h    | 2 --
 arch/s390/include/asm/processor.h       | 1 +
 arch/score/include/asm/processor.h      | 1 -
 arch/sh/include/asm/processor.h         | 1 -
 arch/sparc/include/asm/processor_32.h   | 1 -
 arch/sparc/include/asm/processor_64.h   | 1 -
 arch/tile/include/asm/processor.h       | 2 --
 arch/unicore32/include/asm/processor.h  | 1 -
 arch/x86/include/asm/processor.h        | 2 --
 arch/x86/um/asm/processor.h             | 1 -
 arch/xtensa/include/asm/processor.h     | 1 -
 include/linux/sched.h                   | 4 ++++
 33 files changed, 5 insertions(+), 38 deletions(-)

diff --git a/arch/alpha/include/asm/processor.h b/arch/alpha/include/asm/processor.h
index 31e8dbe..2fec2de 100644
--- a/arch/alpha/include/asm/processor.h
+++ b/arch/alpha/include/asm/processor.h
@@ -58,7 +58,6 @@ unsigned long get_wchan(struct task_struct *p);
   ((tsk) == current ? rdusp() : task_thread_info(tsk)->pcb.usp)
 
 #define cpu_relax()	barrier()
-#define cpu_relax_yield() cpu_relax()
 
 #define ARCH_HAS_PREFETCH
 #define ARCH_HAS_PREFETCHW
diff --git a/arch/arc/include/asm/processor.h b/arch/arc/include/asm/processor.h
index d102a49..6e1242d 100644
--- a/arch/arc/include/asm/processor.h
+++ b/arch/arc/include/asm/processor.h
@@ -60,15 +60,12 @@ struct task_struct;
 #ifndef CONFIG_EZNPS_MTM_EXT
 
 #define cpu_relax()		barrier()
-#define cpu_relax_yield()	cpu_relax()
 
 #else
 
 #define cpu_relax()     \
 	__asm__ __volatile__ (".word %0" : : "i"(CTOP_INST_SCHD_RW) : "memory")
 
-#define cpu_relax_yield()	cpu_relax()
-
 #endif
 
 #define copy_segments(tsk, mm)      do { } while (0)
diff --git a/arch/arm/include/asm/processor.h b/arch/arm/include/asm/processor.h
index 9e71c58b..c3d5fc1 100644
--- a/arch/arm/include/asm/processor.h
+++ b/arch/arm/include/asm/processor.h
@@ -82,8 +82,6 @@ unsigned long get_wchan(struct task_struct *p);
 #define cpu_relax()			barrier()
 #endif
 
-#define cpu_relax_yield()  	              cpu_relax()
-
 #define task_pt_regs(p) \
 	((struct pt_regs *)(THREAD_START_SP + task_stack_page(p)) - 1)
 
diff --git a/arch/arm64/include/asm/processor.h b/arch/arm64/include/asm/processor.h
index 6132f64..747c65a 100644
--- a/arch/arm64/include/asm/processor.h
+++ b/arch/arm64/include/asm/processor.h
@@ -149,8 +149,6 @@ static inline void cpu_relax(void)
 	asm volatile("yield" ::: "memory");
 }
 
-#define cpu_relax_yield()                     cpu_relax()
-
 /* Thread switching */
 extern struct task_struct *cpu_switch_to(struct task_struct *prev,
 					 struct task_struct *next);
diff --git a/arch/avr32/include/asm/processor.h b/arch/avr32/include/asm/processor.h
index ee62365..972adcc 100644
--- a/arch/avr32/include/asm/processor.h
+++ b/arch/avr32/include/asm/processor.h
@@ -92,7 +92,6 @@ extern struct avr32_cpuinfo boot_cpu_data;
 #define TASK_UNMAPPED_BASE	(PAGE_ALIGN(TASK_SIZE / 3))
 
 #define cpu_relax()		barrier()
-#define cpu_relax_yield()	cpu_relax()
 #define cpu_sync_pipeline()	asm volatile("sub pc, -2" : : : "memory")
 
 struct cpu_context {
diff --git a/arch/blackfin/include/asm/processor.h b/arch/blackfin/include/asm/processor.h
index 57acfb1..85d4af9 100644
--- a/arch/blackfin/include/asm/processor.h
+++ b/arch/blackfin/include/asm/processor.h
@@ -92,7 +92,6 @@ unsigned long get_wchan(struct task_struct *p);
 #define	KSTK_ESP(tsk)	((tsk) == current ? rdusp() : (tsk)->thread.usp)
 
 #define cpu_relax()    	smp_mb()
-#define cpu_relax_yield()      cpu_relax()
 
 /* Get the Silicon Revision of the chip */
 static inline uint32_t __pure bfin_revid(void)
diff --git a/arch/c6x/include/asm/processor.h b/arch/c6x/include/asm/processor.h
index 1fd22e7..b9eb3da 100644
--- a/arch/c6x/include/asm/processor.h
+++ b/arch/c6x/include/asm/processor.h
@@ -121,7 +121,6 @@ extern unsigned long get_wchan(struct task_struct *p);
 #define KSTK_ESP(task)	(task_pt_regs(task)->sp)
 
 #define cpu_relax()		do { } while (0)
-#define cpu_relax_yield()             cpu_relax()
 
 extern const struct seq_operations cpuinfo_op;
 
diff --git a/arch/cris/include/asm/processor.h b/arch/cris/include/asm/processor.h
index 1a57841..15b815d 100644
--- a/arch/cris/include/asm/processor.h
+++ b/arch/cris/include/asm/processor.h
@@ -63,7 +63,6 @@ static inline void release_thread(struct task_struct *dead_task)
 #define init_stack      (init_thread_union.stack)
 
 #define cpu_relax()     barrier()
-#define cpu_relax_yield() cpu_relax()
 
 void default_idle(void);
 
diff --git a/arch/frv/include/asm/processor.h b/arch/frv/include/asm/processor.h
index c1e5f2a..ddaeb9c 100644
--- a/arch/frv/include/asm/processor.h
+++ b/arch/frv/include/asm/processor.h
@@ -107,7 +107,6 @@ unsigned long get_wchan(struct task_struct *p);
 #define	KSTK_ESP(tsk)	((tsk)->thread.frame0->sp)
 
 #define cpu_relax() barrier()
-#define cpu_relax_yield() cpu_relax()
 
 /* data cache prefetch */
 #define ARCH_HAS_PREFETCH
diff --git a/arch/h8300/include/asm/processor.h b/arch/h8300/include/asm/processor.h
index 42d6053..65132d7 100644
--- a/arch/h8300/include/asm/processor.h
+++ b/arch/h8300/include/asm/processor.h
@@ -127,7 +127,6 @@ unsigned long get_wchan(struct task_struct *p);
 #define	KSTK_ESP(tsk)	((tsk) == current ? rdusp() : (tsk)->thread.usp)
 
 #define cpu_relax()    barrier()
-#define cpu_relax_yield() cpu_relax()
 
 #define HARD_RESET_NOW() ({		\
 	local_irq_disable();		\
diff --git a/arch/hexagon/include/asm/processor.h b/arch/hexagon/include/asm/processor.h
index 5d694cc..45a8254 100644
--- a/arch/hexagon/include/asm/processor.h
+++ b/arch/hexagon/include/asm/processor.h
@@ -56,7 +56,6 @@ struct thread_struct {
 }
 
 #define cpu_relax() __vmyield()
-#define cpu_relax_yield() cpu_relax()
 
 /*
  * Decides where the kernel will search for a free chunk of vm space during
diff --git a/arch/ia64/include/asm/processor.h b/arch/ia64/include/asm/processor.h
index 0c2c3b2..03911a3 100644
--- a/arch/ia64/include/asm/processor.h
+++ b/arch/ia64/include/asm/processor.h
@@ -547,7 +547,6 @@ ia64_eoi (void)
 }
 
 #define cpu_relax()	ia64_hint(ia64_hint_pause)
-#define cpu_relax_yield() cpu_relax()
 
 static inline int
 ia64_get_irr(unsigned int vector)
diff --git a/arch/m32r/include/asm/processor.h b/arch/m32r/include/asm/processor.h
index 9b83a13..5767367 100644
--- a/arch/m32r/include/asm/processor.h
+++ b/arch/m32r/include/asm/processor.h
@@ -133,6 +133,5 @@ unsigned long get_wchan(struct task_struct *p);
 #define KSTK_ESP(tsk)  ((tsk)->thread.sp)
 
 #define cpu_relax()	barrier()
-#define cpu_relax_yield() cpu_relax()
 
 #endif /* _ASM_M32R_PROCESSOR_H */
diff --git a/arch/m68k/include/asm/processor.h b/arch/m68k/include/asm/processor.h
index b0d0442..f5f790c 100644
--- a/arch/m68k/include/asm/processor.h
+++ b/arch/m68k/include/asm/processor.h
@@ -156,6 +156,5 @@ unsigned long get_wchan(struct task_struct *p);
 #define task_pt_regs(tsk)	((struct pt_regs *) ((tsk)->thread.esp0))
 
 #define cpu_relax()	barrier()
-#define cpu_relax_yield() cpu_relax()
 
 #endif
diff --git a/arch/metag/include/asm/processor.h b/arch/metag/include/asm/processor.h
index ee302a6..ec6a490 100644
--- a/arch/metag/include/asm/processor.h
+++ b/arch/metag/include/asm/processor.h
@@ -152,7 +152,6 @@ unsigned long get_wchan(struct task_struct *p);
 #define user_stack_pointer(regs)        ((regs)->ctx.AX[0].U0)
 
 #define cpu_relax()     barrier()
-#define cpu_relax_yield() cpu_relax()
 
 extern void setup_priv(void);
 
diff --git a/arch/microblaze/include/asm/processor.h b/arch/microblaze/include/asm/processor.h
index 08ec1f7..37ef196 100644
--- a/arch/microblaze/include/asm/processor.h
+++ b/arch/microblaze/include/asm/processor.h
@@ -22,7 +22,6 @@
 extern const struct seq_operations cpuinfo_op;
 
 # define cpu_relax()		barrier()
-# define cpu_relax_yield() cpu_relax()
 
 #define task_pt_regs(tsk) \
 		(((struct pt_regs *)(THREAD_SIZE + task_stack_page(tsk))) - 1)
diff --git a/arch/mips/include/asm/processor.h b/arch/mips/include/asm/processor.h
index 8ea95e7..95b8c47 100644
--- a/arch/mips/include/asm/processor.h
+++ b/arch/mips/include/asm/processor.h
@@ -389,7 +389,6 @@ unsigned long get_wchan(struct task_struct *p);
 #define KSTK_STATUS(tsk) (task_pt_regs(tsk)->cp0_status)
 
 #define cpu_relax()	barrier()
-#define cpu_relax_yield() cpu_relax()
 
 /*
  * Return_address is a replacement for __builtin_return_address(count)
diff --git a/arch/mn10300/include/asm/processor.h b/arch/mn10300/include/asm/processor.h
index d11397b..18e17ab 100644
--- a/arch/mn10300/include/asm/processor.h
+++ b/arch/mn10300/include/asm/processor.h
@@ -69,7 +69,6 @@ extern void print_cpu_info(struct mn10300_cpuinfo *);
 extern void dodgy_tsc(void);
 
 #define cpu_relax() barrier()
-#define cpu_relax_yield() cpu_relax()
 
 /*
  * User space process size: 1.75GB (default).
diff --git a/arch/nios2/include/asm/processor.h b/arch/nios2/include/asm/processor.h
index d32c176..3bbbc3d 100644
--- a/arch/nios2/include/asm/processor.h
+++ b/arch/nios2/include/asm/processor.h
@@ -88,7 +88,6 @@ extern unsigned long get_wchan(struct task_struct *p);
 #define KSTK_ESP(tsk)	((tsk)->thread.kregs->sp)
 
 #define cpu_relax()	barrier()
-#define cpu_relax_yield() cpu_relax()
 
 #endif /* __ASSEMBLY__ */
 
diff --git a/arch/openrisc/include/asm/processor.h b/arch/openrisc/include/asm/processor.h
index 7f47fc7..a908e6c 100644
--- a/arch/openrisc/include/asm/processor.h
+++ b/arch/openrisc/include/asm/processor.h
@@ -92,7 +92,6 @@ extern unsigned long thread_saved_pc(struct task_struct *t);
 #define init_stack      (init_thread_union.stack)
 
 #define cpu_relax()     barrier()
-#define cpu_relax_yield() cpu_relax()
 
 #endif /* __ASSEMBLY__ */
 #endif /* __ASM_OPENRISC_PROCESSOR_H */
diff --git a/arch/parisc/include/asm/processor.h b/arch/parisc/include/asm/processor.h
index a4a07f4..ca40741 100644
--- a/arch/parisc/include/asm/processor.h
+++ b/arch/parisc/include/asm/processor.h
@@ -309,7 +309,6 @@ extern unsigned long get_wchan(struct task_struct *p);
 #define KSTK_ESP(tsk)	((tsk)->thread.regs.gr[30])
 
 #define cpu_relax()	barrier()
-#define cpu_relax_yield() cpu_relax()
 
 /*
  * parisc_requires_coherency() is used to identify the combined VIPT/PIPT
diff --git a/arch/powerpc/include/asm/processor.h b/arch/powerpc/include/asm/processor.h
index 5684e68..dac83fc 100644
--- a/arch/powerpc/include/asm/processor.h
+++ b/arch/powerpc/include/asm/processor.h
@@ -404,8 +404,6 @@ static inline unsigned long __pack_fe01(unsigned int fpmode)
 #define cpu_relax()	barrier()
 #endif
 
-#define cpu_relax_yield() cpu_relax()
-
 /* Check that a certain kernel stack pointer is valid in task_struct p */
 int validate_sp(unsigned long sp, struct task_struct *p,
                        unsigned long nbytes);
diff --git a/arch/s390/include/asm/processor.h b/arch/s390/include/asm/processor.h
index 17c001a..9eab1cb 100644
--- a/arch/s390/include/asm/processor.h
+++ b/arch/s390/include/asm/processor.h
@@ -234,6 +234,7 @@ static inline unsigned short stap(void)
 /*
  * Give up the time slice of the virtual PU.
  */
+#define cpu_relax_yield cpu_relax_yield
 void cpu_relax_yield(void);
 
 #define cpu_relax() barrier()
diff --git a/arch/score/include/asm/processor.h b/arch/score/include/asm/processor.h
index a1e97c0..d9a922d 100644
--- a/arch/score/include/asm/processor.h
+++ b/arch/score/include/asm/processor.h
@@ -24,7 +24,6 @@ extern unsigned long get_wchan(struct task_struct *p);
 #define current_text_addr() ({ __label__ _l; _l: &&_l; })
 
 #define cpu_relax()		barrier()
-#define cpu_relax_yield()	cpu_relax()
 #define release_thread(thread)	do {} while (0)
 
 /*
diff --git a/arch/sh/include/asm/processor.h b/arch/sh/include/asm/processor.h
index 9454ff1..5addd69 100644
--- a/arch/sh/include/asm/processor.h
+++ b/arch/sh/include/asm/processor.h
@@ -97,7 +97,6 @@ extern struct sh_cpuinfo cpu_data[];
 
 #define cpu_sleep()	__asm__ __volatile__ ("sleep" : : : "memory")
 #define cpu_relax()	barrier()
-#define cpu_relax_yield() cpu_relax()
 
 void default_idle(void);
 void stop_this_cpu(void *);
diff --git a/arch/sparc/include/asm/processor_32.h b/arch/sparc/include/asm/processor_32.h
index fc32b73..365d4cb 100644
--- a/arch/sparc/include/asm/processor_32.h
+++ b/arch/sparc/include/asm/processor_32.h
@@ -119,7 +119,6 @@ extern struct task_struct *last_task_used_math;
 int do_mathemu(struct pt_regs *regs, struct task_struct *fpt);
 
 #define cpu_relax()	barrier()
-#define cpu_relax_yield() cpu_relax()
 
 extern void (*sparc_idle)(void);
 
diff --git a/arch/sparc/include/asm/processor_64.h b/arch/sparc/include/asm/processor_64.h
index 12787df..6448cfc 100644
--- a/arch/sparc/include/asm/processor_64.h
+++ b/arch/sparc/include/asm/processor_64.h
@@ -216,7 +216,6 @@ unsigned long get_wchan(struct task_struct *task);
 				     "nop\n\t"				\
 				     ".previous"			\
 				     ::: "memory")
-#define cpu_relax_yield() cpu_relax()
 
 /* Prefetch support.  This is tuned for UltraSPARC-III and later.
  * UltraSPARC-I will treat these as nops, and UltraSPARC-II has
diff --git a/arch/tile/include/asm/processor.h b/arch/tile/include/asm/processor.h
index c1c228b..0bc9968 100644
--- a/arch/tile/include/asm/processor.h
+++ b/arch/tile/include/asm/processor.h
@@ -264,8 +264,6 @@ static inline void cpu_relax(void)
 	barrier();
 }
 
-#define cpu_relax_yield() cpu_relax()
-
 /* Info on this processor (see fs/proc/cpuinfo.c) */
 struct seq_operations;
 extern const struct seq_operations cpuinfo_op;
diff --git a/arch/unicore32/include/asm/processor.h b/arch/unicore32/include/asm/processor.h
index eeefe7c..4eaa421 100644
--- a/arch/unicore32/include/asm/processor.h
+++ b/arch/unicore32/include/asm/processor.h
@@ -71,7 +71,6 @@ extern void release_thread(struct task_struct *);
 unsigned long get_wchan(struct task_struct *p);
 
 #define cpu_relax()			barrier()
-#define cpu_relax_yield()		cpu_relax()
 
 #define task_pt_regs(p) \
 	((struct pt_regs *)(THREAD_START_SP + task_stack_page(p)) - 1)
diff --git a/arch/x86/include/asm/processor.h b/arch/x86/include/asm/processor.h
index 7513c99..c84605b 100644
--- a/arch/x86/include/asm/processor.h
+++ b/arch/x86/include/asm/processor.h
@@ -588,8 +588,6 @@ static __always_inline void cpu_relax(void)
 	rep_nop();
 }
 
-#define cpu_relax_yield() cpu_relax()
-
 /* Stop speculative execution and prefetching of modified code. */
 static inline void sync_core(void)
 {
diff --git a/arch/x86/um/asm/processor.h b/arch/x86/um/asm/processor.h
index b4bd63b..c77db22 100644
--- a/arch/x86/um/asm/processor.h
+++ b/arch/x86/um/asm/processor.h
@@ -26,7 +26,6 @@ static inline void rep_nop(void)
 }
 
 #define cpu_relax()		rep_nop()
-#define cpu_relax_yield()	cpu_relax()
 
 #define task_pt_regs(t) (&(t)->thread.regs)
 
diff --git a/arch/xtensa/include/asm/processor.h b/arch/xtensa/include/asm/processor.h
index 7d8d6be..86ffcd6 100644
--- a/arch/xtensa/include/asm/processor.h
+++ b/arch/xtensa/include/asm/processor.h
@@ -206,7 +206,6 @@ extern unsigned long get_wchan(struct task_struct *p);
 #define KSTK_ESP(tsk)		(task_pt_regs(tsk)->areg[1])
 
 #define cpu_relax()  barrier()
-#define cpu_relax_yield() cpu_relax()
 
 /* Special register access. */
 
diff --git a/include/linux/sched.h b/include/linux/sched.h
index 348f51b..c1aa3b0 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -2444,6 +2444,10 @@ static inline void calc_load_enter_idle(void) { }
 static inline void calc_load_exit_idle(void) { }
 #endif /* CONFIG_NO_HZ_COMMON */
 
+#ifndef cpu_relax_yield
+#define cpu_relax_yield() cpu_relax()
+#endif
+
 /*
  * Do not use outside of architecture code which knows its limitations.
  *
-- 
2.5.5

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH 1/1] sched: provide common cpu_relax_yield definition
@ 2016-11-16 12:23 ` Christian Borntraeger
  0 siblings, 0 replies; 11+ messages in thread
From: Christian Borntraeger @ 2016-11-16 12:23 UTC (permalink / raw)
  To: Peter Zijlstra
  Cc: Russell King, Ingo Molnar, linux-s390, linux-arch, linux-kernel,
	x86, xen-devel, kvm, Will Deacon, Catalin Marinas,
	Heiko Carstens, Martin Schwidefsky, Noam Camus, linuxppc-dev,
	Nicholas Piggin, sparclinux, virtualization,
	Christian Borntraeger

No need to duplicate the same define everywhere. Since
the only user is stop-machine and the only provider is
s390, we can use a default implementation of cpu_relax_yield
in sched.h.

Suggested-by: Russell King <linux@armlinux.org.uk>
Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
---
 arch/alpha/include/asm/processor.h      | 1 -
 arch/arc/include/asm/processor.h        | 3 ---
 arch/arm/include/asm/processor.h        | 2 --
 arch/arm64/include/asm/processor.h      | 2 --
 arch/avr32/include/asm/processor.h      | 1 -
 arch/blackfin/include/asm/processor.h   | 1 -
 arch/c6x/include/asm/processor.h        | 1 -
 arch/cris/include/asm/processor.h       | 1 -
 arch/frv/include/asm/processor.h        | 1 -
 arch/h8300/include/asm/processor.h      | 1 -
 arch/hexagon/include/asm/processor.h    | 1 -
 arch/ia64/include/asm/processor.h       | 1 -
 arch/m32r/include/asm/processor.h       | 1 -
 arch/m68k/include/asm/processor.h       | 1 -
 arch/metag/include/asm/processor.h      | 1 -
 arch/microblaze/include/asm/processor.h | 1 -
 arch/mips/include/asm/processor.h       | 1 -
 arch/mn10300/include/asm/processor.h    | 1 -
 arch/nios2/include/asm/processor.h      | 1 -
 arch/openrisc/include/asm/processor.h   | 1 -
 arch/parisc/include/asm/processor.h     | 1 -
 arch/powerpc/include/asm/processor.h    | 2 --
 arch/s390/include/asm/processor.h       | 1 +
 arch/score/include/asm/processor.h      | 1 -
 arch/sh/include/asm/processor.h         | 1 -
 arch/sparc/include/asm/processor_32.h   | 1 -
 arch/sparc/include/asm/processor_64.h   | 1 -
 arch/tile/include/asm/processor.h       | 2 --
 arch/unicore32/include/asm/processor.h  | 1 -
 arch/x86/include/asm/processor.h        | 2 --
 arch/x86/um/asm/processor.h             | 1 -
 arch/xtensa/include/asm/processor.h     | 1 -
 include/linux/sched.h                   | 4 ++++
 33 files changed, 5 insertions(+), 38 deletions(-)

diff --git a/arch/alpha/include/asm/processor.h b/arch/alpha/include/asm/processor.h
index 31e8dbe..2fec2de 100644
--- a/arch/alpha/include/asm/processor.h
+++ b/arch/alpha/include/asm/processor.h
@@ -58,7 +58,6 @@ unsigned long get_wchan(struct task_struct *p);
   ((tsk) = current ? rdusp() : task_thread_info(tsk)->pcb.usp)
 
 #define cpu_relax()	barrier()
-#define cpu_relax_yield() cpu_relax()
 
 #define ARCH_HAS_PREFETCH
 #define ARCH_HAS_PREFETCHW
diff --git a/arch/arc/include/asm/processor.h b/arch/arc/include/asm/processor.h
index d102a49..6e1242d 100644
--- a/arch/arc/include/asm/processor.h
+++ b/arch/arc/include/asm/processor.h
@@ -60,15 +60,12 @@ struct task_struct;
 #ifndef CONFIG_EZNPS_MTM_EXT
 
 #define cpu_relax()		barrier()
-#define cpu_relax_yield()	cpu_relax()
 
 #else
 
 #define cpu_relax()     \
 	__asm__ __volatile__ (".word %0" : : "i"(CTOP_INST_SCHD_RW) : "memory")
 
-#define cpu_relax_yield()	cpu_relax()
-
 #endif
 
 #define copy_segments(tsk, mm)      do { } while (0)
diff --git a/arch/arm/include/asm/processor.h b/arch/arm/include/asm/processor.h
index 9e71c58b..c3d5fc1 100644
--- a/arch/arm/include/asm/processor.h
+++ b/arch/arm/include/asm/processor.h
@@ -82,8 +82,6 @@ unsigned long get_wchan(struct task_struct *p);
 #define cpu_relax()			barrier()
 #endif
 
-#define cpu_relax_yield()  	              cpu_relax()
-
 #define task_pt_regs(p) \
 	((struct pt_regs *)(THREAD_START_SP + task_stack_page(p)) - 1)
 
diff --git a/arch/arm64/include/asm/processor.h b/arch/arm64/include/asm/processor.h
index 6132f64..747c65a 100644
--- a/arch/arm64/include/asm/processor.h
+++ b/arch/arm64/include/asm/processor.h
@@ -149,8 +149,6 @@ static inline void cpu_relax(void)
 	asm volatile("yield" ::: "memory");
 }
 
-#define cpu_relax_yield()                     cpu_relax()
-
 /* Thread switching */
 extern struct task_struct *cpu_switch_to(struct task_struct *prev,
 					 struct task_struct *next);
diff --git a/arch/avr32/include/asm/processor.h b/arch/avr32/include/asm/processor.h
index ee62365..972adcc 100644
--- a/arch/avr32/include/asm/processor.h
+++ b/arch/avr32/include/asm/processor.h
@@ -92,7 +92,6 @@ extern struct avr32_cpuinfo boot_cpu_data;
 #define TASK_UNMAPPED_BASE	(PAGE_ALIGN(TASK_SIZE / 3))
 
 #define cpu_relax()		barrier()
-#define cpu_relax_yield()	cpu_relax()
 #define cpu_sync_pipeline()	asm volatile("sub pc, -2" : : : "memory")
 
 struct cpu_context {
diff --git a/arch/blackfin/include/asm/processor.h b/arch/blackfin/include/asm/processor.h
index 57acfb1..85d4af9 100644
--- a/arch/blackfin/include/asm/processor.h
+++ b/arch/blackfin/include/asm/processor.h
@@ -92,7 +92,6 @@ unsigned long get_wchan(struct task_struct *p);
 #define	KSTK_ESP(tsk)	((tsk) = current ? rdusp() : (tsk)->thread.usp)
 
 #define cpu_relax()    	smp_mb()
-#define cpu_relax_yield()      cpu_relax()
 
 /* Get the Silicon Revision of the chip */
 static inline uint32_t __pure bfin_revid(void)
diff --git a/arch/c6x/include/asm/processor.h b/arch/c6x/include/asm/processor.h
index 1fd22e7..b9eb3da 100644
--- a/arch/c6x/include/asm/processor.h
+++ b/arch/c6x/include/asm/processor.h
@@ -121,7 +121,6 @@ extern unsigned long get_wchan(struct task_struct *p);
 #define KSTK_ESP(task)	(task_pt_regs(task)->sp)
 
 #define cpu_relax()		do { } while (0)
-#define cpu_relax_yield()             cpu_relax()
 
 extern const struct seq_operations cpuinfo_op;
 
diff --git a/arch/cris/include/asm/processor.h b/arch/cris/include/asm/processor.h
index 1a57841..15b815d 100644
--- a/arch/cris/include/asm/processor.h
+++ b/arch/cris/include/asm/processor.h
@@ -63,7 +63,6 @@ static inline void release_thread(struct task_struct *dead_task)
 #define init_stack      (init_thread_union.stack)
 
 #define cpu_relax()     barrier()
-#define cpu_relax_yield() cpu_relax()
 
 void default_idle(void);
 
diff --git a/arch/frv/include/asm/processor.h b/arch/frv/include/asm/processor.h
index c1e5f2a..ddaeb9c 100644
--- a/arch/frv/include/asm/processor.h
+++ b/arch/frv/include/asm/processor.h
@@ -107,7 +107,6 @@ unsigned long get_wchan(struct task_struct *p);
 #define	KSTK_ESP(tsk)	((tsk)->thread.frame0->sp)
 
 #define cpu_relax() barrier()
-#define cpu_relax_yield() cpu_relax()
 
 /* data cache prefetch */
 #define ARCH_HAS_PREFETCH
diff --git a/arch/h8300/include/asm/processor.h b/arch/h8300/include/asm/processor.h
index 42d6053..65132d7 100644
--- a/arch/h8300/include/asm/processor.h
+++ b/arch/h8300/include/asm/processor.h
@@ -127,7 +127,6 @@ unsigned long get_wchan(struct task_struct *p);
 #define	KSTK_ESP(tsk)	((tsk) = current ? rdusp() : (tsk)->thread.usp)
 
 #define cpu_relax()    barrier()
-#define cpu_relax_yield() cpu_relax()
 
 #define HARD_RESET_NOW() ({		\
 	local_irq_disable();		\
diff --git a/arch/hexagon/include/asm/processor.h b/arch/hexagon/include/asm/processor.h
index 5d694cc..45a8254 100644
--- a/arch/hexagon/include/asm/processor.h
+++ b/arch/hexagon/include/asm/processor.h
@@ -56,7 +56,6 @@ struct thread_struct {
 }
 
 #define cpu_relax() __vmyield()
-#define cpu_relax_yield() cpu_relax()
 
 /*
  * Decides where the kernel will search for a free chunk of vm space during
diff --git a/arch/ia64/include/asm/processor.h b/arch/ia64/include/asm/processor.h
index 0c2c3b2..03911a3 100644
--- a/arch/ia64/include/asm/processor.h
+++ b/arch/ia64/include/asm/processor.h
@@ -547,7 +547,6 @@ ia64_eoi (void)
 }
 
 #define cpu_relax()	ia64_hint(ia64_hint_pause)
-#define cpu_relax_yield() cpu_relax()
 
 static inline int
 ia64_get_irr(unsigned int vector)
diff --git a/arch/m32r/include/asm/processor.h b/arch/m32r/include/asm/processor.h
index 9b83a13..5767367 100644
--- a/arch/m32r/include/asm/processor.h
+++ b/arch/m32r/include/asm/processor.h
@@ -133,6 +133,5 @@ unsigned long get_wchan(struct task_struct *p);
 #define KSTK_ESP(tsk)  ((tsk)->thread.sp)
 
 #define cpu_relax()	barrier()
-#define cpu_relax_yield() cpu_relax()
 
 #endif /* _ASM_M32R_PROCESSOR_H */
diff --git a/arch/m68k/include/asm/processor.h b/arch/m68k/include/asm/processor.h
index b0d0442..f5f790c 100644
--- a/arch/m68k/include/asm/processor.h
+++ b/arch/m68k/include/asm/processor.h
@@ -156,6 +156,5 @@ unsigned long get_wchan(struct task_struct *p);
 #define task_pt_regs(tsk)	((struct pt_regs *) ((tsk)->thread.esp0))
 
 #define cpu_relax()	barrier()
-#define cpu_relax_yield() cpu_relax()
 
 #endif
diff --git a/arch/metag/include/asm/processor.h b/arch/metag/include/asm/processor.h
index ee302a6..ec6a490 100644
--- a/arch/metag/include/asm/processor.h
+++ b/arch/metag/include/asm/processor.h
@@ -152,7 +152,6 @@ unsigned long get_wchan(struct task_struct *p);
 #define user_stack_pointer(regs)        ((regs)->ctx.AX[0].U0)
 
 #define cpu_relax()     barrier()
-#define cpu_relax_yield() cpu_relax()
 
 extern void setup_priv(void);
 
diff --git a/arch/microblaze/include/asm/processor.h b/arch/microblaze/include/asm/processor.h
index 08ec1f7..37ef196 100644
--- a/arch/microblaze/include/asm/processor.h
+++ b/arch/microblaze/include/asm/processor.h
@@ -22,7 +22,6 @@
 extern const struct seq_operations cpuinfo_op;
 
 # define cpu_relax()		barrier()
-# define cpu_relax_yield() cpu_relax()
 
 #define task_pt_regs(tsk) \
 		(((struct pt_regs *)(THREAD_SIZE + task_stack_page(tsk))) - 1)
diff --git a/arch/mips/include/asm/processor.h b/arch/mips/include/asm/processor.h
index 8ea95e7..95b8c47 100644
--- a/arch/mips/include/asm/processor.h
+++ b/arch/mips/include/asm/processor.h
@@ -389,7 +389,6 @@ unsigned long get_wchan(struct task_struct *p);
 #define KSTK_STATUS(tsk) (task_pt_regs(tsk)->cp0_status)
 
 #define cpu_relax()	barrier()
-#define cpu_relax_yield() cpu_relax()
 
 /*
  * Return_address is a replacement for __builtin_return_address(count)
diff --git a/arch/mn10300/include/asm/processor.h b/arch/mn10300/include/asm/processor.h
index d11397b..18e17ab 100644
--- a/arch/mn10300/include/asm/processor.h
+++ b/arch/mn10300/include/asm/processor.h
@@ -69,7 +69,6 @@ extern void print_cpu_info(struct mn10300_cpuinfo *);
 extern void dodgy_tsc(void);
 
 #define cpu_relax() barrier()
-#define cpu_relax_yield() cpu_relax()
 
 /*
  * User space process size: 1.75GB (default).
diff --git a/arch/nios2/include/asm/processor.h b/arch/nios2/include/asm/processor.h
index d32c176..3bbbc3d 100644
--- a/arch/nios2/include/asm/processor.h
+++ b/arch/nios2/include/asm/processor.h
@@ -88,7 +88,6 @@ extern unsigned long get_wchan(struct task_struct *p);
 #define KSTK_ESP(tsk)	((tsk)->thread.kregs->sp)
 
 #define cpu_relax()	barrier()
-#define cpu_relax_yield() cpu_relax()
 
 #endif /* __ASSEMBLY__ */
 
diff --git a/arch/openrisc/include/asm/processor.h b/arch/openrisc/include/asm/processor.h
index 7f47fc7..a908e6c 100644
--- a/arch/openrisc/include/asm/processor.h
+++ b/arch/openrisc/include/asm/processor.h
@@ -92,7 +92,6 @@ extern unsigned long thread_saved_pc(struct task_struct *t);
 #define init_stack      (init_thread_union.stack)
 
 #define cpu_relax()     barrier()
-#define cpu_relax_yield() cpu_relax()
 
 #endif /* __ASSEMBLY__ */
 #endif /* __ASM_OPENRISC_PROCESSOR_H */
diff --git a/arch/parisc/include/asm/processor.h b/arch/parisc/include/asm/processor.h
index a4a07f4..ca40741 100644
--- a/arch/parisc/include/asm/processor.h
+++ b/arch/parisc/include/asm/processor.h
@@ -309,7 +309,6 @@ extern unsigned long get_wchan(struct task_struct *p);
 #define KSTK_ESP(tsk)	((tsk)->thread.regs.gr[30])
 
 #define cpu_relax()	barrier()
-#define cpu_relax_yield() cpu_relax()
 
 /*
  * parisc_requires_coherency() is used to identify the combined VIPT/PIPT
diff --git a/arch/powerpc/include/asm/processor.h b/arch/powerpc/include/asm/processor.h
index 5684e68..dac83fc 100644
--- a/arch/powerpc/include/asm/processor.h
+++ b/arch/powerpc/include/asm/processor.h
@@ -404,8 +404,6 @@ static inline unsigned long __pack_fe01(unsigned int fpmode)
 #define cpu_relax()	barrier()
 #endif
 
-#define cpu_relax_yield() cpu_relax()
-
 /* Check that a certain kernel stack pointer is valid in task_struct p */
 int validate_sp(unsigned long sp, struct task_struct *p,
                        unsigned long nbytes);
diff --git a/arch/s390/include/asm/processor.h b/arch/s390/include/asm/processor.h
index 17c001a..9eab1cb 100644
--- a/arch/s390/include/asm/processor.h
+++ b/arch/s390/include/asm/processor.h
@@ -234,6 +234,7 @@ static inline unsigned short stap(void)
 /*
  * Give up the time slice of the virtual PU.
  */
+#define cpu_relax_yield cpu_relax_yield
 void cpu_relax_yield(void);
 
 #define cpu_relax() barrier()
diff --git a/arch/score/include/asm/processor.h b/arch/score/include/asm/processor.h
index a1e97c0..d9a922d 100644
--- a/arch/score/include/asm/processor.h
+++ b/arch/score/include/asm/processor.h
@@ -24,7 +24,6 @@ extern unsigned long get_wchan(struct task_struct *p);
 #define current_text_addr() ({ __label__ _l; _l: &&_l; })
 
 #define cpu_relax()		barrier()
-#define cpu_relax_yield()	cpu_relax()
 #define release_thread(thread)	do {} while (0)
 
 /*
diff --git a/arch/sh/include/asm/processor.h b/arch/sh/include/asm/processor.h
index 9454ff1..5addd69 100644
--- a/arch/sh/include/asm/processor.h
+++ b/arch/sh/include/asm/processor.h
@@ -97,7 +97,6 @@ extern struct sh_cpuinfo cpu_data[];
 
 #define cpu_sleep()	__asm__ __volatile__ ("sleep" : : : "memory")
 #define cpu_relax()	barrier()
-#define cpu_relax_yield() cpu_relax()
 
 void default_idle(void);
 void stop_this_cpu(void *);
diff --git a/arch/sparc/include/asm/processor_32.h b/arch/sparc/include/asm/processor_32.h
index fc32b73..365d4cb 100644
--- a/arch/sparc/include/asm/processor_32.h
+++ b/arch/sparc/include/asm/processor_32.h
@@ -119,7 +119,6 @@ extern struct task_struct *last_task_used_math;
 int do_mathemu(struct pt_regs *regs, struct task_struct *fpt);
 
 #define cpu_relax()	barrier()
-#define cpu_relax_yield() cpu_relax()
 
 extern void (*sparc_idle)(void);
 
diff --git a/arch/sparc/include/asm/processor_64.h b/arch/sparc/include/asm/processor_64.h
index 12787df..6448cfc 100644
--- a/arch/sparc/include/asm/processor_64.h
+++ b/arch/sparc/include/asm/processor_64.h
@@ -216,7 +216,6 @@ unsigned long get_wchan(struct task_struct *task);
 				     "nop\n\t"				\
 				     ".previous"			\
 				     ::: "memory")
-#define cpu_relax_yield() cpu_relax()
 
 /* Prefetch support.  This is tuned for UltraSPARC-III and later.
  * UltraSPARC-I will treat these as nops, and UltraSPARC-II has
diff --git a/arch/tile/include/asm/processor.h b/arch/tile/include/asm/processor.h
index c1c228b..0bc9968 100644
--- a/arch/tile/include/asm/processor.h
+++ b/arch/tile/include/asm/processor.h
@@ -264,8 +264,6 @@ static inline void cpu_relax(void)
 	barrier();
 }
 
-#define cpu_relax_yield() cpu_relax()
-
 /* Info on this processor (see fs/proc/cpuinfo.c) */
 struct seq_operations;
 extern const struct seq_operations cpuinfo_op;
diff --git a/arch/unicore32/include/asm/processor.h b/arch/unicore32/include/asm/processor.h
index eeefe7c..4eaa421 100644
--- a/arch/unicore32/include/asm/processor.h
+++ b/arch/unicore32/include/asm/processor.h
@@ -71,7 +71,6 @@ extern void release_thread(struct task_struct *);
 unsigned long get_wchan(struct task_struct *p);
 
 #define cpu_relax()			barrier()
-#define cpu_relax_yield()		cpu_relax()
 
 #define task_pt_regs(p) \
 	((struct pt_regs *)(THREAD_START_SP + task_stack_page(p)) - 1)
diff --git a/arch/x86/include/asm/processor.h b/arch/x86/include/asm/processor.h
index 7513c99..c84605b 100644
--- a/arch/x86/include/asm/processor.h
+++ b/arch/x86/include/asm/processor.h
@@ -588,8 +588,6 @@ static __always_inline void cpu_relax(void)
 	rep_nop();
 }
 
-#define cpu_relax_yield() cpu_relax()
-
 /* Stop speculative execution and prefetching of modified code. */
 static inline void sync_core(void)
 {
diff --git a/arch/x86/um/asm/processor.h b/arch/x86/um/asm/processor.h
index b4bd63b..c77db22 100644
--- a/arch/x86/um/asm/processor.h
+++ b/arch/x86/um/asm/processor.h
@@ -26,7 +26,6 @@ static inline void rep_nop(void)
 }
 
 #define cpu_relax()		rep_nop()
-#define cpu_relax_yield()	cpu_relax()
 
 #define task_pt_regs(t) (&(t)->thread.regs)
 
diff --git a/arch/xtensa/include/asm/processor.h b/arch/xtensa/include/asm/processor.h
index 7d8d6be..86ffcd6 100644
--- a/arch/xtensa/include/asm/processor.h
+++ b/arch/xtensa/include/asm/processor.h
@@ -206,7 +206,6 @@ extern unsigned long get_wchan(struct task_struct *p);
 #define KSTK_ESP(tsk)		(task_pt_regs(tsk)->areg[1])
 
 #define cpu_relax()  barrier()
-#define cpu_relax_yield() cpu_relax()
 
 /* Special register access. */
 
diff --git a/include/linux/sched.h b/include/linux/sched.h
index 348f51b..c1aa3b0 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -2444,6 +2444,10 @@ static inline void calc_load_enter_idle(void) { }
 static inline void calc_load_exit_idle(void) { }
 #endif /* CONFIG_NO_HZ_COMMON */
 
+#ifndef cpu_relax_yield
+#define cpu_relax_yield() cpu_relax()
+#endif
+
 /*
  * Do not use outside of architecture code which knows its limitations.
  *
-- 
2.5.5


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: [PATCH 1/1] sched: provide common cpu_relax_yield definition
  2016-11-16 12:23 ` Christian Borntraeger
  (?)
@ 2016-11-16 12:34   ` David Hildenbrand
  -1 siblings, 0 replies; 11+ messages in thread
From: David Hildenbrand @ 2016-11-16 12:34 UTC (permalink / raw)
  To: Christian Borntraeger, Peter Zijlstra
  Cc: Russell King, Ingo Molnar, linux-s390, linux-arch, linux-kernel,
	x86, xen-devel, kvm, Will Deacon, Catalin Marinas,
	Heiko Carstens, Martin Schwidefsky, Noam Camus, linuxppc-dev,
	Nicholas Piggin, sparclinux, virtualization

Am 16.11.2016 um 13:23 schrieb Christian Borntraeger:
> No need to duplicate the same define everywhere. Since
> the only user is stop-machine and the only provider is
> s390, we can use a default implementation of cpu_relax_yield
> in sched.h.
>
> Suggested-by: Russell King <linux@armlinux.org.uk>
> Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>

Looks good to me!

Reviewed-by: David Hildenbrand <david@redhat.com>

David

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 1/1] sched: provide common cpu_relax_yield definition
@ 2016-11-16 12:34   ` David Hildenbrand
  0 siblings, 0 replies; 11+ messages in thread
From: David Hildenbrand @ 2016-11-16 12:34 UTC (permalink / raw)
  To: Christian Borntraeger, Peter Zijlstra
  Cc: linux-arch, linux-s390, kvm, Catalin Marinas, x86, Will Deacon,
	Russell King, Heiko Carstens, linux-kernel, sparclinux,
	Noam Camus, Nicholas Piggin, Martin Schwidefsky, xen-devel,
	virtualization, linuxppc-dev, Ingo Molnar

Am 16.11.2016 um 13:23 schrieb Christian Borntraeger:
> No need to duplicate the same define everywhere. Since
> the only user is stop-machine and the only provider is
> s390, we can use a default implementation of cpu_relax_yield
> in sched.h.
>
> Suggested-by: Russell King <linux@armlinux.org.uk>
> Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>

Looks good to me!

Reviewed-by: David Hildenbrand <david@redhat.com>

David

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 1/1] sched: provide common cpu_relax_yield definition
@ 2016-11-16 12:34   ` David Hildenbrand
  0 siblings, 0 replies; 11+ messages in thread
From: David Hildenbrand @ 2016-11-16 12:34 UTC (permalink / raw)
  To: Christian Borntraeger, Peter Zijlstra
  Cc: linux-arch, linux-s390, kvm, Catalin Marinas, x86, Will Deacon,
	Russell King, Heiko Carstens, linux-kernel, sparclinux,
	Noam Camus, Nicholas Piggin, Martin Schwidefsky, xen-devel,
	virtualization, linuxppc-dev, Ingo Molnar

Am 16.11.2016 um 13:23 schrieb Christian Borntraeger:
> No need to duplicate the same define everywhere. Since
> the only user is stop-machine and the only provider is
> s390, we can use a default implementation of cpu_relax_yield
> in sched.h.
>
> Suggested-by: Russell King <linux@armlinux.org.uk>
> Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>

Looks good to me!

Reviewed-by: David Hildenbrand <david@redhat.com>

David

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 1/1] sched: provide common cpu_relax_yield definition
  2016-11-16 12:23 ` Christian Borntraeger
  (?)
  (?)
@ 2016-11-16 12:34 ` David Hildenbrand
  -1 siblings, 0 replies; 11+ messages in thread
From: David Hildenbrand @ 2016-11-16 12:34 UTC (permalink / raw)
  To: Christian Borntraeger, Peter Zijlstra
  Cc: linux-arch, linux-s390, kvm, Catalin Marinas, x86, Will Deacon,
	Russell King, Heiko Carstens, linux-kernel, sparclinux,
	Noam Camus, Nicholas Piggin, Martin Schwidefsky, xen-devel,
	virtualization, linuxppc-dev, Ingo Molnar

Am 16.11.2016 um 13:23 schrieb Christian Borntraeger:
> No need to duplicate the same define everywhere. Since
> the only user is stop-machine and the only provider is
> s390, we can use a default implementation of cpu_relax_yield
> in sched.h.
>
> Suggested-by: Russell King <linux@armlinux.org.uk>
> Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>

Looks good to me!

Reviewed-by: David Hildenbrand <david@redhat.com>

David

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 1/1] sched: provide common cpu_relax_yield definition
  2016-11-16 12:23 ` Christian Borntraeger
@ 2016-11-16 12:42   ` Russell King - ARM Linux
  -1 siblings, 0 replies; 11+ messages in thread
From: Russell King - ARM Linux @ 2016-11-16 12:42 UTC (permalink / raw)
  To: Christian Borntraeger
  Cc: Peter Zijlstra, Ingo Molnar, linux-s390, linux-arch,
	linux-kernel, x86, xen-devel, kvm, Will Deacon, Catalin Marinas,
	Heiko Carstens, Martin Schwidefsky, Noam Camus, linuxppc-dev,
	Nicholas Piggin, sparclinux, virtualization

On Wed, Nov 16, 2016 at 01:23:05PM +0100, Christian Borntraeger wrote:
> No need to duplicate the same define everywhere. Since
> the only user is stop-machine and the only provider is
> s390, we can use a default implementation of cpu_relax_yield
> in sched.h.
> 
> Suggested-by: Russell King <linux@armlinux.org.uk>
> Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>

Thanks for that.  (Please change my address above when adding this ack...)

Acked-by: Russell King <rmk+kernel@armlinux.org.uk>

> ---
>  arch/alpha/include/asm/processor.h      | 1 -
>  arch/arc/include/asm/processor.h        | 3 ---
>  arch/arm/include/asm/processor.h        | 2 --
>  arch/arm64/include/asm/processor.h      | 2 --
>  arch/avr32/include/asm/processor.h      | 1 -
>  arch/blackfin/include/asm/processor.h   | 1 -
>  arch/c6x/include/asm/processor.h        | 1 -
>  arch/cris/include/asm/processor.h       | 1 -
>  arch/frv/include/asm/processor.h        | 1 -
>  arch/h8300/include/asm/processor.h      | 1 -
>  arch/hexagon/include/asm/processor.h    | 1 -
>  arch/ia64/include/asm/processor.h       | 1 -
>  arch/m32r/include/asm/processor.h       | 1 -
>  arch/m68k/include/asm/processor.h       | 1 -
>  arch/metag/include/asm/processor.h      | 1 -
>  arch/microblaze/include/asm/processor.h | 1 -
>  arch/mips/include/asm/processor.h       | 1 -
>  arch/mn10300/include/asm/processor.h    | 1 -
>  arch/nios2/include/asm/processor.h      | 1 -
>  arch/openrisc/include/asm/processor.h   | 1 -
>  arch/parisc/include/asm/processor.h     | 1 -
>  arch/powerpc/include/asm/processor.h    | 2 --
>  arch/s390/include/asm/processor.h       | 1 +
>  arch/score/include/asm/processor.h      | 1 -
>  arch/sh/include/asm/processor.h         | 1 -
>  arch/sparc/include/asm/processor_32.h   | 1 -
>  arch/sparc/include/asm/processor_64.h   | 1 -
>  arch/tile/include/asm/processor.h       | 2 --
>  arch/unicore32/include/asm/processor.h  | 1 -
>  arch/x86/include/asm/processor.h        | 2 --
>  arch/x86/um/asm/processor.h             | 1 -
>  arch/xtensa/include/asm/processor.h     | 1 -
>  include/linux/sched.h                   | 4 ++++
>  33 files changed, 5 insertions(+), 38 deletions(-)
> 
> diff --git a/arch/alpha/include/asm/processor.h b/arch/alpha/include/asm/processor.h
> index 31e8dbe..2fec2de 100644
> --- a/arch/alpha/include/asm/processor.h
> +++ b/arch/alpha/include/asm/processor.h
> @@ -58,7 +58,6 @@ unsigned long get_wchan(struct task_struct *p);
>    ((tsk) == current ? rdusp() : task_thread_info(tsk)->pcb.usp)
>  
>  #define cpu_relax()	barrier()
> -#define cpu_relax_yield() cpu_relax()
>  
>  #define ARCH_HAS_PREFETCH
>  #define ARCH_HAS_PREFETCHW
> diff --git a/arch/arc/include/asm/processor.h b/arch/arc/include/asm/processor.h
> index d102a49..6e1242d 100644
> --- a/arch/arc/include/asm/processor.h
> +++ b/arch/arc/include/asm/processor.h
> @@ -60,15 +60,12 @@ struct task_struct;
>  #ifndef CONFIG_EZNPS_MTM_EXT
>  
>  #define cpu_relax()		barrier()
> -#define cpu_relax_yield()	cpu_relax()
>  
>  #else
>  
>  #define cpu_relax()     \
>  	__asm__ __volatile__ (".word %0" : : "i"(CTOP_INST_SCHD_RW) : "memory")
>  
> -#define cpu_relax_yield()	cpu_relax()
> -
>  #endif
>  
>  #define copy_segments(tsk, mm)      do { } while (0)
> diff --git a/arch/arm/include/asm/processor.h b/arch/arm/include/asm/processor.h
> index 9e71c58b..c3d5fc1 100644
> --- a/arch/arm/include/asm/processor.h
> +++ b/arch/arm/include/asm/processor.h
> @@ -82,8 +82,6 @@ unsigned long get_wchan(struct task_struct *p);
>  #define cpu_relax()			barrier()
>  #endif
>  
> -#define cpu_relax_yield()  	              cpu_relax()
> -
>  #define task_pt_regs(p) \
>  	((struct pt_regs *)(THREAD_START_SP + task_stack_page(p)) - 1)
>  
> diff --git a/arch/arm64/include/asm/processor.h b/arch/arm64/include/asm/processor.h
> index 6132f64..747c65a 100644
> --- a/arch/arm64/include/asm/processor.h
> +++ b/arch/arm64/include/asm/processor.h
> @@ -149,8 +149,6 @@ static inline void cpu_relax(void)
>  	asm volatile("yield" ::: "memory");
>  }
>  
> -#define cpu_relax_yield()                     cpu_relax()
> -
>  /* Thread switching */
>  extern struct task_struct *cpu_switch_to(struct task_struct *prev,
>  					 struct task_struct *next);
> diff --git a/arch/avr32/include/asm/processor.h b/arch/avr32/include/asm/processor.h
> index ee62365..972adcc 100644
> --- a/arch/avr32/include/asm/processor.h
> +++ b/arch/avr32/include/asm/processor.h
> @@ -92,7 +92,6 @@ extern struct avr32_cpuinfo boot_cpu_data;
>  #define TASK_UNMAPPED_BASE	(PAGE_ALIGN(TASK_SIZE / 3))
>  
>  #define cpu_relax()		barrier()
> -#define cpu_relax_yield()	cpu_relax()
>  #define cpu_sync_pipeline()	asm volatile("sub pc, -2" : : : "memory")
>  
>  struct cpu_context {
> diff --git a/arch/blackfin/include/asm/processor.h b/arch/blackfin/include/asm/processor.h
> index 57acfb1..85d4af9 100644
> --- a/arch/blackfin/include/asm/processor.h
> +++ b/arch/blackfin/include/asm/processor.h
> @@ -92,7 +92,6 @@ unsigned long get_wchan(struct task_struct *p);
>  #define	KSTK_ESP(tsk)	((tsk) == current ? rdusp() : (tsk)->thread.usp)
>  
>  #define cpu_relax()    	smp_mb()
> -#define cpu_relax_yield()      cpu_relax()
>  
>  /* Get the Silicon Revision of the chip */
>  static inline uint32_t __pure bfin_revid(void)
> diff --git a/arch/c6x/include/asm/processor.h b/arch/c6x/include/asm/processor.h
> index 1fd22e7..b9eb3da 100644
> --- a/arch/c6x/include/asm/processor.h
> +++ b/arch/c6x/include/asm/processor.h
> @@ -121,7 +121,6 @@ extern unsigned long get_wchan(struct task_struct *p);
>  #define KSTK_ESP(task)	(task_pt_regs(task)->sp)
>  
>  #define cpu_relax()		do { } while (0)
> -#define cpu_relax_yield()             cpu_relax()
>  
>  extern const struct seq_operations cpuinfo_op;
>  
> diff --git a/arch/cris/include/asm/processor.h b/arch/cris/include/asm/processor.h
> index 1a57841..15b815d 100644
> --- a/arch/cris/include/asm/processor.h
> +++ b/arch/cris/include/asm/processor.h
> @@ -63,7 +63,6 @@ static inline void release_thread(struct task_struct *dead_task)
>  #define init_stack      (init_thread_union.stack)
>  
>  #define cpu_relax()     barrier()
> -#define cpu_relax_yield() cpu_relax()
>  
>  void default_idle(void);
>  
> diff --git a/arch/frv/include/asm/processor.h b/arch/frv/include/asm/processor.h
> index c1e5f2a..ddaeb9c 100644
> --- a/arch/frv/include/asm/processor.h
> +++ b/arch/frv/include/asm/processor.h
> @@ -107,7 +107,6 @@ unsigned long get_wchan(struct task_struct *p);
>  #define	KSTK_ESP(tsk)	((tsk)->thread.frame0->sp)
>  
>  #define cpu_relax() barrier()
> -#define cpu_relax_yield() cpu_relax()
>  
>  /* data cache prefetch */
>  #define ARCH_HAS_PREFETCH
> diff --git a/arch/h8300/include/asm/processor.h b/arch/h8300/include/asm/processor.h
> index 42d6053..65132d7 100644
> --- a/arch/h8300/include/asm/processor.h
> +++ b/arch/h8300/include/asm/processor.h
> @@ -127,7 +127,6 @@ unsigned long get_wchan(struct task_struct *p);
>  #define	KSTK_ESP(tsk)	((tsk) == current ? rdusp() : (tsk)->thread.usp)
>  
>  #define cpu_relax()    barrier()
> -#define cpu_relax_yield() cpu_relax()
>  
>  #define HARD_RESET_NOW() ({		\
>  	local_irq_disable();		\
> diff --git a/arch/hexagon/include/asm/processor.h b/arch/hexagon/include/asm/processor.h
> index 5d694cc..45a8254 100644
> --- a/arch/hexagon/include/asm/processor.h
> +++ b/arch/hexagon/include/asm/processor.h
> @@ -56,7 +56,6 @@ struct thread_struct {
>  }
>  
>  #define cpu_relax() __vmyield()
> -#define cpu_relax_yield() cpu_relax()
>  
>  /*
>   * Decides where the kernel will search for a free chunk of vm space during
> diff --git a/arch/ia64/include/asm/processor.h b/arch/ia64/include/asm/processor.h
> index 0c2c3b2..03911a3 100644
> --- a/arch/ia64/include/asm/processor.h
> +++ b/arch/ia64/include/asm/processor.h
> @@ -547,7 +547,6 @@ ia64_eoi (void)
>  }
>  
>  #define cpu_relax()	ia64_hint(ia64_hint_pause)
> -#define cpu_relax_yield() cpu_relax()
>  
>  static inline int
>  ia64_get_irr(unsigned int vector)
> diff --git a/arch/m32r/include/asm/processor.h b/arch/m32r/include/asm/processor.h
> index 9b83a13..5767367 100644
> --- a/arch/m32r/include/asm/processor.h
> +++ b/arch/m32r/include/asm/processor.h
> @@ -133,6 +133,5 @@ unsigned long get_wchan(struct task_struct *p);
>  #define KSTK_ESP(tsk)  ((tsk)->thread.sp)
>  
>  #define cpu_relax()	barrier()
> -#define cpu_relax_yield() cpu_relax()
>  
>  #endif /* _ASM_M32R_PROCESSOR_H */
> diff --git a/arch/m68k/include/asm/processor.h b/arch/m68k/include/asm/processor.h
> index b0d0442..f5f790c 100644
> --- a/arch/m68k/include/asm/processor.h
> +++ b/arch/m68k/include/asm/processor.h
> @@ -156,6 +156,5 @@ unsigned long get_wchan(struct task_struct *p);
>  #define task_pt_regs(tsk)	((struct pt_regs *) ((tsk)->thread.esp0))
>  
>  #define cpu_relax()	barrier()
> -#define cpu_relax_yield() cpu_relax()
>  
>  #endif
> diff --git a/arch/metag/include/asm/processor.h b/arch/metag/include/asm/processor.h
> index ee302a6..ec6a490 100644
> --- a/arch/metag/include/asm/processor.h
> +++ b/arch/metag/include/asm/processor.h
> @@ -152,7 +152,6 @@ unsigned long get_wchan(struct task_struct *p);
>  #define user_stack_pointer(regs)        ((regs)->ctx.AX[0].U0)
>  
>  #define cpu_relax()     barrier()
> -#define cpu_relax_yield() cpu_relax()
>  
>  extern void setup_priv(void);
>  
> diff --git a/arch/microblaze/include/asm/processor.h b/arch/microblaze/include/asm/processor.h
> index 08ec1f7..37ef196 100644
> --- a/arch/microblaze/include/asm/processor.h
> +++ b/arch/microblaze/include/asm/processor.h
> @@ -22,7 +22,6 @@
>  extern const struct seq_operations cpuinfo_op;
>  
>  # define cpu_relax()		barrier()
> -# define cpu_relax_yield() cpu_relax()
>  
>  #define task_pt_regs(tsk) \
>  		(((struct pt_regs *)(THREAD_SIZE + task_stack_page(tsk))) - 1)
> diff --git a/arch/mips/include/asm/processor.h b/arch/mips/include/asm/processor.h
> index 8ea95e7..95b8c47 100644
> --- a/arch/mips/include/asm/processor.h
> +++ b/arch/mips/include/asm/processor.h
> @@ -389,7 +389,6 @@ unsigned long get_wchan(struct task_struct *p);
>  #define KSTK_STATUS(tsk) (task_pt_regs(tsk)->cp0_status)
>  
>  #define cpu_relax()	barrier()
> -#define cpu_relax_yield() cpu_relax()
>  
>  /*
>   * Return_address is a replacement for __builtin_return_address(count)
> diff --git a/arch/mn10300/include/asm/processor.h b/arch/mn10300/include/asm/processor.h
> index d11397b..18e17ab 100644
> --- a/arch/mn10300/include/asm/processor.h
> +++ b/arch/mn10300/include/asm/processor.h
> @@ -69,7 +69,6 @@ extern void print_cpu_info(struct mn10300_cpuinfo *);
>  extern void dodgy_tsc(void);
>  
>  #define cpu_relax() barrier()
> -#define cpu_relax_yield() cpu_relax()
>  
>  /*
>   * User space process size: 1.75GB (default).
> diff --git a/arch/nios2/include/asm/processor.h b/arch/nios2/include/asm/processor.h
> index d32c176..3bbbc3d 100644
> --- a/arch/nios2/include/asm/processor.h
> +++ b/arch/nios2/include/asm/processor.h
> @@ -88,7 +88,6 @@ extern unsigned long get_wchan(struct task_struct *p);
>  #define KSTK_ESP(tsk)	((tsk)->thread.kregs->sp)
>  
>  #define cpu_relax()	barrier()
> -#define cpu_relax_yield() cpu_relax()
>  
>  #endif /* __ASSEMBLY__ */
>  
> diff --git a/arch/openrisc/include/asm/processor.h b/arch/openrisc/include/asm/processor.h
> index 7f47fc7..a908e6c 100644
> --- a/arch/openrisc/include/asm/processor.h
> +++ b/arch/openrisc/include/asm/processor.h
> @@ -92,7 +92,6 @@ extern unsigned long thread_saved_pc(struct task_struct *t);
>  #define init_stack      (init_thread_union.stack)
>  
>  #define cpu_relax()     barrier()
> -#define cpu_relax_yield() cpu_relax()
>  
>  #endif /* __ASSEMBLY__ */
>  #endif /* __ASM_OPENRISC_PROCESSOR_H */
> diff --git a/arch/parisc/include/asm/processor.h b/arch/parisc/include/asm/processor.h
> index a4a07f4..ca40741 100644
> --- a/arch/parisc/include/asm/processor.h
> +++ b/arch/parisc/include/asm/processor.h
> @@ -309,7 +309,6 @@ extern unsigned long get_wchan(struct task_struct *p);
>  #define KSTK_ESP(tsk)	((tsk)->thread.regs.gr[30])
>  
>  #define cpu_relax()	barrier()
> -#define cpu_relax_yield() cpu_relax()
>  
>  /*
>   * parisc_requires_coherency() is used to identify the combined VIPT/PIPT
> diff --git a/arch/powerpc/include/asm/processor.h b/arch/powerpc/include/asm/processor.h
> index 5684e68..dac83fc 100644
> --- a/arch/powerpc/include/asm/processor.h
> +++ b/arch/powerpc/include/asm/processor.h
> @@ -404,8 +404,6 @@ static inline unsigned long __pack_fe01(unsigned int fpmode)
>  #define cpu_relax()	barrier()
>  #endif
>  
> -#define cpu_relax_yield() cpu_relax()
> -
>  /* Check that a certain kernel stack pointer is valid in task_struct p */
>  int validate_sp(unsigned long sp, struct task_struct *p,
>                         unsigned long nbytes);
> diff --git a/arch/s390/include/asm/processor.h b/arch/s390/include/asm/processor.h
> index 17c001a..9eab1cb 100644
> --- a/arch/s390/include/asm/processor.h
> +++ b/arch/s390/include/asm/processor.h
> @@ -234,6 +234,7 @@ static inline unsigned short stap(void)
>  /*
>   * Give up the time slice of the virtual PU.
>   */
> +#define cpu_relax_yield cpu_relax_yield
>  void cpu_relax_yield(void);
>  
>  #define cpu_relax() barrier()
> diff --git a/arch/score/include/asm/processor.h b/arch/score/include/asm/processor.h
> index a1e97c0..d9a922d 100644
> --- a/arch/score/include/asm/processor.h
> +++ b/arch/score/include/asm/processor.h
> @@ -24,7 +24,6 @@ extern unsigned long get_wchan(struct task_struct *p);
>  #define current_text_addr() ({ __label__ _l; _l: &&_l; })
>  
>  #define cpu_relax()		barrier()
> -#define cpu_relax_yield()	cpu_relax()
>  #define release_thread(thread)	do {} while (0)
>  
>  /*
> diff --git a/arch/sh/include/asm/processor.h b/arch/sh/include/asm/processor.h
> index 9454ff1..5addd69 100644
> --- a/arch/sh/include/asm/processor.h
> +++ b/arch/sh/include/asm/processor.h
> @@ -97,7 +97,6 @@ extern struct sh_cpuinfo cpu_data[];
>  
>  #define cpu_sleep()	__asm__ __volatile__ ("sleep" : : : "memory")
>  #define cpu_relax()	barrier()
> -#define cpu_relax_yield() cpu_relax()
>  
>  void default_idle(void);
>  void stop_this_cpu(void *);
> diff --git a/arch/sparc/include/asm/processor_32.h b/arch/sparc/include/asm/processor_32.h
> index fc32b73..365d4cb 100644
> --- a/arch/sparc/include/asm/processor_32.h
> +++ b/arch/sparc/include/asm/processor_32.h
> @@ -119,7 +119,6 @@ extern struct task_struct *last_task_used_math;
>  int do_mathemu(struct pt_regs *regs, struct task_struct *fpt);
>  
>  #define cpu_relax()	barrier()
> -#define cpu_relax_yield() cpu_relax()
>  
>  extern void (*sparc_idle)(void);
>  
> diff --git a/arch/sparc/include/asm/processor_64.h b/arch/sparc/include/asm/processor_64.h
> index 12787df..6448cfc 100644
> --- a/arch/sparc/include/asm/processor_64.h
> +++ b/arch/sparc/include/asm/processor_64.h
> @@ -216,7 +216,6 @@ unsigned long get_wchan(struct task_struct *task);
>  				     "nop\n\t"				\
>  				     ".previous"			\
>  				     ::: "memory")
> -#define cpu_relax_yield() cpu_relax()
>  
>  /* Prefetch support.  This is tuned for UltraSPARC-III and later.
>   * UltraSPARC-I will treat these as nops, and UltraSPARC-II has
> diff --git a/arch/tile/include/asm/processor.h b/arch/tile/include/asm/processor.h
> index c1c228b..0bc9968 100644
> --- a/arch/tile/include/asm/processor.h
> +++ b/arch/tile/include/asm/processor.h
> @@ -264,8 +264,6 @@ static inline void cpu_relax(void)
>  	barrier();
>  }
>  
> -#define cpu_relax_yield() cpu_relax()
> -
>  /* Info on this processor (see fs/proc/cpuinfo.c) */
>  struct seq_operations;
>  extern const struct seq_operations cpuinfo_op;
> diff --git a/arch/unicore32/include/asm/processor.h b/arch/unicore32/include/asm/processor.h
> index eeefe7c..4eaa421 100644
> --- a/arch/unicore32/include/asm/processor.h
> +++ b/arch/unicore32/include/asm/processor.h
> @@ -71,7 +71,6 @@ extern void release_thread(struct task_struct *);
>  unsigned long get_wchan(struct task_struct *p);
>  
>  #define cpu_relax()			barrier()
> -#define cpu_relax_yield()		cpu_relax()
>  
>  #define task_pt_regs(p) \
>  	((struct pt_regs *)(THREAD_START_SP + task_stack_page(p)) - 1)
> diff --git a/arch/x86/include/asm/processor.h b/arch/x86/include/asm/processor.h
> index 7513c99..c84605b 100644
> --- a/arch/x86/include/asm/processor.h
> +++ b/arch/x86/include/asm/processor.h
> @@ -588,8 +588,6 @@ static __always_inline void cpu_relax(void)
>  	rep_nop();
>  }
>  
> -#define cpu_relax_yield() cpu_relax()
> -
>  /* Stop speculative execution and prefetching of modified code. */
>  static inline void sync_core(void)
>  {
> diff --git a/arch/x86/um/asm/processor.h b/arch/x86/um/asm/processor.h
> index b4bd63b..c77db22 100644
> --- a/arch/x86/um/asm/processor.h
> +++ b/arch/x86/um/asm/processor.h
> @@ -26,7 +26,6 @@ static inline void rep_nop(void)
>  }
>  
>  #define cpu_relax()		rep_nop()
> -#define cpu_relax_yield()	cpu_relax()
>  
>  #define task_pt_regs(t) (&(t)->thread.regs)
>  
> diff --git a/arch/xtensa/include/asm/processor.h b/arch/xtensa/include/asm/processor.h
> index 7d8d6be..86ffcd6 100644
> --- a/arch/xtensa/include/asm/processor.h
> +++ b/arch/xtensa/include/asm/processor.h
> @@ -206,7 +206,6 @@ extern unsigned long get_wchan(struct task_struct *p);
>  #define KSTK_ESP(tsk)		(task_pt_regs(tsk)->areg[1])
>  
>  #define cpu_relax()  barrier()
> -#define cpu_relax_yield() cpu_relax()
>  
>  /* Special register access. */
>  
> diff --git a/include/linux/sched.h b/include/linux/sched.h
> index 348f51b..c1aa3b0 100644
> --- a/include/linux/sched.h
> +++ b/include/linux/sched.h
> @@ -2444,6 +2444,10 @@ static inline void calc_load_enter_idle(void) { }
>  static inline void calc_load_exit_idle(void) { }
>  #endif /* CONFIG_NO_HZ_COMMON */
>  
> +#ifndef cpu_relax_yield
> +#define cpu_relax_yield() cpu_relax()
> +#endif
> +
>  /*
>   * Do not use outside of architecture code which knows its limitations.
>   *
> -- 
> 2.5.5
> 

-- 
RMK's Patch system: http://www.armlinux.org.uk/developer/patches/
FTTC broadband for 0.8mile line: currently at 9.6Mbps down 400kbps up
according to speedtest.net.

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 1/1] sched: provide common cpu_relax_yield definition
@ 2016-11-16 12:42   ` Russell King - ARM Linux
  0 siblings, 0 replies; 11+ messages in thread
From: Russell King - ARM Linux @ 2016-11-16 12:42 UTC (permalink / raw)
  To: Christian Borntraeger
  Cc: Peter Zijlstra, Ingo Molnar, linux-s390, linux-arch,
	linux-kernel, x86, xen-devel, kvm, Will Deacon, Catalin Marinas,
	Heiko Carstens, Martin Schwidefsky, Noam Camus, linuxppc-dev,
	Nicholas Piggin, sparclinux, virtualization

On Wed, Nov 16, 2016 at 01:23:05PM +0100, Christian Borntraeger wrote:
> No need to duplicate the same define everywhere. Since
> the only user is stop-machine and the only provider is
> s390, we can use a default implementation of cpu_relax_yield
> in sched.h.
> 
> Suggested-by: Russell King <linux@armlinux.org.uk>
> Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>

Thanks for that.  (Please change my address above when adding this ack...)

Acked-by: Russell King <rmk+kernel@armlinux.org.uk>

> ---
>  arch/alpha/include/asm/processor.h      | 1 -
>  arch/arc/include/asm/processor.h        | 3 ---
>  arch/arm/include/asm/processor.h        | 2 --
>  arch/arm64/include/asm/processor.h      | 2 --
>  arch/avr32/include/asm/processor.h      | 1 -
>  arch/blackfin/include/asm/processor.h   | 1 -
>  arch/c6x/include/asm/processor.h        | 1 -
>  arch/cris/include/asm/processor.h       | 1 -
>  arch/frv/include/asm/processor.h        | 1 -
>  arch/h8300/include/asm/processor.h      | 1 -
>  arch/hexagon/include/asm/processor.h    | 1 -
>  arch/ia64/include/asm/processor.h       | 1 -
>  arch/m32r/include/asm/processor.h       | 1 -
>  arch/m68k/include/asm/processor.h       | 1 -
>  arch/metag/include/asm/processor.h      | 1 -
>  arch/microblaze/include/asm/processor.h | 1 -
>  arch/mips/include/asm/processor.h       | 1 -
>  arch/mn10300/include/asm/processor.h    | 1 -
>  arch/nios2/include/asm/processor.h      | 1 -
>  arch/openrisc/include/asm/processor.h   | 1 -
>  arch/parisc/include/asm/processor.h     | 1 -
>  arch/powerpc/include/asm/processor.h    | 2 --
>  arch/s390/include/asm/processor.h       | 1 +
>  arch/score/include/asm/processor.h      | 1 -
>  arch/sh/include/asm/processor.h         | 1 -
>  arch/sparc/include/asm/processor_32.h   | 1 -
>  arch/sparc/include/asm/processor_64.h   | 1 -
>  arch/tile/include/asm/processor.h       | 2 --
>  arch/unicore32/include/asm/processor.h  | 1 -
>  arch/x86/include/asm/processor.h        | 2 --
>  arch/x86/um/asm/processor.h             | 1 -
>  arch/xtensa/include/asm/processor.h     | 1 -
>  include/linux/sched.h                   | 4 ++++
>  33 files changed, 5 insertions(+), 38 deletions(-)
> 
> diff --git a/arch/alpha/include/asm/processor.h b/arch/alpha/include/asm/processor.h
> index 31e8dbe..2fec2de 100644
> --- a/arch/alpha/include/asm/processor.h
> +++ b/arch/alpha/include/asm/processor.h
> @@ -58,7 +58,6 @@ unsigned long get_wchan(struct task_struct *p);
>    ((tsk) = current ? rdusp() : task_thread_info(tsk)->pcb.usp)
>  
>  #define cpu_relax()	barrier()
> -#define cpu_relax_yield() cpu_relax()
>  
>  #define ARCH_HAS_PREFETCH
>  #define ARCH_HAS_PREFETCHW
> diff --git a/arch/arc/include/asm/processor.h b/arch/arc/include/asm/processor.h
> index d102a49..6e1242d 100644
> --- a/arch/arc/include/asm/processor.h
> +++ b/arch/arc/include/asm/processor.h
> @@ -60,15 +60,12 @@ struct task_struct;
>  #ifndef CONFIG_EZNPS_MTM_EXT
>  
>  #define cpu_relax()		barrier()
> -#define cpu_relax_yield()	cpu_relax()
>  
>  #else
>  
>  #define cpu_relax()     \
>  	__asm__ __volatile__ (".word %0" : : "i"(CTOP_INST_SCHD_RW) : "memory")
>  
> -#define cpu_relax_yield()	cpu_relax()
> -
>  #endif
>  
>  #define copy_segments(tsk, mm)      do { } while (0)
> diff --git a/arch/arm/include/asm/processor.h b/arch/arm/include/asm/processor.h
> index 9e71c58b..c3d5fc1 100644
> --- a/arch/arm/include/asm/processor.h
> +++ b/arch/arm/include/asm/processor.h
> @@ -82,8 +82,6 @@ unsigned long get_wchan(struct task_struct *p);
>  #define cpu_relax()			barrier()
>  #endif
>  
> -#define cpu_relax_yield()  	              cpu_relax()
> -
>  #define task_pt_regs(p) \
>  	((struct pt_regs *)(THREAD_START_SP + task_stack_page(p)) - 1)
>  
> diff --git a/arch/arm64/include/asm/processor.h b/arch/arm64/include/asm/processor.h
> index 6132f64..747c65a 100644
> --- a/arch/arm64/include/asm/processor.h
> +++ b/arch/arm64/include/asm/processor.h
> @@ -149,8 +149,6 @@ static inline void cpu_relax(void)
>  	asm volatile("yield" ::: "memory");
>  }
>  
> -#define cpu_relax_yield()                     cpu_relax()
> -
>  /* Thread switching */
>  extern struct task_struct *cpu_switch_to(struct task_struct *prev,
>  					 struct task_struct *next);
> diff --git a/arch/avr32/include/asm/processor.h b/arch/avr32/include/asm/processor.h
> index ee62365..972adcc 100644
> --- a/arch/avr32/include/asm/processor.h
> +++ b/arch/avr32/include/asm/processor.h
> @@ -92,7 +92,6 @@ extern struct avr32_cpuinfo boot_cpu_data;
>  #define TASK_UNMAPPED_BASE	(PAGE_ALIGN(TASK_SIZE / 3))
>  
>  #define cpu_relax()		barrier()
> -#define cpu_relax_yield()	cpu_relax()
>  #define cpu_sync_pipeline()	asm volatile("sub pc, -2" : : : "memory")
>  
>  struct cpu_context {
> diff --git a/arch/blackfin/include/asm/processor.h b/arch/blackfin/include/asm/processor.h
> index 57acfb1..85d4af9 100644
> --- a/arch/blackfin/include/asm/processor.h
> +++ b/arch/blackfin/include/asm/processor.h
> @@ -92,7 +92,6 @@ unsigned long get_wchan(struct task_struct *p);
>  #define	KSTK_ESP(tsk)	((tsk) = current ? rdusp() : (tsk)->thread.usp)
>  
>  #define cpu_relax()    	smp_mb()
> -#define cpu_relax_yield()      cpu_relax()
>  
>  /* Get the Silicon Revision of the chip */
>  static inline uint32_t __pure bfin_revid(void)
> diff --git a/arch/c6x/include/asm/processor.h b/arch/c6x/include/asm/processor.h
> index 1fd22e7..b9eb3da 100644
> --- a/arch/c6x/include/asm/processor.h
> +++ b/arch/c6x/include/asm/processor.h
> @@ -121,7 +121,6 @@ extern unsigned long get_wchan(struct task_struct *p);
>  #define KSTK_ESP(task)	(task_pt_regs(task)->sp)
>  
>  #define cpu_relax()		do { } while (0)
> -#define cpu_relax_yield()             cpu_relax()
>  
>  extern const struct seq_operations cpuinfo_op;
>  
> diff --git a/arch/cris/include/asm/processor.h b/arch/cris/include/asm/processor.h
> index 1a57841..15b815d 100644
> --- a/arch/cris/include/asm/processor.h
> +++ b/arch/cris/include/asm/processor.h
> @@ -63,7 +63,6 @@ static inline void release_thread(struct task_struct *dead_task)
>  #define init_stack      (init_thread_union.stack)
>  
>  #define cpu_relax()     barrier()
> -#define cpu_relax_yield() cpu_relax()
>  
>  void default_idle(void);
>  
> diff --git a/arch/frv/include/asm/processor.h b/arch/frv/include/asm/processor.h
> index c1e5f2a..ddaeb9c 100644
> --- a/arch/frv/include/asm/processor.h
> +++ b/arch/frv/include/asm/processor.h
> @@ -107,7 +107,6 @@ unsigned long get_wchan(struct task_struct *p);
>  #define	KSTK_ESP(tsk)	((tsk)->thread.frame0->sp)
>  
>  #define cpu_relax() barrier()
> -#define cpu_relax_yield() cpu_relax()
>  
>  /* data cache prefetch */
>  #define ARCH_HAS_PREFETCH
> diff --git a/arch/h8300/include/asm/processor.h b/arch/h8300/include/asm/processor.h
> index 42d6053..65132d7 100644
> --- a/arch/h8300/include/asm/processor.h
> +++ b/arch/h8300/include/asm/processor.h
> @@ -127,7 +127,6 @@ unsigned long get_wchan(struct task_struct *p);
>  #define	KSTK_ESP(tsk)	((tsk) = current ? rdusp() : (tsk)->thread.usp)
>  
>  #define cpu_relax()    barrier()
> -#define cpu_relax_yield() cpu_relax()
>  
>  #define HARD_RESET_NOW() ({		\
>  	local_irq_disable();		\
> diff --git a/arch/hexagon/include/asm/processor.h b/arch/hexagon/include/asm/processor.h
> index 5d694cc..45a8254 100644
> --- a/arch/hexagon/include/asm/processor.h
> +++ b/arch/hexagon/include/asm/processor.h
> @@ -56,7 +56,6 @@ struct thread_struct {
>  }
>  
>  #define cpu_relax() __vmyield()
> -#define cpu_relax_yield() cpu_relax()
>  
>  /*
>   * Decides where the kernel will search for a free chunk of vm space during
> diff --git a/arch/ia64/include/asm/processor.h b/arch/ia64/include/asm/processor.h
> index 0c2c3b2..03911a3 100644
> --- a/arch/ia64/include/asm/processor.h
> +++ b/arch/ia64/include/asm/processor.h
> @@ -547,7 +547,6 @@ ia64_eoi (void)
>  }
>  
>  #define cpu_relax()	ia64_hint(ia64_hint_pause)
> -#define cpu_relax_yield() cpu_relax()
>  
>  static inline int
>  ia64_get_irr(unsigned int vector)
> diff --git a/arch/m32r/include/asm/processor.h b/arch/m32r/include/asm/processor.h
> index 9b83a13..5767367 100644
> --- a/arch/m32r/include/asm/processor.h
> +++ b/arch/m32r/include/asm/processor.h
> @@ -133,6 +133,5 @@ unsigned long get_wchan(struct task_struct *p);
>  #define KSTK_ESP(tsk)  ((tsk)->thread.sp)
>  
>  #define cpu_relax()	barrier()
> -#define cpu_relax_yield() cpu_relax()
>  
>  #endif /* _ASM_M32R_PROCESSOR_H */
> diff --git a/arch/m68k/include/asm/processor.h b/arch/m68k/include/asm/processor.h
> index b0d0442..f5f790c 100644
> --- a/arch/m68k/include/asm/processor.h
> +++ b/arch/m68k/include/asm/processor.h
> @@ -156,6 +156,5 @@ unsigned long get_wchan(struct task_struct *p);
>  #define task_pt_regs(tsk)	((struct pt_regs *) ((tsk)->thread.esp0))
>  
>  #define cpu_relax()	barrier()
> -#define cpu_relax_yield() cpu_relax()
>  
>  #endif
> diff --git a/arch/metag/include/asm/processor.h b/arch/metag/include/asm/processor.h
> index ee302a6..ec6a490 100644
> --- a/arch/metag/include/asm/processor.h
> +++ b/arch/metag/include/asm/processor.h
> @@ -152,7 +152,6 @@ unsigned long get_wchan(struct task_struct *p);
>  #define user_stack_pointer(regs)        ((regs)->ctx.AX[0].U0)
>  
>  #define cpu_relax()     barrier()
> -#define cpu_relax_yield() cpu_relax()
>  
>  extern void setup_priv(void);
>  
> diff --git a/arch/microblaze/include/asm/processor.h b/arch/microblaze/include/asm/processor.h
> index 08ec1f7..37ef196 100644
> --- a/arch/microblaze/include/asm/processor.h
> +++ b/arch/microblaze/include/asm/processor.h
> @@ -22,7 +22,6 @@
>  extern const struct seq_operations cpuinfo_op;
>  
>  # define cpu_relax()		barrier()
> -# define cpu_relax_yield() cpu_relax()
>  
>  #define task_pt_regs(tsk) \
>  		(((struct pt_regs *)(THREAD_SIZE + task_stack_page(tsk))) - 1)
> diff --git a/arch/mips/include/asm/processor.h b/arch/mips/include/asm/processor.h
> index 8ea95e7..95b8c47 100644
> --- a/arch/mips/include/asm/processor.h
> +++ b/arch/mips/include/asm/processor.h
> @@ -389,7 +389,6 @@ unsigned long get_wchan(struct task_struct *p);
>  #define KSTK_STATUS(tsk) (task_pt_regs(tsk)->cp0_status)
>  
>  #define cpu_relax()	barrier()
> -#define cpu_relax_yield() cpu_relax()
>  
>  /*
>   * Return_address is a replacement for __builtin_return_address(count)
> diff --git a/arch/mn10300/include/asm/processor.h b/arch/mn10300/include/asm/processor.h
> index d11397b..18e17ab 100644
> --- a/arch/mn10300/include/asm/processor.h
> +++ b/arch/mn10300/include/asm/processor.h
> @@ -69,7 +69,6 @@ extern void print_cpu_info(struct mn10300_cpuinfo *);
>  extern void dodgy_tsc(void);
>  
>  #define cpu_relax() barrier()
> -#define cpu_relax_yield() cpu_relax()
>  
>  /*
>   * User space process size: 1.75GB (default).
> diff --git a/arch/nios2/include/asm/processor.h b/arch/nios2/include/asm/processor.h
> index d32c176..3bbbc3d 100644
> --- a/arch/nios2/include/asm/processor.h
> +++ b/arch/nios2/include/asm/processor.h
> @@ -88,7 +88,6 @@ extern unsigned long get_wchan(struct task_struct *p);
>  #define KSTK_ESP(tsk)	((tsk)->thread.kregs->sp)
>  
>  #define cpu_relax()	barrier()
> -#define cpu_relax_yield() cpu_relax()
>  
>  #endif /* __ASSEMBLY__ */
>  
> diff --git a/arch/openrisc/include/asm/processor.h b/arch/openrisc/include/asm/processor.h
> index 7f47fc7..a908e6c 100644
> --- a/arch/openrisc/include/asm/processor.h
> +++ b/arch/openrisc/include/asm/processor.h
> @@ -92,7 +92,6 @@ extern unsigned long thread_saved_pc(struct task_struct *t);
>  #define init_stack      (init_thread_union.stack)
>  
>  #define cpu_relax()     barrier()
> -#define cpu_relax_yield() cpu_relax()
>  
>  #endif /* __ASSEMBLY__ */
>  #endif /* __ASM_OPENRISC_PROCESSOR_H */
> diff --git a/arch/parisc/include/asm/processor.h b/arch/parisc/include/asm/processor.h
> index a4a07f4..ca40741 100644
> --- a/arch/parisc/include/asm/processor.h
> +++ b/arch/parisc/include/asm/processor.h
> @@ -309,7 +309,6 @@ extern unsigned long get_wchan(struct task_struct *p);
>  #define KSTK_ESP(tsk)	((tsk)->thread.regs.gr[30])
>  
>  #define cpu_relax()	barrier()
> -#define cpu_relax_yield() cpu_relax()
>  
>  /*
>   * parisc_requires_coherency() is used to identify the combined VIPT/PIPT
> diff --git a/arch/powerpc/include/asm/processor.h b/arch/powerpc/include/asm/processor.h
> index 5684e68..dac83fc 100644
> --- a/arch/powerpc/include/asm/processor.h
> +++ b/arch/powerpc/include/asm/processor.h
> @@ -404,8 +404,6 @@ static inline unsigned long __pack_fe01(unsigned int fpmode)
>  #define cpu_relax()	barrier()
>  #endif
>  
> -#define cpu_relax_yield() cpu_relax()
> -
>  /* Check that a certain kernel stack pointer is valid in task_struct p */
>  int validate_sp(unsigned long sp, struct task_struct *p,
>                         unsigned long nbytes);
> diff --git a/arch/s390/include/asm/processor.h b/arch/s390/include/asm/processor.h
> index 17c001a..9eab1cb 100644
> --- a/arch/s390/include/asm/processor.h
> +++ b/arch/s390/include/asm/processor.h
> @@ -234,6 +234,7 @@ static inline unsigned short stap(void)
>  /*
>   * Give up the time slice of the virtual PU.
>   */
> +#define cpu_relax_yield cpu_relax_yield
>  void cpu_relax_yield(void);
>  
>  #define cpu_relax() barrier()
> diff --git a/arch/score/include/asm/processor.h b/arch/score/include/asm/processor.h
> index a1e97c0..d9a922d 100644
> --- a/arch/score/include/asm/processor.h
> +++ b/arch/score/include/asm/processor.h
> @@ -24,7 +24,6 @@ extern unsigned long get_wchan(struct task_struct *p);
>  #define current_text_addr() ({ __label__ _l; _l: &&_l; })
>  
>  #define cpu_relax()		barrier()
> -#define cpu_relax_yield()	cpu_relax()
>  #define release_thread(thread)	do {} while (0)
>  
>  /*
> diff --git a/arch/sh/include/asm/processor.h b/arch/sh/include/asm/processor.h
> index 9454ff1..5addd69 100644
> --- a/arch/sh/include/asm/processor.h
> +++ b/arch/sh/include/asm/processor.h
> @@ -97,7 +97,6 @@ extern struct sh_cpuinfo cpu_data[];
>  
>  #define cpu_sleep()	__asm__ __volatile__ ("sleep" : : : "memory")
>  #define cpu_relax()	barrier()
> -#define cpu_relax_yield() cpu_relax()
>  
>  void default_idle(void);
>  void stop_this_cpu(void *);
> diff --git a/arch/sparc/include/asm/processor_32.h b/arch/sparc/include/asm/processor_32.h
> index fc32b73..365d4cb 100644
> --- a/arch/sparc/include/asm/processor_32.h
> +++ b/arch/sparc/include/asm/processor_32.h
> @@ -119,7 +119,6 @@ extern struct task_struct *last_task_used_math;
>  int do_mathemu(struct pt_regs *regs, struct task_struct *fpt);
>  
>  #define cpu_relax()	barrier()
> -#define cpu_relax_yield() cpu_relax()
>  
>  extern void (*sparc_idle)(void);
>  
> diff --git a/arch/sparc/include/asm/processor_64.h b/arch/sparc/include/asm/processor_64.h
> index 12787df..6448cfc 100644
> --- a/arch/sparc/include/asm/processor_64.h
> +++ b/arch/sparc/include/asm/processor_64.h
> @@ -216,7 +216,6 @@ unsigned long get_wchan(struct task_struct *task);
>  				     "nop\n\t"				\
>  				     ".previous"			\
>  				     ::: "memory")
> -#define cpu_relax_yield() cpu_relax()
>  
>  /* Prefetch support.  This is tuned for UltraSPARC-III and later.
>   * UltraSPARC-I will treat these as nops, and UltraSPARC-II has
> diff --git a/arch/tile/include/asm/processor.h b/arch/tile/include/asm/processor.h
> index c1c228b..0bc9968 100644
> --- a/arch/tile/include/asm/processor.h
> +++ b/arch/tile/include/asm/processor.h
> @@ -264,8 +264,6 @@ static inline void cpu_relax(void)
>  	barrier();
>  }
>  
> -#define cpu_relax_yield() cpu_relax()
> -
>  /* Info on this processor (see fs/proc/cpuinfo.c) */
>  struct seq_operations;
>  extern const struct seq_operations cpuinfo_op;
> diff --git a/arch/unicore32/include/asm/processor.h b/arch/unicore32/include/asm/processor.h
> index eeefe7c..4eaa421 100644
> --- a/arch/unicore32/include/asm/processor.h
> +++ b/arch/unicore32/include/asm/processor.h
> @@ -71,7 +71,6 @@ extern void release_thread(struct task_struct *);
>  unsigned long get_wchan(struct task_struct *p);
>  
>  #define cpu_relax()			barrier()
> -#define cpu_relax_yield()		cpu_relax()
>  
>  #define task_pt_regs(p) \
>  	((struct pt_regs *)(THREAD_START_SP + task_stack_page(p)) - 1)
> diff --git a/arch/x86/include/asm/processor.h b/arch/x86/include/asm/processor.h
> index 7513c99..c84605b 100644
> --- a/arch/x86/include/asm/processor.h
> +++ b/arch/x86/include/asm/processor.h
> @@ -588,8 +588,6 @@ static __always_inline void cpu_relax(void)
>  	rep_nop();
>  }
>  
> -#define cpu_relax_yield() cpu_relax()
> -
>  /* Stop speculative execution and prefetching of modified code. */
>  static inline void sync_core(void)
>  {
> diff --git a/arch/x86/um/asm/processor.h b/arch/x86/um/asm/processor.h
> index b4bd63b..c77db22 100644
> --- a/arch/x86/um/asm/processor.h
> +++ b/arch/x86/um/asm/processor.h
> @@ -26,7 +26,6 @@ static inline void rep_nop(void)
>  }
>  
>  #define cpu_relax()		rep_nop()
> -#define cpu_relax_yield()	cpu_relax()
>  
>  #define task_pt_regs(t) (&(t)->thread.regs)
>  
> diff --git a/arch/xtensa/include/asm/processor.h b/arch/xtensa/include/asm/processor.h
> index 7d8d6be..86ffcd6 100644
> --- a/arch/xtensa/include/asm/processor.h
> +++ b/arch/xtensa/include/asm/processor.h
> @@ -206,7 +206,6 @@ extern unsigned long get_wchan(struct task_struct *p);
>  #define KSTK_ESP(tsk)		(task_pt_regs(tsk)->areg[1])
>  
>  #define cpu_relax()  barrier()
> -#define cpu_relax_yield() cpu_relax()
>  
>  /* Special register access. */
>  
> diff --git a/include/linux/sched.h b/include/linux/sched.h
> index 348f51b..c1aa3b0 100644
> --- a/include/linux/sched.h
> +++ b/include/linux/sched.h
> @@ -2444,6 +2444,10 @@ static inline void calc_load_enter_idle(void) { }
>  static inline void calc_load_exit_idle(void) { }
>  #endif /* CONFIG_NO_HZ_COMMON */
>  
> +#ifndef cpu_relax_yield
> +#define cpu_relax_yield() cpu_relax()
> +#endif
> +
>  /*
>   * Do not use outside of architecture code which knows its limitations.
>   *
> -- 
> 2.5.5
> 

-- 
RMK's Patch system: http://www.armlinux.org.uk/developer/patches/
FTTC broadband for 0.8mile line: currently at 9.6Mbps down 400kbps up
according to speedtest.net.

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 1/1] sched: provide common cpu_relax_yield definition
  2016-11-16 12:23 ` Christian Borntraeger
                   ` (4 preceding siblings ...)
  (?)
@ 2016-11-16 12:42 ` Russell King - ARM Linux
  -1 siblings, 0 replies; 11+ messages in thread
From: Russell King - ARM Linux @ 2016-11-16 12:42 UTC (permalink / raw)
  To: Christian Borntraeger
  Cc: linux-arch, linux-s390, kvm, Peter Zijlstra, Catalin Marinas,
	x86, Will Deacon, linux-kernel, Heiko Carstens, virtualization,
	sparclinux, Noam Camus, Nicholas Piggin, Martin Schwidefsky,
	xen-devel, linuxppc-dev, Ingo Molnar

On Wed, Nov 16, 2016 at 01:23:05PM +0100, Christian Borntraeger wrote:
> No need to duplicate the same define everywhere. Since
> the only user is stop-machine and the only provider is
> s390, we can use a default implementation of cpu_relax_yield
> in sched.h.
> 
> Suggested-by: Russell King <linux@armlinux.org.uk>
> Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>

Thanks for that.  (Please change my address above when adding this ack...)

Acked-by: Russell King <rmk+kernel@armlinux.org.uk>

> ---
>  arch/alpha/include/asm/processor.h      | 1 -
>  arch/arc/include/asm/processor.h        | 3 ---
>  arch/arm/include/asm/processor.h        | 2 --
>  arch/arm64/include/asm/processor.h      | 2 --
>  arch/avr32/include/asm/processor.h      | 1 -
>  arch/blackfin/include/asm/processor.h   | 1 -
>  arch/c6x/include/asm/processor.h        | 1 -
>  arch/cris/include/asm/processor.h       | 1 -
>  arch/frv/include/asm/processor.h        | 1 -
>  arch/h8300/include/asm/processor.h      | 1 -
>  arch/hexagon/include/asm/processor.h    | 1 -
>  arch/ia64/include/asm/processor.h       | 1 -
>  arch/m32r/include/asm/processor.h       | 1 -
>  arch/m68k/include/asm/processor.h       | 1 -
>  arch/metag/include/asm/processor.h      | 1 -
>  arch/microblaze/include/asm/processor.h | 1 -
>  arch/mips/include/asm/processor.h       | 1 -
>  arch/mn10300/include/asm/processor.h    | 1 -
>  arch/nios2/include/asm/processor.h      | 1 -
>  arch/openrisc/include/asm/processor.h   | 1 -
>  arch/parisc/include/asm/processor.h     | 1 -
>  arch/powerpc/include/asm/processor.h    | 2 --
>  arch/s390/include/asm/processor.h       | 1 +
>  arch/score/include/asm/processor.h      | 1 -
>  arch/sh/include/asm/processor.h         | 1 -
>  arch/sparc/include/asm/processor_32.h   | 1 -
>  arch/sparc/include/asm/processor_64.h   | 1 -
>  arch/tile/include/asm/processor.h       | 2 --
>  arch/unicore32/include/asm/processor.h  | 1 -
>  arch/x86/include/asm/processor.h        | 2 --
>  arch/x86/um/asm/processor.h             | 1 -
>  arch/xtensa/include/asm/processor.h     | 1 -
>  include/linux/sched.h                   | 4 ++++
>  33 files changed, 5 insertions(+), 38 deletions(-)
> 
> diff --git a/arch/alpha/include/asm/processor.h b/arch/alpha/include/asm/processor.h
> index 31e8dbe..2fec2de 100644
> --- a/arch/alpha/include/asm/processor.h
> +++ b/arch/alpha/include/asm/processor.h
> @@ -58,7 +58,6 @@ unsigned long get_wchan(struct task_struct *p);
>    ((tsk) == current ? rdusp() : task_thread_info(tsk)->pcb.usp)
>  
>  #define cpu_relax()	barrier()
> -#define cpu_relax_yield() cpu_relax()
>  
>  #define ARCH_HAS_PREFETCH
>  #define ARCH_HAS_PREFETCHW
> diff --git a/arch/arc/include/asm/processor.h b/arch/arc/include/asm/processor.h
> index d102a49..6e1242d 100644
> --- a/arch/arc/include/asm/processor.h
> +++ b/arch/arc/include/asm/processor.h
> @@ -60,15 +60,12 @@ struct task_struct;
>  #ifndef CONFIG_EZNPS_MTM_EXT
>  
>  #define cpu_relax()		barrier()
> -#define cpu_relax_yield()	cpu_relax()
>  
>  #else
>  
>  #define cpu_relax()     \
>  	__asm__ __volatile__ (".word %0" : : "i"(CTOP_INST_SCHD_RW) : "memory")
>  
> -#define cpu_relax_yield()	cpu_relax()
> -
>  #endif
>  
>  #define copy_segments(tsk, mm)      do { } while (0)
> diff --git a/arch/arm/include/asm/processor.h b/arch/arm/include/asm/processor.h
> index 9e71c58b..c3d5fc1 100644
> --- a/arch/arm/include/asm/processor.h
> +++ b/arch/arm/include/asm/processor.h
> @@ -82,8 +82,6 @@ unsigned long get_wchan(struct task_struct *p);
>  #define cpu_relax()			barrier()
>  #endif
>  
> -#define cpu_relax_yield()  	              cpu_relax()
> -
>  #define task_pt_regs(p) \
>  	((struct pt_regs *)(THREAD_START_SP + task_stack_page(p)) - 1)
>  
> diff --git a/arch/arm64/include/asm/processor.h b/arch/arm64/include/asm/processor.h
> index 6132f64..747c65a 100644
> --- a/arch/arm64/include/asm/processor.h
> +++ b/arch/arm64/include/asm/processor.h
> @@ -149,8 +149,6 @@ static inline void cpu_relax(void)
>  	asm volatile("yield" ::: "memory");
>  }
>  
> -#define cpu_relax_yield()                     cpu_relax()
> -
>  /* Thread switching */
>  extern struct task_struct *cpu_switch_to(struct task_struct *prev,
>  					 struct task_struct *next);
> diff --git a/arch/avr32/include/asm/processor.h b/arch/avr32/include/asm/processor.h
> index ee62365..972adcc 100644
> --- a/arch/avr32/include/asm/processor.h
> +++ b/arch/avr32/include/asm/processor.h
> @@ -92,7 +92,6 @@ extern struct avr32_cpuinfo boot_cpu_data;
>  #define TASK_UNMAPPED_BASE	(PAGE_ALIGN(TASK_SIZE / 3))
>  
>  #define cpu_relax()		barrier()
> -#define cpu_relax_yield()	cpu_relax()
>  #define cpu_sync_pipeline()	asm volatile("sub pc, -2" : : : "memory")
>  
>  struct cpu_context {
> diff --git a/arch/blackfin/include/asm/processor.h b/arch/blackfin/include/asm/processor.h
> index 57acfb1..85d4af9 100644
> --- a/arch/blackfin/include/asm/processor.h
> +++ b/arch/blackfin/include/asm/processor.h
> @@ -92,7 +92,6 @@ unsigned long get_wchan(struct task_struct *p);
>  #define	KSTK_ESP(tsk)	((tsk) == current ? rdusp() : (tsk)->thread.usp)
>  
>  #define cpu_relax()    	smp_mb()
> -#define cpu_relax_yield()      cpu_relax()
>  
>  /* Get the Silicon Revision of the chip */
>  static inline uint32_t __pure bfin_revid(void)
> diff --git a/arch/c6x/include/asm/processor.h b/arch/c6x/include/asm/processor.h
> index 1fd22e7..b9eb3da 100644
> --- a/arch/c6x/include/asm/processor.h
> +++ b/arch/c6x/include/asm/processor.h
> @@ -121,7 +121,6 @@ extern unsigned long get_wchan(struct task_struct *p);
>  #define KSTK_ESP(task)	(task_pt_regs(task)->sp)
>  
>  #define cpu_relax()		do { } while (0)
> -#define cpu_relax_yield()             cpu_relax()
>  
>  extern const struct seq_operations cpuinfo_op;
>  
> diff --git a/arch/cris/include/asm/processor.h b/arch/cris/include/asm/processor.h
> index 1a57841..15b815d 100644
> --- a/arch/cris/include/asm/processor.h
> +++ b/arch/cris/include/asm/processor.h
> @@ -63,7 +63,6 @@ static inline void release_thread(struct task_struct *dead_task)
>  #define init_stack      (init_thread_union.stack)
>  
>  #define cpu_relax()     barrier()
> -#define cpu_relax_yield() cpu_relax()
>  
>  void default_idle(void);
>  
> diff --git a/arch/frv/include/asm/processor.h b/arch/frv/include/asm/processor.h
> index c1e5f2a..ddaeb9c 100644
> --- a/arch/frv/include/asm/processor.h
> +++ b/arch/frv/include/asm/processor.h
> @@ -107,7 +107,6 @@ unsigned long get_wchan(struct task_struct *p);
>  #define	KSTK_ESP(tsk)	((tsk)->thread.frame0->sp)
>  
>  #define cpu_relax() barrier()
> -#define cpu_relax_yield() cpu_relax()
>  
>  /* data cache prefetch */
>  #define ARCH_HAS_PREFETCH
> diff --git a/arch/h8300/include/asm/processor.h b/arch/h8300/include/asm/processor.h
> index 42d6053..65132d7 100644
> --- a/arch/h8300/include/asm/processor.h
> +++ b/arch/h8300/include/asm/processor.h
> @@ -127,7 +127,6 @@ unsigned long get_wchan(struct task_struct *p);
>  #define	KSTK_ESP(tsk)	((tsk) == current ? rdusp() : (tsk)->thread.usp)
>  
>  #define cpu_relax()    barrier()
> -#define cpu_relax_yield() cpu_relax()
>  
>  #define HARD_RESET_NOW() ({		\
>  	local_irq_disable();		\
> diff --git a/arch/hexagon/include/asm/processor.h b/arch/hexagon/include/asm/processor.h
> index 5d694cc..45a8254 100644
> --- a/arch/hexagon/include/asm/processor.h
> +++ b/arch/hexagon/include/asm/processor.h
> @@ -56,7 +56,6 @@ struct thread_struct {
>  }
>  
>  #define cpu_relax() __vmyield()
> -#define cpu_relax_yield() cpu_relax()
>  
>  /*
>   * Decides where the kernel will search for a free chunk of vm space during
> diff --git a/arch/ia64/include/asm/processor.h b/arch/ia64/include/asm/processor.h
> index 0c2c3b2..03911a3 100644
> --- a/arch/ia64/include/asm/processor.h
> +++ b/arch/ia64/include/asm/processor.h
> @@ -547,7 +547,6 @@ ia64_eoi (void)
>  }
>  
>  #define cpu_relax()	ia64_hint(ia64_hint_pause)
> -#define cpu_relax_yield() cpu_relax()
>  
>  static inline int
>  ia64_get_irr(unsigned int vector)
> diff --git a/arch/m32r/include/asm/processor.h b/arch/m32r/include/asm/processor.h
> index 9b83a13..5767367 100644
> --- a/arch/m32r/include/asm/processor.h
> +++ b/arch/m32r/include/asm/processor.h
> @@ -133,6 +133,5 @@ unsigned long get_wchan(struct task_struct *p);
>  #define KSTK_ESP(tsk)  ((tsk)->thread.sp)
>  
>  #define cpu_relax()	barrier()
> -#define cpu_relax_yield() cpu_relax()
>  
>  #endif /* _ASM_M32R_PROCESSOR_H */
> diff --git a/arch/m68k/include/asm/processor.h b/arch/m68k/include/asm/processor.h
> index b0d0442..f5f790c 100644
> --- a/arch/m68k/include/asm/processor.h
> +++ b/arch/m68k/include/asm/processor.h
> @@ -156,6 +156,5 @@ unsigned long get_wchan(struct task_struct *p);
>  #define task_pt_regs(tsk)	((struct pt_regs *) ((tsk)->thread.esp0))
>  
>  #define cpu_relax()	barrier()
> -#define cpu_relax_yield() cpu_relax()
>  
>  #endif
> diff --git a/arch/metag/include/asm/processor.h b/arch/metag/include/asm/processor.h
> index ee302a6..ec6a490 100644
> --- a/arch/metag/include/asm/processor.h
> +++ b/arch/metag/include/asm/processor.h
> @@ -152,7 +152,6 @@ unsigned long get_wchan(struct task_struct *p);
>  #define user_stack_pointer(regs)        ((regs)->ctx.AX[0].U0)
>  
>  #define cpu_relax()     barrier()
> -#define cpu_relax_yield() cpu_relax()
>  
>  extern void setup_priv(void);
>  
> diff --git a/arch/microblaze/include/asm/processor.h b/arch/microblaze/include/asm/processor.h
> index 08ec1f7..37ef196 100644
> --- a/arch/microblaze/include/asm/processor.h
> +++ b/arch/microblaze/include/asm/processor.h
> @@ -22,7 +22,6 @@
>  extern const struct seq_operations cpuinfo_op;
>  
>  # define cpu_relax()		barrier()
> -# define cpu_relax_yield() cpu_relax()
>  
>  #define task_pt_regs(tsk) \
>  		(((struct pt_regs *)(THREAD_SIZE + task_stack_page(tsk))) - 1)
> diff --git a/arch/mips/include/asm/processor.h b/arch/mips/include/asm/processor.h
> index 8ea95e7..95b8c47 100644
> --- a/arch/mips/include/asm/processor.h
> +++ b/arch/mips/include/asm/processor.h
> @@ -389,7 +389,6 @@ unsigned long get_wchan(struct task_struct *p);
>  #define KSTK_STATUS(tsk) (task_pt_regs(tsk)->cp0_status)
>  
>  #define cpu_relax()	barrier()
> -#define cpu_relax_yield() cpu_relax()
>  
>  /*
>   * Return_address is a replacement for __builtin_return_address(count)
> diff --git a/arch/mn10300/include/asm/processor.h b/arch/mn10300/include/asm/processor.h
> index d11397b..18e17ab 100644
> --- a/arch/mn10300/include/asm/processor.h
> +++ b/arch/mn10300/include/asm/processor.h
> @@ -69,7 +69,6 @@ extern void print_cpu_info(struct mn10300_cpuinfo *);
>  extern void dodgy_tsc(void);
>  
>  #define cpu_relax() barrier()
> -#define cpu_relax_yield() cpu_relax()
>  
>  /*
>   * User space process size: 1.75GB (default).
> diff --git a/arch/nios2/include/asm/processor.h b/arch/nios2/include/asm/processor.h
> index d32c176..3bbbc3d 100644
> --- a/arch/nios2/include/asm/processor.h
> +++ b/arch/nios2/include/asm/processor.h
> @@ -88,7 +88,6 @@ extern unsigned long get_wchan(struct task_struct *p);
>  #define KSTK_ESP(tsk)	((tsk)->thread.kregs->sp)
>  
>  #define cpu_relax()	barrier()
> -#define cpu_relax_yield() cpu_relax()
>  
>  #endif /* __ASSEMBLY__ */
>  
> diff --git a/arch/openrisc/include/asm/processor.h b/arch/openrisc/include/asm/processor.h
> index 7f47fc7..a908e6c 100644
> --- a/arch/openrisc/include/asm/processor.h
> +++ b/arch/openrisc/include/asm/processor.h
> @@ -92,7 +92,6 @@ extern unsigned long thread_saved_pc(struct task_struct *t);
>  #define init_stack      (init_thread_union.stack)
>  
>  #define cpu_relax()     barrier()
> -#define cpu_relax_yield() cpu_relax()
>  
>  #endif /* __ASSEMBLY__ */
>  #endif /* __ASM_OPENRISC_PROCESSOR_H */
> diff --git a/arch/parisc/include/asm/processor.h b/arch/parisc/include/asm/processor.h
> index a4a07f4..ca40741 100644
> --- a/arch/parisc/include/asm/processor.h
> +++ b/arch/parisc/include/asm/processor.h
> @@ -309,7 +309,6 @@ extern unsigned long get_wchan(struct task_struct *p);
>  #define KSTK_ESP(tsk)	((tsk)->thread.regs.gr[30])
>  
>  #define cpu_relax()	barrier()
> -#define cpu_relax_yield() cpu_relax()
>  
>  /*
>   * parisc_requires_coherency() is used to identify the combined VIPT/PIPT
> diff --git a/arch/powerpc/include/asm/processor.h b/arch/powerpc/include/asm/processor.h
> index 5684e68..dac83fc 100644
> --- a/arch/powerpc/include/asm/processor.h
> +++ b/arch/powerpc/include/asm/processor.h
> @@ -404,8 +404,6 @@ static inline unsigned long __pack_fe01(unsigned int fpmode)
>  #define cpu_relax()	barrier()
>  #endif
>  
> -#define cpu_relax_yield() cpu_relax()
> -
>  /* Check that a certain kernel stack pointer is valid in task_struct p */
>  int validate_sp(unsigned long sp, struct task_struct *p,
>                         unsigned long nbytes);
> diff --git a/arch/s390/include/asm/processor.h b/arch/s390/include/asm/processor.h
> index 17c001a..9eab1cb 100644
> --- a/arch/s390/include/asm/processor.h
> +++ b/arch/s390/include/asm/processor.h
> @@ -234,6 +234,7 @@ static inline unsigned short stap(void)
>  /*
>   * Give up the time slice of the virtual PU.
>   */
> +#define cpu_relax_yield cpu_relax_yield
>  void cpu_relax_yield(void);
>  
>  #define cpu_relax() barrier()
> diff --git a/arch/score/include/asm/processor.h b/arch/score/include/asm/processor.h
> index a1e97c0..d9a922d 100644
> --- a/arch/score/include/asm/processor.h
> +++ b/arch/score/include/asm/processor.h
> @@ -24,7 +24,6 @@ extern unsigned long get_wchan(struct task_struct *p);
>  #define current_text_addr() ({ __label__ _l; _l: &&_l; })
>  
>  #define cpu_relax()		barrier()
> -#define cpu_relax_yield()	cpu_relax()
>  #define release_thread(thread)	do {} while (0)
>  
>  /*
> diff --git a/arch/sh/include/asm/processor.h b/arch/sh/include/asm/processor.h
> index 9454ff1..5addd69 100644
> --- a/arch/sh/include/asm/processor.h
> +++ b/arch/sh/include/asm/processor.h
> @@ -97,7 +97,6 @@ extern struct sh_cpuinfo cpu_data[];
>  
>  #define cpu_sleep()	__asm__ __volatile__ ("sleep" : : : "memory")
>  #define cpu_relax()	barrier()
> -#define cpu_relax_yield() cpu_relax()
>  
>  void default_idle(void);
>  void stop_this_cpu(void *);
> diff --git a/arch/sparc/include/asm/processor_32.h b/arch/sparc/include/asm/processor_32.h
> index fc32b73..365d4cb 100644
> --- a/arch/sparc/include/asm/processor_32.h
> +++ b/arch/sparc/include/asm/processor_32.h
> @@ -119,7 +119,6 @@ extern struct task_struct *last_task_used_math;
>  int do_mathemu(struct pt_regs *regs, struct task_struct *fpt);
>  
>  #define cpu_relax()	barrier()
> -#define cpu_relax_yield() cpu_relax()
>  
>  extern void (*sparc_idle)(void);
>  
> diff --git a/arch/sparc/include/asm/processor_64.h b/arch/sparc/include/asm/processor_64.h
> index 12787df..6448cfc 100644
> --- a/arch/sparc/include/asm/processor_64.h
> +++ b/arch/sparc/include/asm/processor_64.h
> @@ -216,7 +216,6 @@ unsigned long get_wchan(struct task_struct *task);
>  				     "nop\n\t"				\
>  				     ".previous"			\
>  				     ::: "memory")
> -#define cpu_relax_yield() cpu_relax()
>  
>  /* Prefetch support.  This is tuned for UltraSPARC-III and later.
>   * UltraSPARC-I will treat these as nops, and UltraSPARC-II has
> diff --git a/arch/tile/include/asm/processor.h b/arch/tile/include/asm/processor.h
> index c1c228b..0bc9968 100644
> --- a/arch/tile/include/asm/processor.h
> +++ b/arch/tile/include/asm/processor.h
> @@ -264,8 +264,6 @@ static inline void cpu_relax(void)
>  	barrier();
>  }
>  
> -#define cpu_relax_yield() cpu_relax()
> -
>  /* Info on this processor (see fs/proc/cpuinfo.c) */
>  struct seq_operations;
>  extern const struct seq_operations cpuinfo_op;
> diff --git a/arch/unicore32/include/asm/processor.h b/arch/unicore32/include/asm/processor.h
> index eeefe7c..4eaa421 100644
> --- a/arch/unicore32/include/asm/processor.h
> +++ b/arch/unicore32/include/asm/processor.h
> @@ -71,7 +71,6 @@ extern void release_thread(struct task_struct *);
>  unsigned long get_wchan(struct task_struct *p);
>  
>  #define cpu_relax()			barrier()
> -#define cpu_relax_yield()		cpu_relax()
>  
>  #define task_pt_regs(p) \
>  	((struct pt_regs *)(THREAD_START_SP + task_stack_page(p)) - 1)
> diff --git a/arch/x86/include/asm/processor.h b/arch/x86/include/asm/processor.h
> index 7513c99..c84605b 100644
> --- a/arch/x86/include/asm/processor.h
> +++ b/arch/x86/include/asm/processor.h
> @@ -588,8 +588,6 @@ static __always_inline void cpu_relax(void)
>  	rep_nop();
>  }
>  
> -#define cpu_relax_yield() cpu_relax()
> -
>  /* Stop speculative execution and prefetching of modified code. */
>  static inline void sync_core(void)
>  {
> diff --git a/arch/x86/um/asm/processor.h b/arch/x86/um/asm/processor.h
> index b4bd63b..c77db22 100644
> --- a/arch/x86/um/asm/processor.h
> +++ b/arch/x86/um/asm/processor.h
> @@ -26,7 +26,6 @@ static inline void rep_nop(void)
>  }
>  
>  #define cpu_relax()		rep_nop()
> -#define cpu_relax_yield()	cpu_relax()
>  
>  #define task_pt_regs(t) (&(t)->thread.regs)
>  
> diff --git a/arch/xtensa/include/asm/processor.h b/arch/xtensa/include/asm/processor.h
> index 7d8d6be..86ffcd6 100644
> --- a/arch/xtensa/include/asm/processor.h
> +++ b/arch/xtensa/include/asm/processor.h
> @@ -206,7 +206,6 @@ extern unsigned long get_wchan(struct task_struct *p);
>  #define KSTK_ESP(tsk)		(task_pt_regs(tsk)->areg[1])
>  
>  #define cpu_relax()  barrier()
> -#define cpu_relax_yield() cpu_relax()
>  
>  /* Special register access. */
>  
> diff --git a/include/linux/sched.h b/include/linux/sched.h
> index 348f51b..c1aa3b0 100644
> --- a/include/linux/sched.h
> +++ b/include/linux/sched.h
> @@ -2444,6 +2444,10 @@ static inline void calc_load_enter_idle(void) { }
>  static inline void calc_load_exit_idle(void) { }
>  #endif /* CONFIG_NO_HZ_COMMON */
>  
> +#ifndef cpu_relax_yield
> +#define cpu_relax_yield() cpu_relax()
> +#endif
> +
>  /*
>   * Do not use outside of architecture code which knows its limitations.
>   *
> -- 
> 2.5.5
> 

-- 
RMK's Patch system: http://www.armlinux.org.uk/developer/patches/
FTTC broadband for 0.8mile line: currently at 9.6Mbps down 400kbps up
according to speedtest.net.

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 1/1] sched: provide common cpu_relax_yield definition
  2016-11-16 12:23 ` Christian Borntraeger
                   ` (3 preceding siblings ...)
  (?)
@ 2016-11-16 12:42 ` Russell King - ARM Linux
  -1 siblings, 0 replies; 11+ messages in thread
From: Russell King - ARM Linux @ 2016-11-16 12:42 UTC (permalink / raw)
  To: Christian Borntraeger
  Cc: linux-arch, linux-s390, kvm, Peter Zijlstra, Catalin Marinas,
	x86, Will Deacon, linux-kernel, Heiko Carstens, virtualization,
	sparclinux, Noam Camus, Nicholas Piggin, Martin Schwidefsky,
	xen-devel, linuxppc-dev, Ingo Molnar

On Wed, Nov 16, 2016 at 01:23:05PM +0100, Christian Borntraeger wrote:
> No need to duplicate the same define everywhere. Since
> the only user is stop-machine and the only provider is
> s390, we can use a default implementation of cpu_relax_yield
> in sched.h.
> 
> Suggested-by: Russell King <linux@armlinux.org.uk>
> Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>

Thanks for that.  (Please change my address above when adding this ack...)

Acked-by: Russell King <rmk+kernel@armlinux.org.uk>

> ---
>  arch/alpha/include/asm/processor.h      | 1 -
>  arch/arc/include/asm/processor.h        | 3 ---
>  arch/arm/include/asm/processor.h        | 2 --
>  arch/arm64/include/asm/processor.h      | 2 --
>  arch/avr32/include/asm/processor.h      | 1 -
>  arch/blackfin/include/asm/processor.h   | 1 -
>  arch/c6x/include/asm/processor.h        | 1 -
>  arch/cris/include/asm/processor.h       | 1 -
>  arch/frv/include/asm/processor.h        | 1 -
>  arch/h8300/include/asm/processor.h      | 1 -
>  arch/hexagon/include/asm/processor.h    | 1 -
>  arch/ia64/include/asm/processor.h       | 1 -
>  arch/m32r/include/asm/processor.h       | 1 -
>  arch/m68k/include/asm/processor.h       | 1 -
>  arch/metag/include/asm/processor.h      | 1 -
>  arch/microblaze/include/asm/processor.h | 1 -
>  arch/mips/include/asm/processor.h       | 1 -
>  arch/mn10300/include/asm/processor.h    | 1 -
>  arch/nios2/include/asm/processor.h      | 1 -
>  arch/openrisc/include/asm/processor.h   | 1 -
>  arch/parisc/include/asm/processor.h     | 1 -
>  arch/powerpc/include/asm/processor.h    | 2 --
>  arch/s390/include/asm/processor.h       | 1 +
>  arch/score/include/asm/processor.h      | 1 -
>  arch/sh/include/asm/processor.h         | 1 -
>  arch/sparc/include/asm/processor_32.h   | 1 -
>  arch/sparc/include/asm/processor_64.h   | 1 -
>  arch/tile/include/asm/processor.h       | 2 --
>  arch/unicore32/include/asm/processor.h  | 1 -
>  arch/x86/include/asm/processor.h        | 2 --
>  arch/x86/um/asm/processor.h             | 1 -
>  arch/xtensa/include/asm/processor.h     | 1 -
>  include/linux/sched.h                   | 4 ++++
>  33 files changed, 5 insertions(+), 38 deletions(-)
> 
> diff --git a/arch/alpha/include/asm/processor.h b/arch/alpha/include/asm/processor.h
> index 31e8dbe..2fec2de 100644
> --- a/arch/alpha/include/asm/processor.h
> +++ b/arch/alpha/include/asm/processor.h
> @@ -58,7 +58,6 @@ unsigned long get_wchan(struct task_struct *p);
>    ((tsk) == current ? rdusp() : task_thread_info(tsk)->pcb.usp)
>  
>  #define cpu_relax()	barrier()
> -#define cpu_relax_yield() cpu_relax()
>  
>  #define ARCH_HAS_PREFETCH
>  #define ARCH_HAS_PREFETCHW
> diff --git a/arch/arc/include/asm/processor.h b/arch/arc/include/asm/processor.h
> index d102a49..6e1242d 100644
> --- a/arch/arc/include/asm/processor.h
> +++ b/arch/arc/include/asm/processor.h
> @@ -60,15 +60,12 @@ struct task_struct;
>  #ifndef CONFIG_EZNPS_MTM_EXT
>  
>  #define cpu_relax()		barrier()
> -#define cpu_relax_yield()	cpu_relax()
>  
>  #else
>  
>  #define cpu_relax()     \
>  	__asm__ __volatile__ (".word %0" : : "i"(CTOP_INST_SCHD_RW) : "memory")
>  
> -#define cpu_relax_yield()	cpu_relax()
> -
>  #endif
>  
>  #define copy_segments(tsk, mm)      do { } while (0)
> diff --git a/arch/arm/include/asm/processor.h b/arch/arm/include/asm/processor.h
> index 9e71c58b..c3d5fc1 100644
> --- a/arch/arm/include/asm/processor.h
> +++ b/arch/arm/include/asm/processor.h
> @@ -82,8 +82,6 @@ unsigned long get_wchan(struct task_struct *p);
>  #define cpu_relax()			barrier()
>  #endif
>  
> -#define cpu_relax_yield()  	              cpu_relax()
> -
>  #define task_pt_regs(p) \
>  	((struct pt_regs *)(THREAD_START_SP + task_stack_page(p)) - 1)
>  
> diff --git a/arch/arm64/include/asm/processor.h b/arch/arm64/include/asm/processor.h
> index 6132f64..747c65a 100644
> --- a/arch/arm64/include/asm/processor.h
> +++ b/arch/arm64/include/asm/processor.h
> @@ -149,8 +149,6 @@ static inline void cpu_relax(void)
>  	asm volatile("yield" ::: "memory");
>  }
>  
> -#define cpu_relax_yield()                     cpu_relax()
> -
>  /* Thread switching */
>  extern struct task_struct *cpu_switch_to(struct task_struct *prev,
>  					 struct task_struct *next);
> diff --git a/arch/avr32/include/asm/processor.h b/arch/avr32/include/asm/processor.h
> index ee62365..972adcc 100644
> --- a/arch/avr32/include/asm/processor.h
> +++ b/arch/avr32/include/asm/processor.h
> @@ -92,7 +92,6 @@ extern struct avr32_cpuinfo boot_cpu_data;
>  #define TASK_UNMAPPED_BASE	(PAGE_ALIGN(TASK_SIZE / 3))
>  
>  #define cpu_relax()		barrier()
> -#define cpu_relax_yield()	cpu_relax()
>  #define cpu_sync_pipeline()	asm volatile("sub pc, -2" : : : "memory")
>  
>  struct cpu_context {
> diff --git a/arch/blackfin/include/asm/processor.h b/arch/blackfin/include/asm/processor.h
> index 57acfb1..85d4af9 100644
> --- a/arch/blackfin/include/asm/processor.h
> +++ b/arch/blackfin/include/asm/processor.h
> @@ -92,7 +92,6 @@ unsigned long get_wchan(struct task_struct *p);
>  #define	KSTK_ESP(tsk)	((tsk) == current ? rdusp() : (tsk)->thread.usp)
>  
>  #define cpu_relax()    	smp_mb()
> -#define cpu_relax_yield()      cpu_relax()
>  
>  /* Get the Silicon Revision of the chip */
>  static inline uint32_t __pure bfin_revid(void)
> diff --git a/arch/c6x/include/asm/processor.h b/arch/c6x/include/asm/processor.h
> index 1fd22e7..b9eb3da 100644
> --- a/arch/c6x/include/asm/processor.h
> +++ b/arch/c6x/include/asm/processor.h
> @@ -121,7 +121,6 @@ extern unsigned long get_wchan(struct task_struct *p);
>  #define KSTK_ESP(task)	(task_pt_regs(task)->sp)
>  
>  #define cpu_relax()		do { } while (0)
> -#define cpu_relax_yield()             cpu_relax()
>  
>  extern const struct seq_operations cpuinfo_op;
>  
> diff --git a/arch/cris/include/asm/processor.h b/arch/cris/include/asm/processor.h
> index 1a57841..15b815d 100644
> --- a/arch/cris/include/asm/processor.h
> +++ b/arch/cris/include/asm/processor.h
> @@ -63,7 +63,6 @@ static inline void release_thread(struct task_struct *dead_task)
>  #define init_stack      (init_thread_union.stack)
>  
>  #define cpu_relax()     barrier()
> -#define cpu_relax_yield() cpu_relax()
>  
>  void default_idle(void);
>  
> diff --git a/arch/frv/include/asm/processor.h b/arch/frv/include/asm/processor.h
> index c1e5f2a..ddaeb9c 100644
> --- a/arch/frv/include/asm/processor.h
> +++ b/arch/frv/include/asm/processor.h
> @@ -107,7 +107,6 @@ unsigned long get_wchan(struct task_struct *p);
>  #define	KSTK_ESP(tsk)	((tsk)->thread.frame0->sp)
>  
>  #define cpu_relax() barrier()
> -#define cpu_relax_yield() cpu_relax()
>  
>  /* data cache prefetch */
>  #define ARCH_HAS_PREFETCH
> diff --git a/arch/h8300/include/asm/processor.h b/arch/h8300/include/asm/processor.h
> index 42d6053..65132d7 100644
> --- a/arch/h8300/include/asm/processor.h
> +++ b/arch/h8300/include/asm/processor.h
> @@ -127,7 +127,6 @@ unsigned long get_wchan(struct task_struct *p);
>  #define	KSTK_ESP(tsk)	((tsk) == current ? rdusp() : (tsk)->thread.usp)
>  
>  #define cpu_relax()    barrier()
> -#define cpu_relax_yield() cpu_relax()
>  
>  #define HARD_RESET_NOW() ({		\
>  	local_irq_disable();		\
> diff --git a/arch/hexagon/include/asm/processor.h b/arch/hexagon/include/asm/processor.h
> index 5d694cc..45a8254 100644
> --- a/arch/hexagon/include/asm/processor.h
> +++ b/arch/hexagon/include/asm/processor.h
> @@ -56,7 +56,6 @@ struct thread_struct {
>  }
>  
>  #define cpu_relax() __vmyield()
> -#define cpu_relax_yield() cpu_relax()
>  
>  /*
>   * Decides where the kernel will search for a free chunk of vm space during
> diff --git a/arch/ia64/include/asm/processor.h b/arch/ia64/include/asm/processor.h
> index 0c2c3b2..03911a3 100644
> --- a/arch/ia64/include/asm/processor.h
> +++ b/arch/ia64/include/asm/processor.h
> @@ -547,7 +547,6 @@ ia64_eoi (void)
>  }
>  
>  #define cpu_relax()	ia64_hint(ia64_hint_pause)
> -#define cpu_relax_yield() cpu_relax()
>  
>  static inline int
>  ia64_get_irr(unsigned int vector)
> diff --git a/arch/m32r/include/asm/processor.h b/arch/m32r/include/asm/processor.h
> index 9b83a13..5767367 100644
> --- a/arch/m32r/include/asm/processor.h
> +++ b/arch/m32r/include/asm/processor.h
> @@ -133,6 +133,5 @@ unsigned long get_wchan(struct task_struct *p);
>  #define KSTK_ESP(tsk)  ((tsk)->thread.sp)
>  
>  #define cpu_relax()	barrier()
> -#define cpu_relax_yield() cpu_relax()
>  
>  #endif /* _ASM_M32R_PROCESSOR_H */
> diff --git a/arch/m68k/include/asm/processor.h b/arch/m68k/include/asm/processor.h
> index b0d0442..f5f790c 100644
> --- a/arch/m68k/include/asm/processor.h
> +++ b/arch/m68k/include/asm/processor.h
> @@ -156,6 +156,5 @@ unsigned long get_wchan(struct task_struct *p);
>  #define task_pt_regs(tsk)	((struct pt_regs *) ((tsk)->thread.esp0))
>  
>  #define cpu_relax()	barrier()
> -#define cpu_relax_yield() cpu_relax()
>  
>  #endif
> diff --git a/arch/metag/include/asm/processor.h b/arch/metag/include/asm/processor.h
> index ee302a6..ec6a490 100644
> --- a/arch/metag/include/asm/processor.h
> +++ b/arch/metag/include/asm/processor.h
> @@ -152,7 +152,6 @@ unsigned long get_wchan(struct task_struct *p);
>  #define user_stack_pointer(regs)        ((regs)->ctx.AX[0].U0)
>  
>  #define cpu_relax()     barrier()
> -#define cpu_relax_yield() cpu_relax()
>  
>  extern void setup_priv(void);
>  
> diff --git a/arch/microblaze/include/asm/processor.h b/arch/microblaze/include/asm/processor.h
> index 08ec1f7..37ef196 100644
> --- a/arch/microblaze/include/asm/processor.h
> +++ b/arch/microblaze/include/asm/processor.h
> @@ -22,7 +22,6 @@
>  extern const struct seq_operations cpuinfo_op;
>  
>  # define cpu_relax()		barrier()
> -# define cpu_relax_yield() cpu_relax()
>  
>  #define task_pt_regs(tsk) \
>  		(((struct pt_regs *)(THREAD_SIZE + task_stack_page(tsk))) - 1)
> diff --git a/arch/mips/include/asm/processor.h b/arch/mips/include/asm/processor.h
> index 8ea95e7..95b8c47 100644
> --- a/arch/mips/include/asm/processor.h
> +++ b/arch/mips/include/asm/processor.h
> @@ -389,7 +389,6 @@ unsigned long get_wchan(struct task_struct *p);
>  #define KSTK_STATUS(tsk) (task_pt_regs(tsk)->cp0_status)
>  
>  #define cpu_relax()	barrier()
> -#define cpu_relax_yield() cpu_relax()
>  
>  /*
>   * Return_address is a replacement for __builtin_return_address(count)
> diff --git a/arch/mn10300/include/asm/processor.h b/arch/mn10300/include/asm/processor.h
> index d11397b..18e17ab 100644
> --- a/arch/mn10300/include/asm/processor.h
> +++ b/arch/mn10300/include/asm/processor.h
> @@ -69,7 +69,6 @@ extern void print_cpu_info(struct mn10300_cpuinfo *);
>  extern void dodgy_tsc(void);
>  
>  #define cpu_relax() barrier()
> -#define cpu_relax_yield() cpu_relax()
>  
>  /*
>   * User space process size: 1.75GB (default).
> diff --git a/arch/nios2/include/asm/processor.h b/arch/nios2/include/asm/processor.h
> index d32c176..3bbbc3d 100644
> --- a/arch/nios2/include/asm/processor.h
> +++ b/arch/nios2/include/asm/processor.h
> @@ -88,7 +88,6 @@ extern unsigned long get_wchan(struct task_struct *p);
>  #define KSTK_ESP(tsk)	((tsk)->thread.kregs->sp)
>  
>  #define cpu_relax()	barrier()
> -#define cpu_relax_yield() cpu_relax()
>  
>  #endif /* __ASSEMBLY__ */
>  
> diff --git a/arch/openrisc/include/asm/processor.h b/arch/openrisc/include/asm/processor.h
> index 7f47fc7..a908e6c 100644
> --- a/arch/openrisc/include/asm/processor.h
> +++ b/arch/openrisc/include/asm/processor.h
> @@ -92,7 +92,6 @@ extern unsigned long thread_saved_pc(struct task_struct *t);
>  #define init_stack      (init_thread_union.stack)
>  
>  #define cpu_relax()     barrier()
> -#define cpu_relax_yield() cpu_relax()
>  
>  #endif /* __ASSEMBLY__ */
>  #endif /* __ASM_OPENRISC_PROCESSOR_H */
> diff --git a/arch/parisc/include/asm/processor.h b/arch/parisc/include/asm/processor.h
> index a4a07f4..ca40741 100644
> --- a/arch/parisc/include/asm/processor.h
> +++ b/arch/parisc/include/asm/processor.h
> @@ -309,7 +309,6 @@ extern unsigned long get_wchan(struct task_struct *p);
>  #define KSTK_ESP(tsk)	((tsk)->thread.regs.gr[30])
>  
>  #define cpu_relax()	barrier()
> -#define cpu_relax_yield() cpu_relax()
>  
>  /*
>   * parisc_requires_coherency() is used to identify the combined VIPT/PIPT
> diff --git a/arch/powerpc/include/asm/processor.h b/arch/powerpc/include/asm/processor.h
> index 5684e68..dac83fc 100644
> --- a/arch/powerpc/include/asm/processor.h
> +++ b/arch/powerpc/include/asm/processor.h
> @@ -404,8 +404,6 @@ static inline unsigned long __pack_fe01(unsigned int fpmode)
>  #define cpu_relax()	barrier()
>  #endif
>  
> -#define cpu_relax_yield() cpu_relax()
> -
>  /* Check that a certain kernel stack pointer is valid in task_struct p */
>  int validate_sp(unsigned long sp, struct task_struct *p,
>                         unsigned long nbytes);
> diff --git a/arch/s390/include/asm/processor.h b/arch/s390/include/asm/processor.h
> index 17c001a..9eab1cb 100644
> --- a/arch/s390/include/asm/processor.h
> +++ b/arch/s390/include/asm/processor.h
> @@ -234,6 +234,7 @@ static inline unsigned short stap(void)
>  /*
>   * Give up the time slice of the virtual PU.
>   */
> +#define cpu_relax_yield cpu_relax_yield
>  void cpu_relax_yield(void);
>  
>  #define cpu_relax() barrier()
> diff --git a/arch/score/include/asm/processor.h b/arch/score/include/asm/processor.h
> index a1e97c0..d9a922d 100644
> --- a/arch/score/include/asm/processor.h
> +++ b/arch/score/include/asm/processor.h
> @@ -24,7 +24,6 @@ extern unsigned long get_wchan(struct task_struct *p);
>  #define current_text_addr() ({ __label__ _l; _l: &&_l; })
>  
>  #define cpu_relax()		barrier()
> -#define cpu_relax_yield()	cpu_relax()
>  #define release_thread(thread)	do {} while (0)
>  
>  /*
> diff --git a/arch/sh/include/asm/processor.h b/arch/sh/include/asm/processor.h
> index 9454ff1..5addd69 100644
> --- a/arch/sh/include/asm/processor.h
> +++ b/arch/sh/include/asm/processor.h
> @@ -97,7 +97,6 @@ extern struct sh_cpuinfo cpu_data[];
>  
>  #define cpu_sleep()	__asm__ __volatile__ ("sleep" : : : "memory")
>  #define cpu_relax()	barrier()
> -#define cpu_relax_yield() cpu_relax()
>  
>  void default_idle(void);
>  void stop_this_cpu(void *);
> diff --git a/arch/sparc/include/asm/processor_32.h b/arch/sparc/include/asm/processor_32.h
> index fc32b73..365d4cb 100644
> --- a/arch/sparc/include/asm/processor_32.h
> +++ b/arch/sparc/include/asm/processor_32.h
> @@ -119,7 +119,6 @@ extern struct task_struct *last_task_used_math;
>  int do_mathemu(struct pt_regs *regs, struct task_struct *fpt);
>  
>  #define cpu_relax()	barrier()
> -#define cpu_relax_yield() cpu_relax()
>  
>  extern void (*sparc_idle)(void);
>  
> diff --git a/arch/sparc/include/asm/processor_64.h b/arch/sparc/include/asm/processor_64.h
> index 12787df..6448cfc 100644
> --- a/arch/sparc/include/asm/processor_64.h
> +++ b/arch/sparc/include/asm/processor_64.h
> @@ -216,7 +216,6 @@ unsigned long get_wchan(struct task_struct *task);
>  				     "nop\n\t"				\
>  				     ".previous"			\
>  				     ::: "memory")
> -#define cpu_relax_yield() cpu_relax()
>  
>  /* Prefetch support.  This is tuned for UltraSPARC-III and later.
>   * UltraSPARC-I will treat these as nops, and UltraSPARC-II has
> diff --git a/arch/tile/include/asm/processor.h b/arch/tile/include/asm/processor.h
> index c1c228b..0bc9968 100644
> --- a/arch/tile/include/asm/processor.h
> +++ b/arch/tile/include/asm/processor.h
> @@ -264,8 +264,6 @@ static inline void cpu_relax(void)
>  	barrier();
>  }
>  
> -#define cpu_relax_yield() cpu_relax()
> -
>  /* Info on this processor (see fs/proc/cpuinfo.c) */
>  struct seq_operations;
>  extern const struct seq_operations cpuinfo_op;
> diff --git a/arch/unicore32/include/asm/processor.h b/arch/unicore32/include/asm/processor.h
> index eeefe7c..4eaa421 100644
> --- a/arch/unicore32/include/asm/processor.h
> +++ b/arch/unicore32/include/asm/processor.h
> @@ -71,7 +71,6 @@ extern void release_thread(struct task_struct *);
>  unsigned long get_wchan(struct task_struct *p);
>  
>  #define cpu_relax()			barrier()
> -#define cpu_relax_yield()		cpu_relax()
>  
>  #define task_pt_regs(p) \
>  	((struct pt_regs *)(THREAD_START_SP + task_stack_page(p)) - 1)
> diff --git a/arch/x86/include/asm/processor.h b/arch/x86/include/asm/processor.h
> index 7513c99..c84605b 100644
> --- a/arch/x86/include/asm/processor.h
> +++ b/arch/x86/include/asm/processor.h
> @@ -588,8 +588,6 @@ static __always_inline void cpu_relax(void)
>  	rep_nop();
>  }
>  
> -#define cpu_relax_yield() cpu_relax()
> -
>  /* Stop speculative execution and prefetching of modified code. */
>  static inline void sync_core(void)
>  {
> diff --git a/arch/x86/um/asm/processor.h b/arch/x86/um/asm/processor.h
> index b4bd63b..c77db22 100644
> --- a/arch/x86/um/asm/processor.h
> +++ b/arch/x86/um/asm/processor.h
> @@ -26,7 +26,6 @@ static inline void rep_nop(void)
>  }
>  
>  #define cpu_relax()		rep_nop()
> -#define cpu_relax_yield()	cpu_relax()
>  
>  #define task_pt_regs(t) (&(t)->thread.regs)
>  
> diff --git a/arch/xtensa/include/asm/processor.h b/arch/xtensa/include/asm/processor.h
> index 7d8d6be..86ffcd6 100644
> --- a/arch/xtensa/include/asm/processor.h
> +++ b/arch/xtensa/include/asm/processor.h
> @@ -206,7 +206,6 @@ extern unsigned long get_wchan(struct task_struct *p);
>  #define KSTK_ESP(tsk)		(task_pt_regs(tsk)->areg[1])
>  
>  #define cpu_relax()  barrier()
> -#define cpu_relax_yield() cpu_relax()
>  
>  /* Special register access. */
>  
> diff --git a/include/linux/sched.h b/include/linux/sched.h
> index 348f51b..c1aa3b0 100644
> --- a/include/linux/sched.h
> +++ b/include/linux/sched.h
> @@ -2444,6 +2444,10 @@ static inline void calc_load_enter_idle(void) { }
>  static inline void calc_load_exit_idle(void) { }
>  #endif /* CONFIG_NO_HZ_COMMON */
>  
> +#ifndef cpu_relax_yield
> +#define cpu_relax_yield() cpu_relax()
> +#endif
> +
>  /*
>   * Do not use outside of architecture code which knows its limitations.
>   *
> -- 
> 2.5.5
> 

-- 
RMK's Patch system: http://www.armlinux.org.uk/developer/patches/
FTTC broadband for 0.8mile line: currently at 9.6Mbps down 400kbps up
according to speedtest.net.

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [tip:locking/core] locking/core: Provide common cpu_relax_yield() definition
  2016-11-16 12:23 ` Christian Borntraeger
                   ` (5 preceding siblings ...)
  (?)
@ 2016-11-17  7:48 ` tip-bot for Christian Borntraeger
  -1 siblings, 0 replies; 11+ messages in thread
From: tip-bot for Christian Borntraeger @ 2016-11-17  7:48 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: noamc, heiko.carstens, hpa, akpm, david, paulmck, borntraeger,
	rmk+kernel, schwidefsky, catalin.marinas, linux-kernel,
	will.deacon, tglx, peterz, linux-s390, npiggin, torvalds, mingo

Commit-ID:  6d0d287891a022ebba572327cbd70b5de69a63a2
Gitweb:     http://git.kernel.org/tip/6d0d287891a022ebba572327cbd70b5de69a63a2
Author:     Christian Borntraeger <borntraeger@de.ibm.com>
AuthorDate: Wed, 16 Nov 2016 13:23:05 +0100
Committer:  Ingo Molnar <mingo@kernel.org>
CommitDate: Thu, 17 Nov 2016 08:17:36 +0100

locking/core: Provide common cpu_relax_yield() definition

No need to duplicate the same define everywhere. Since
the only user is stop-machine and the only provider is
s390, we can use a default implementation of cpu_relax_yield()
in sched.h.

Suggested-by: Russell King <rmk+kernel@armlinux.org.uk>
Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
Reviewed-by: David Hildenbrand <david@redhat.com>
Acked-by: Russell King <rmk+kernel@armlinux.org.uk>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
Cc: Nicholas Piggin <npiggin@gmail.com>
Cc: Noam Camus <noamc@ezchip.com>
Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Will Deacon <will.deacon@arm.com>
Cc: kvm@vger.kernel.org
Cc: linux-arch@vger.kernel.org
Cc: linux-s390 <linux-s390@vger.kernel.org>
Cc: linuxppc-dev@lists.ozlabs.org
Cc: sparclinux@vger.kernel.org
Cc: virtualization@lists.linux-foundation.org
Cc: xen-devel@lists.xenproject.org
Link: http://lkml.kernel.org/r/1479298985-191589-1-git-send-email-borntraeger@de.ibm.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
---
 arch/alpha/include/asm/processor.h      | 1 -
 arch/arc/include/asm/processor.h        | 3 ---
 arch/arm/include/asm/processor.h        | 2 --
 arch/arm64/include/asm/processor.h      | 2 --
 arch/avr32/include/asm/processor.h      | 1 -
 arch/blackfin/include/asm/processor.h   | 1 -
 arch/c6x/include/asm/processor.h        | 1 -
 arch/cris/include/asm/processor.h       | 1 -
 arch/frv/include/asm/processor.h        | 1 -
 arch/h8300/include/asm/processor.h      | 1 -
 arch/hexagon/include/asm/processor.h    | 1 -
 arch/ia64/include/asm/processor.h       | 1 -
 arch/m32r/include/asm/processor.h       | 1 -
 arch/m68k/include/asm/processor.h       | 1 -
 arch/metag/include/asm/processor.h      | 1 -
 arch/microblaze/include/asm/processor.h | 1 -
 arch/mips/include/asm/processor.h       | 1 -
 arch/mn10300/include/asm/processor.h    | 1 -
 arch/nios2/include/asm/processor.h      | 1 -
 arch/openrisc/include/asm/processor.h   | 1 -
 arch/parisc/include/asm/processor.h     | 1 -
 arch/powerpc/include/asm/processor.h    | 2 --
 arch/s390/include/asm/processor.h       | 1 +
 arch/score/include/asm/processor.h      | 1 -
 arch/sh/include/asm/processor.h         | 1 -
 arch/sparc/include/asm/processor_32.h   | 1 -
 arch/sparc/include/asm/processor_64.h   | 1 -
 arch/tile/include/asm/processor.h       | 2 --
 arch/unicore32/include/asm/processor.h  | 1 -
 arch/x86/include/asm/processor.h        | 2 --
 arch/x86/um/asm/processor.h             | 1 -
 arch/xtensa/include/asm/processor.h     | 1 -
 include/linux/sched.h                   | 4 ++++
 33 files changed, 5 insertions(+), 38 deletions(-)

diff --git a/arch/alpha/include/asm/processor.h b/arch/alpha/include/asm/processor.h
index 31e8dbe..2fec2de 100644
--- a/arch/alpha/include/asm/processor.h
+++ b/arch/alpha/include/asm/processor.h
@@ -58,7 +58,6 @@ unsigned long get_wchan(struct task_struct *p);
   ((tsk) == current ? rdusp() : task_thread_info(tsk)->pcb.usp)
 
 #define cpu_relax()	barrier()
-#define cpu_relax_yield() cpu_relax()
 
 #define ARCH_HAS_PREFETCH
 #define ARCH_HAS_PREFETCHW
diff --git a/arch/arc/include/asm/processor.h b/arch/arc/include/asm/processor.h
index d102a49..6e1242d 100644
--- a/arch/arc/include/asm/processor.h
+++ b/arch/arc/include/asm/processor.h
@@ -60,15 +60,12 @@ struct task_struct;
 #ifndef CONFIG_EZNPS_MTM_EXT
 
 #define cpu_relax()		barrier()
-#define cpu_relax_yield()	cpu_relax()
 
 #else
 
 #define cpu_relax()     \
 	__asm__ __volatile__ (".word %0" : : "i"(CTOP_INST_SCHD_RW) : "memory")
 
-#define cpu_relax_yield()	cpu_relax()
-
 #endif
 
 #define copy_segments(tsk, mm)      do { } while (0)
diff --git a/arch/arm/include/asm/processor.h b/arch/arm/include/asm/processor.h
index 9e71c58b..c3d5fc1 100644
--- a/arch/arm/include/asm/processor.h
+++ b/arch/arm/include/asm/processor.h
@@ -82,8 +82,6 @@ unsigned long get_wchan(struct task_struct *p);
 #define cpu_relax()			barrier()
 #endif
 
-#define cpu_relax_yield()  	              cpu_relax()
-
 #define task_pt_regs(p) \
 	((struct pt_regs *)(THREAD_START_SP + task_stack_page(p)) - 1)
 
diff --git a/arch/arm64/include/asm/processor.h b/arch/arm64/include/asm/processor.h
index 6132f64..747c65a 100644
--- a/arch/arm64/include/asm/processor.h
+++ b/arch/arm64/include/asm/processor.h
@@ -149,8 +149,6 @@ static inline void cpu_relax(void)
 	asm volatile("yield" ::: "memory");
 }
 
-#define cpu_relax_yield()                     cpu_relax()
-
 /* Thread switching */
 extern struct task_struct *cpu_switch_to(struct task_struct *prev,
 					 struct task_struct *next);
diff --git a/arch/avr32/include/asm/processor.h b/arch/avr32/include/asm/processor.h
index ee62365..972adcc 100644
--- a/arch/avr32/include/asm/processor.h
+++ b/arch/avr32/include/asm/processor.h
@@ -92,7 +92,6 @@ extern struct avr32_cpuinfo boot_cpu_data;
 #define TASK_UNMAPPED_BASE	(PAGE_ALIGN(TASK_SIZE / 3))
 
 #define cpu_relax()		barrier()
-#define cpu_relax_yield()	cpu_relax()
 #define cpu_sync_pipeline()	asm volatile("sub pc, -2" : : : "memory")
 
 struct cpu_context {
diff --git a/arch/blackfin/include/asm/processor.h b/arch/blackfin/include/asm/processor.h
index 57acfb1..85d4af9 100644
--- a/arch/blackfin/include/asm/processor.h
+++ b/arch/blackfin/include/asm/processor.h
@@ -92,7 +92,6 @@ unsigned long get_wchan(struct task_struct *p);
 #define	KSTK_ESP(tsk)	((tsk) == current ? rdusp() : (tsk)->thread.usp)
 
 #define cpu_relax()    	smp_mb()
-#define cpu_relax_yield()      cpu_relax()
 
 /* Get the Silicon Revision of the chip */
 static inline uint32_t __pure bfin_revid(void)
diff --git a/arch/c6x/include/asm/processor.h b/arch/c6x/include/asm/processor.h
index 1fd22e7..b9eb3da 100644
--- a/arch/c6x/include/asm/processor.h
+++ b/arch/c6x/include/asm/processor.h
@@ -121,7 +121,6 @@ extern unsigned long get_wchan(struct task_struct *p);
 #define KSTK_ESP(task)	(task_pt_regs(task)->sp)
 
 #define cpu_relax()		do { } while (0)
-#define cpu_relax_yield()             cpu_relax()
 
 extern const struct seq_operations cpuinfo_op;
 
diff --git a/arch/cris/include/asm/processor.h b/arch/cris/include/asm/processor.h
index 1a57841..15b815d 100644
--- a/arch/cris/include/asm/processor.h
+++ b/arch/cris/include/asm/processor.h
@@ -63,7 +63,6 @@ static inline void release_thread(struct task_struct *dead_task)
 #define init_stack      (init_thread_union.stack)
 
 #define cpu_relax()     barrier()
-#define cpu_relax_yield() cpu_relax()
 
 void default_idle(void);
 
diff --git a/arch/frv/include/asm/processor.h b/arch/frv/include/asm/processor.h
index c1e5f2a..ddaeb9c 100644
--- a/arch/frv/include/asm/processor.h
+++ b/arch/frv/include/asm/processor.h
@@ -107,7 +107,6 @@ unsigned long get_wchan(struct task_struct *p);
 #define	KSTK_ESP(tsk)	((tsk)->thread.frame0->sp)
 
 #define cpu_relax() barrier()
-#define cpu_relax_yield() cpu_relax()
 
 /* data cache prefetch */
 #define ARCH_HAS_PREFETCH
diff --git a/arch/h8300/include/asm/processor.h b/arch/h8300/include/asm/processor.h
index 42d6053..65132d7 100644
--- a/arch/h8300/include/asm/processor.h
+++ b/arch/h8300/include/asm/processor.h
@@ -127,7 +127,6 @@ unsigned long get_wchan(struct task_struct *p);
 #define	KSTK_ESP(tsk)	((tsk) == current ? rdusp() : (tsk)->thread.usp)
 
 #define cpu_relax()    barrier()
-#define cpu_relax_yield() cpu_relax()
 
 #define HARD_RESET_NOW() ({		\
 	local_irq_disable();		\
diff --git a/arch/hexagon/include/asm/processor.h b/arch/hexagon/include/asm/processor.h
index 5d694cc..45a8254 100644
--- a/arch/hexagon/include/asm/processor.h
+++ b/arch/hexagon/include/asm/processor.h
@@ -56,7 +56,6 @@ struct thread_struct {
 }
 
 #define cpu_relax() __vmyield()
-#define cpu_relax_yield() cpu_relax()
 
 /*
  * Decides where the kernel will search for a free chunk of vm space during
diff --git a/arch/ia64/include/asm/processor.h b/arch/ia64/include/asm/processor.h
index 0c2c3b2..03911a3 100644
--- a/arch/ia64/include/asm/processor.h
+++ b/arch/ia64/include/asm/processor.h
@@ -547,7 +547,6 @@ ia64_eoi (void)
 }
 
 #define cpu_relax()	ia64_hint(ia64_hint_pause)
-#define cpu_relax_yield() cpu_relax()
 
 static inline int
 ia64_get_irr(unsigned int vector)
diff --git a/arch/m32r/include/asm/processor.h b/arch/m32r/include/asm/processor.h
index 9b83a13..5767367 100644
--- a/arch/m32r/include/asm/processor.h
+++ b/arch/m32r/include/asm/processor.h
@@ -133,6 +133,5 @@ unsigned long get_wchan(struct task_struct *p);
 #define KSTK_ESP(tsk)  ((tsk)->thread.sp)
 
 #define cpu_relax()	barrier()
-#define cpu_relax_yield() cpu_relax()
 
 #endif /* _ASM_M32R_PROCESSOR_H */
diff --git a/arch/m68k/include/asm/processor.h b/arch/m68k/include/asm/processor.h
index b0d0442..f5f790c 100644
--- a/arch/m68k/include/asm/processor.h
+++ b/arch/m68k/include/asm/processor.h
@@ -156,6 +156,5 @@ unsigned long get_wchan(struct task_struct *p);
 #define task_pt_regs(tsk)	((struct pt_regs *) ((tsk)->thread.esp0))
 
 #define cpu_relax()	barrier()
-#define cpu_relax_yield() cpu_relax()
 
 #endif
diff --git a/arch/metag/include/asm/processor.h b/arch/metag/include/asm/processor.h
index ee302a6..ec6a490 100644
--- a/arch/metag/include/asm/processor.h
+++ b/arch/metag/include/asm/processor.h
@@ -152,7 +152,6 @@ unsigned long get_wchan(struct task_struct *p);
 #define user_stack_pointer(regs)        ((regs)->ctx.AX[0].U0)
 
 #define cpu_relax()     barrier()
-#define cpu_relax_yield() cpu_relax()
 
 extern void setup_priv(void);
 
diff --git a/arch/microblaze/include/asm/processor.h b/arch/microblaze/include/asm/processor.h
index 08ec1f7..37ef196 100644
--- a/arch/microblaze/include/asm/processor.h
+++ b/arch/microblaze/include/asm/processor.h
@@ -22,7 +22,6 @@
 extern const struct seq_operations cpuinfo_op;
 
 # define cpu_relax()		barrier()
-# define cpu_relax_yield() cpu_relax()
 
 #define task_pt_regs(tsk) \
 		(((struct pt_regs *)(THREAD_SIZE + task_stack_page(tsk))) - 1)
diff --git a/arch/mips/include/asm/processor.h b/arch/mips/include/asm/processor.h
index 8ea95e7..95b8c47 100644
--- a/arch/mips/include/asm/processor.h
+++ b/arch/mips/include/asm/processor.h
@@ -389,7 +389,6 @@ unsigned long get_wchan(struct task_struct *p);
 #define KSTK_STATUS(tsk) (task_pt_regs(tsk)->cp0_status)
 
 #define cpu_relax()	barrier()
-#define cpu_relax_yield() cpu_relax()
 
 /*
  * Return_address is a replacement for __builtin_return_address(count)
diff --git a/arch/mn10300/include/asm/processor.h b/arch/mn10300/include/asm/processor.h
index d11397b..18e17ab 100644
--- a/arch/mn10300/include/asm/processor.h
+++ b/arch/mn10300/include/asm/processor.h
@@ -69,7 +69,6 @@ extern void print_cpu_info(struct mn10300_cpuinfo *);
 extern void dodgy_tsc(void);
 
 #define cpu_relax() barrier()
-#define cpu_relax_yield() cpu_relax()
 
 /*
  * User space process size: 1.75GB (default).
diff --git a/arch/nios2/include/asm/processor.h b/arch/nios2/include/asm/processor.h
index d32c176..3bbbc3d 100644
--- a/arch/nios2/include/asm/processor.h
+++ b/arch/nios2/include/asm/processor.h
@@ -88,7 +88,6 @@ extern unsigned long get_wchan(struct task_struct *p);
 #define KSTK_ESP(tsk)	((tsk)->thread.kregs->sp)
 
 #define cpu_relax()	barrier()
-#define cpu_relax_yield() cpu_relax()
 
 #endif /* __ASSEMBLY__ */
 
diff --git a/arch/openrisc/include/asm/processor.h b/arch/openrisc/include/asm/processor.h
index 7f47fc7..a908e6c 100644
--- a/arch/openrisc/include/asm/processor.h
+++ b/arch/openrisc/include/asm/processor.h
@@ -92,7 +92,6 @@ extern unsigned long thread_saved_pc(struct task_struct *t);
 #define init_stack      (init_thread_union.stack)
 
 #define cpu_relax()     barrier()
-#define cpu_relax_yield() cpu_relax()
 
 #endif /* __ASSEMBLY__ */
 #endif /* __ASM_OPENRISC_PROCESSOR_H */
diff --git a/arch/parisc/include/asm/processor.h b/arch/parisc/include/asm/processor.h
index a4a07f4..ca40741 100644
--- a/arch/parisc/include/asm/processor.h
+++ b/arch/parisc/include/asm/processor.h
@@ -309,7 +309,6 @@ extern unsigned long get_wchan(struct task_struct *p);
 #define KSTK_ESP(tsk)	((tsk)->thread.regs.gr[30])
 
 #define cpu_relax()	barrier()
-#define cpu_relax_yield() cpu_relax()
 
 /*
  * parisc_requires_coherency() is used to identify the combined VIPT/PIPT
diff --git a/arch/powerpc/include/asm/processor.h b/arch/powerpc/include/asm/processor.h
index 5684e68..dac83fc 100644
--- a/arch/powerpc/include/asm/processor.h
+++ b/arch/powerpc/include/asm/processor.h
@@ -404,8 +404,6 @@ static inline unsigned long __pack_fe01(unsigned int fpmode)
 #define cpu_relax()	barrier()
 #endif
 
-#define cpu_relax_yield() cpu_relax()
-
 /* Check that a certain kernel stack pointer is valid in task_struct p */
 int validate_sp(unsigned long sp, struct task_struct *p,
                        unsigned long nbytes);
diff --git a/arch/s390/include/asm/processor.h b/arch/s390/include/asm/processor.h
index 9e32f25..9d3a21a 100644
--- a/arch/s390/include/asm/processor.h
+++ b/arch/s390/include/asm/processor.h
@@ -234,6 +234,7 @@ static inline unsigned short stap(void)
 /*
  * Give up the time slice of the virtual PU.
  */
+#define cpu_relax_yield cpu_relax_yield
 void cpu_relax_yield(void);
 
 #define cpu_relax() barrier()
diff --git a/arch/score/include/asm/processor.h b/arch/score/include/asm/processor.h
index a1e97c0..d9a922d 100644
--- a/arch/score/include/asm/processor.h
+++ b/arch/score/include/asm/processor.h
@@ -24,7 +24,6 @@ extern unsigned long get_wchan(struct task_struct *p);
 #define current_text_addr() ({ __label__ _l; _l: &&_l; })
 
 #define cpu_relax()		barrier()
-#define cpu_relax_yield()	cpu_relax()
 #define release_thread(thread)	do {} while (0)
 
 /*
diff --git a/arch/sh/include/asm/processor.h b/arch/sh/include/asm/processor.h
index 9454ff1..5addd69 100644
--- a/arch/sh/include/asm/processor.h
+++ b/arch/sh/include/asm/processor.h
@@ -97,7 +97,6 @@ extern struct sh_cpuinfo cpu_data[];
 
 #define cpu_sleep()	__asm__ __volatile__ ("sleep" : : : "memory")
 #define cpu_relax()	barrier()
-#define cpu_relax_yield() cpu_relax()
 
 void default_idle(void);
 void stop_this_cpu(void *);
diff --git a/arch/sparc/include/asm/processor_32.h b/arch/sparc/include/asm/processor_32.h
index fc32b73..365d4cb 100644
--- a/arch/sparc/include/asm/processor_32.h
+++ b/arch/sparc/include/asm/processor_32.h
@@ -119,7 +119,6 @@ extern struct task_struct *last_task_used_math;
 int do_mathemu(struct pt_regs *regs, struct task_struct *fpt);
 
 #define cpu_relax()	barrier()
-#define cpu_relax_yield() cpu_relax()
 
 extern void (*sparc_idle)(void);
 
diff --git a/arch/sparc/include/asm/processor_64.h b/arch/sparc/include/asm/processor_64.h
index 12787df..6448cfc 100644
--- a/arch/sparc/include/asm/processor_64.h
+++ b/arch/sparc/include/asm/processor_64.h
@@ -216,7 +216,6 @@ unsigned long get_wchan(struct task_struct *task);
 				     "nop\n\t"				\
 				     ".previous"			\
 				     ::: "memory")
-#define cpu_relax_yield() cpu_relax()
 
 /* Prefetch support.  This is tuned for UltraSPARC-III and later.
  * UltraSPARC-I will treat these as nops, and UltraSPARC-II has
diff --git a/arch/tile/include/asm/processor.h b/arch/tile/include/asm/processor.h
index c1c228b..0bc9968 100644
--- a/arch/tile/include/asm/processor.h
+++ b/arch/tile/include/asm/processor.h
@@ -264,8 +264,6 @@ static inline void cpu_relax(void)
 	barrier();
 }
 
-#define cpu_relax_yield() cpu_relax()
-
 /* Info on this processor (see fs/proc/cpuinfo.c) */
 struct seq_operations;
 extern const struct seq_operations cpuinfo_op;
diff --git a/arch/unicore32/include/asm/processor.h b/arch/unicore32/include/asm/processor.h
index eeefe7c..4eaa421 100644
--- a/arch/unicore32/include/asm/processor.h
+++ b/arch/unicore32/include/asm/processor.h
@@ -71,7 +71,6 @@ extern void release_thread(struct task_struct *);
 unsigned long get_wchan(struct task_struct *p);
 
 #define cpu_relax()			barrier()
-#define cpu_relax_yield()		cpu_relax()
 
 #define task_pt_regs(p) \
 	((struct pt_regs *)(THREAD_START_SP + task_stack_page(p)) - 1)
diff --git a/arch/x86/include/asm/processor.h b/arch/x86/include/asm/processor.h
index 7513c99..c84605b 100644
--- a/arch/x86/include/asm/processor.h
+++ b/arch/x86/include/asm/processor.h
@@ -588,8 +588,6 @@ static __always_inline void cpu_relax(void)
 	rep_nop();
 }
 
-#define cpu_relax_yield() cpu_relax()
-
 /* Stop speculative execution and prefetching of modified code. */
 static inline void sync_core(void)
 {
diff --git a/arch/x86/um/asm/processor.h b/arch/x86/um/asm/processor.h
index b4bd63b..c77db22 100644
--- a/arch/x86/um/asm/processor.h
+++ b/arch/x86/um/asm/processor.h
@@ -26,7 +26,6 @@ static inline void rep_nop(void)
 }
 
 #define cpu_relax()		rep_nop()
-#define cpu_relax_yield()	cpu_relax()
 
 #define task_pt_regs(t) (&(t)->thread.regs)
 
diff --git a/arch/xtensa/include/asm/processor.h b/arch/xtensa/include/asm/processor.h
index 7d8d6be..86ffcd6 100644
--- a/arch/xtensa/include/asm/processor.h
+++ b/arch/xtensa/include/asm/processor.h
@@ -206,7 +206,6 @@ extern unsigned long get_wchan(struct task_struct *p);
 #define KSTK_ESP(tsk)		(task_pt_regs(tsk)->areg[1])
 
 #define cpu_relax()  barrier()
-#define cpu_relax_yield() cpu_relax()
 
 /* Special register access. */
 
diff --git a/include/linux/sched.h b/include/linux/sched.h
index 348f51b..c1aa3b0 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -2444,6 +2444,10 @@ static inline void calc_load_enter_idle(void) { }
 static inline void calc_load_exit_idle(void) { }
 #endif /* CONFIG_NO_HZ_COMMON */
 
+#ifndef cpu_relax_yield
+#define cpu_relax_yield() cpu_relax()
+#endif
+
 /*
  * Do not use outside of architecture code which knows its limitations.
  *

^ permalink raw reply related	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2016-11-17  7:50 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-11-16 12:23 [PATCH 1/1] sched: provide common cpu_relax_yield definition Christian Borntraeger
2016-11-16 12:23 ` Christian Borntraeger
2016-11-16 12:34 ` David Hildenbrand
2016-11-16 12:34   ` David Hildenbrand
2016-11-16 12:34   ` David Hildenbrand
2016-11-16 12:34 ` David Hildenbrand
2016-11-16 12:42 ` Russell King - ARM Linux
2016-11-16 12:42   ` Russell King - ARM Linux
2016-11-16 12:42 ` Russell King - ARM Linux
2016-11-16 12:42 ` Russell King - ARM Linux
2016-11-17  7:48 ` [tip:locking/core] locking/core: Provide common cpu_relax_yield() definition tip-bot for Christian Borntraeger

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.