[PATCH 4.19 042/139] sched/smt: Expose sched_smt_present static key
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date: 2018-12-04 10:58:16
Also in:
lkml
4.19-stable review patch. If anyone has any objections, please let me know. ------------------ From: Thomas Gleixner tglx@linutronix.de commit 321a874a7ef85655e93b3206d0f36b4a6097f948 upstream Make the scheduler's 'sched_smt_present' static key globaly available, so it can be used in the x86 speculation control code. Provide a query function and a stub for the CONFIG_SMP=n case. Signed-off-by: Thomas Gleixner <redacted> Reviewed-by: Ingo Molnar <mingo@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Andy Lutomirski <luto@kernel.org> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Jiri Kosina <redacted> Cc: Tom Lendacky <thomas.lendacky@amd.com> Cc: Josh Poimboeuf <redacted> Cc: Andrea Arcangeli <redacted> Cc: David Woodhouse <redacted> Cc: Tim Chen <redacted> Cc: Andi Kleen <redacted> Cc: Dave Hansen <redacted> Cc: Casey Schaufler <redacted> Cc: Asit Mallick <redacted> Cc: Arjan van de Ven <redacted> Cc: Jon Masters <redacted> Cc: Waiman Long <redacted> Cc: Greg KH <gregkh@linuxfoundation.org> Cc: Dave Stewart <redacted> Cc: Kees Cook <redacted> Cc: stable@vger.kernel.org Link: https://lkml.kernel.org/r/20181125185004.430168326@linutronix.de Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> --- include/linux/sched/smt.h | 18 ++++++++++++++++++ kernel/sched/sched.h | 4 +--- 2 files changed, 19 insertions(+), 3 deletions(-)
--- /dev/null
+++ b/include/linux/sched/smt.h@@ -0,0 +1,18 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef _LINUX_SCHED_SMT_H +#define _LINUX_SCHED_SMT_H + +#include <linux/static_key.h> + +#ifdef CONFIG_SCHED_SMT +extern struct static_key_false sched_smt_present; + +static __always_inline bool sched_smt_active(void) +{ + return static_branch_likely(&sched_smt_present); +} +#else +static inline bool sched_smt_active(void) { return false; } +#endif + +#endif --- a/kernel/sched/sched.h +++ b/kernel/sched/sched.h
@@ -23,6 +23,7 @@ #include <linux/sched/prio.h> #include <linux/sched/rt.h> #include <linux/sched/signal.h> +#include <linux/sched/smt.h> #include <linux/sched/stat.h> #include <linux/sched/sysctl.h> #include <linux/sched/task.h>
@@ -930,9 +931,6 @@ static inline int cpu_of(struct rq *rq) #ifdef CONFIG_SCHED_SMT - -extern struct static_key_false sched_smt_present; - extern void __update_idle_core(struct rq *rq); static inline void update_idle_core(struct rq *rq)