lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Message-ID: <155363f0-26f5-4946-a36e-ee68b5887e60@infradead.org> Date: Tue, 19 Dec 2023 17:04:08 -0800 From: Randy Dunlap <rdunlap@...radead.org> To: John Stultz <jstultz@...gle.com>, LKML <linux-kernel@...r.kernel.org> Cc: Joel Fernandes <joelaf@...gle.com>, Qais Yousef <qyousef@...gle.com>, Ingo Molnar <mingo@...hat.com>, Peter Zijlstra <peterz@...radead.org>, Juri Lelli <juri.lelli@...hat.com>, Vincent Guittot <vincent.guittot@...aro.org>, Dietmar Eggemann <dietmar.eggemann@....com>, Valentin Schneider <vschneid@...hat.com>, Steven Rostedt <rostedt@...dmis.org>, Ben Segall <bsegall@...gle.com>, Zimuzo Ezeozue <zezeozue@...gle.com>, Youssef Esmat <youssefesmat@...gle.com>, Mel Gorman <mgorman@...e.de>, Daniel Bristot de Oliveira <bristot@...hat.com>, Will Deacon <will@...nel.org>, Waiman Long <longman@...hat.com>, Boqun Feng <boqun.feng@...il.com>, "Paul E. McKenney" <paulmck@...nel.org>, Metin Kaya <Metin.Kaya@....com>, Xuewen Yan <xuewen.yan94@...il.com>, K Prateek Nayak <kprateek.nayak@....com>, Thomas Gleixner <tglx@...utronix.de>, kernel-team@...roid.com Subject: Re: [PATCH v7 06/23] sched: Add CONFIG_SCHED_PROXY_EXEC & boot argument to enable/disable On 12/19/23 16:18, John Stultz wrote: > Add a CONFIG_SCHED_PROXY_EXEC option, along with a boot argument > sched_prox_exec= that can be used to disable the feature at boot sched_proxy_exec= > time if CONFIG_SCHED_PROXY_EXEC was enabled. > > Cc: Joel Fernandes <joelaf@...gle.com> > Cc: Qais Yousef <qyousef@...gle.com> > Cc: Ingo Molnar <mingo@...hat.com> > Cc: Peter Zijlstra <peterz@...radead.org> > Cc: Juri Lelli <juri.lelli@...hat.com> > Cc: Vincent Guittot <vincent.guittot@...aro.org> > Cc: Dietmar Eggemann <dietmar.eggemann@....com> > Cc: Valentin Schneider <vschneid@...hat.com> > Cc: Steven Rostedt <rostedt@...dmis.org> > Cc: Ben Segall <bsegall@...gle.com> > Cc: Zimuzo Ezeozue <zezeozue@...gle.com> > Cc: Youssef Esmat <youssefesmat@...gle.com> > Cc: Mel Gorman <mgorman@...e.de> > Cc: Daniel Bristot de Oliveira <bristot@...hat.com> > Cc: Will Deacon <will@...nel.org> > Cc: Waiman Long <longman@...hat.com> > Cc: Boqun Feng <boqun.feng@...il.com> > Cc: "Paul E. McKenney" <paulmck@...nel.org> > Cc: Metin Kaya <Metin.Kaya@....com> > Cc: Xuewen Yan <xuewen.yan94@...il.com> > Cc: K Prateek Nayak <kprateek.nayak@....com> > Cc: Thomas Gleixner <tglx@...utronix.de> > Cc: kernel-team@...roid.com > Signed-off-by: John Stultz <jstultz@...gle.com> > --- > v7: > * Switch to CONFIG_SCHED_PROXY_EXEC/sched_proxy_exec= as > suggested by Metin Kaya. > * Switch boot arg from =disable/enable to use kstrtobool(), > which supports =yes|no|1|0|true|false|on|off, as also > suggested by Metin Kaya, and print a message when a boot > argument is used. > --- > .../admin-guide/kernel-parameters.txt | 5 ++++ > include/linux/sched.h | 13 +++++++++ > init/Kconfig | 7 +++++ > kernel/sched/core.c | 29 +++++++++++++++++++ > 4 files changed, 54 insertions(+) > > diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt > index 65731b060e3f..cc64393b913f 100644 > --- a/Documentation/admin-guide/kernel-parameters.txt > +++ b/Documentation/admin-guide/kernel-parameters.txt > @@ -5714,6 +5714,11 @@ > sa1100ir [NET] > See drivers/net/irda/sa1100_ir.c. > > + sched_proxy_exec= [KNL] > + Enables or disables "proxy execution" style > + solution to mutex based priority inversion. mutex-based > + Format: <bool> > + > sched_verbose [KNL] Enables verbose scheduler debug messages. > > schedstats= [KNL,X86] Enable or disable scheduled statistics. > diff --git a/include/linux/sched.h b/include/linux/sched.h > index bfe8670f99a1..880af1c3097d 100644 > --- a/include/linux/sched.h > +++ b/include/linux/sched.h > @@ -1566,6 +1566,19 @@ struct task_struct { > */ > }; > > +#ifdef CONFIG_SCHED_PROXY_EXEC > +DECLARE_STATIC_KEY_TRUE(__sched_proxy_exec); > +static inline bool sched_proxy_exec(void) > +{ > + return static_branch_likely(&__sched_proxy_exec); > +} > +#else > +static inline bool sched_proxy_exec(void) > +{ > + return false; > +} > +#endif > + > static inline struct pid *task_pid(struct task_struct *task) > { > return task->thread_pid; > diff --git a/init/Kconfig b/init/Kconfig > index 9ffb103fc927..c5a759b6366a 100644 > --- a/init/Kconfig > +++ b/init/Kconfig > @@ -908,6 +908,13 @@ config NUMA_BALANCING_DEFAULT_ENABLED > If set, automatic NUMA balancing will be enabled if running on a NUMA > machine. > > +config SCHED_PROXY_EXEC > + bool "Proxy Execution" > + default n > + help > + This option enables proxy execution, a mechanism for mutex owning mutex-owning > + tasks to inherit the scheduling context of higher priority waiters. > + > menuconfig CGROUPS > bool "Control Group support" > select KERNFS > diff --git a/kernel/sched/core.c b/kernel/sched/core.c > index 4e46189d545d..e06558fb08aa 100644 > --- a/kernel/sched/core.c > +++ b/kernel/sched/core.c > @@ -117,6 +117,35 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(sched_compute_energy_tp); > > DEFINE_PER_CPU_SHARED_ALIGNED(struct rq, runqueues); > > +#ifdef CONFIG_SCHED_PROXY_EXEC > +DEFINE_STATIC_KEY_TRUE(__sched_proxy_exec); > +static int __init setup_proxy_exec(char *str) > +{ > + bool proxy_enable; > + > + if (kstrtobool(str, &proxy_enable)) { > + pr_warn("Unable to parse sched_proxy_exec=\n"); > + return 0; > + } > + > + if (proxy_enable) { > + pr_info("sched_proxy_exec enabled via boot arg\n"); > + static_branch_enable(&__sched_proxy_exec); > + } else { > + pr_info("sched_proxy_exec disabled via boot arg\n"); > + static_branch_disable(&__sched_proxy_exec); > + } > + return 1; > +} > +#else > +static int __init setup_proxy_exec(char *str) > +{ > + pr_warn("CONFIG_SCHED_PROXY_EXEC=n, so it cannot be enabled or disabled at boottime\n"); Preferably s/boottime/boot time/. > + return 0; > +} > +#endif > +__setup("sched_proxy_exec=", setup_proxy_exec); > + > #ifdef CONFIG_SCHED_DEBUG > /* > * Debugging: various feature bits -- #Randy https://people.kernel.org/tglx/notes-about-netiquette https://subspace.kernel.org/etiquette.html
Powered by blists - more mailing lists