[RFC][PATCH 3/3] Kconfig: Add CONFIG_DYN_HZ_DEFAULT to specify the default dynhz= boot option value

From: John Stultz
Date: Tue Jan 28 2025 - 01:33:48 EST


Allow a default dynhz= boot option value to be specified via config.

Cc: Anna-Maria Behnsen <anna-maria@xxxxxxxxxxxxx>
Cc: Frederic Weisbecker <frederic@xxxxxxxxxx>
Cc: Ingo Molnar <mingo@xxxxxxxxxx>
Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
Cc: Peter Zijlstra <peterz@xxxxxxxxxxxxx>
Cc: Juri Lelli <juri.lelli@xxxxxxxxxx>
Cc: Vincent Guittot <vincent.guittot@xxxxxxxxxx>
Cc: Dietmar Eggemann <dietmar.eggemann@xxxxxxx>
Cc: Steven Rostedt <rostedt@xxxxxxxxxxx>
Cc: Ben Segall <bsegall@xxxxxxxxxx>
Cc: Mel Gorman <mgorman@xxxxxxx>
Cc: Valentin Schneider <vschneid@xxxxxxxxxx>
Cc: Stephen Boyd <sboyd@xxxxxxxxxx>
Cc: Yury Norov <yury.norov@xxxxxxxxx>
Cc: Bitao Hu <yaoma@xxxxxxxxxxxxxxxxx>
Cc: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>
Cc: kernel-team@xxxxxxxxxxx
Signed-off-by: John Stultz <jstultz@xxxxxxxxxx>
---
kernel/Kconfig.hz | 10 ++++++++++
kernel/time/tick-common.c | 2 +-
2 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/kernel/Kconfig.hz b/kernel/Kconfig.hz
index 76714317674c5..27ad1400ad64e 100644
--- a/kernel/Kconfig.hz
+++ b/kernel/Kconfig.hz
@@ -64,5 +64,15 @@ config DYN_HZ
build time configured HZ value.
If you are unsure, say no.

+config DYN_HZ_DEFAULT
+ int "Default DynHZ value (valid range: 100-CONFIG_HZ)"
+ depends on DYN_HZ
+ default HZ
+ range 100 HZ
+ help
+ Default value for dynhz. This allows ticks to be configured
+ to arrive at slower than HZ rates. This is useful when you
+ want to allow boot-time configurable tick rates.
+
config SCHED_HRTICK
def_bool HIGH_RES_TIMERS
diff --git a/kernel/time/tick-common.c b/kernel/time/tick-common.c
index 75fd9dadb8273..46463bfb75d3d 100644
--- a/kernel/time/tick-common.c
+++ b/kernel/time/tick-common.c
@@ -81,7 +81,7 @@ int tick_is_oneshot_available(void)
}

#ifdef CONFIG_DYN_HZ
-long long dyn_tick_nsec = TICK_NSEC;
+long long dyn_tick_nsec = TICK_NSEC * HZ / CONFIG_DYN_HZ_DEFAULT;

static int __init set_dyn_hz(char *str)
{
--
2.48.1.262.g85cc9f2d1e-goog