From 9935ae9fe355cc3c6128eae8909a992ecfbf8be8 Mon Sep 17 00:00:00 2001 From: NotAShelf Date: Sat, 17 May 2025 11:11:24 +0300 Subject: [PATCH] engine: allow users to explicitly disable auto-turbo --- src/config/types.rs | 10 ++++++++++ src/engine.rs | 11 +++++++++-- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/src/config/types.rs b/src/config/types.rs index 297b65b..dba5c49 100644 --- a/src/config/types.rs +++ b/src/config/types.rs @@ -51,6 +51,7 @@ pub struct ProfileConfig { pub max_freq_mhz: Option, pub platform_profile: Option, pub turbo_auto_settings: Option, + pub enable_auto_turbo: bool, #[serde(skip_serializing_if = "Option::is_none")] pub battery_charge_thresholds: Option, } @@ -66,6 +67,7 @@ impl Default for ProfileConfig { max_freq_mhz: None, // no override platform_profile: None, // no override turbo_auto_settings: Some(TurboAutoSettings::default()), + enable_auto_turbo: default_enable_auto_turbo(), battery_charge_thresholds: None, } } @@ -125,6 +127,8 @@ pub struct ProfileConfigToml { pub max_freq_mhz: Option, pub platform_profile: Option, pub turbo_auto_settings: Option, + #[serde(default = "default_enable_auto_turbo")] + pub enable_auto_turbo: bool, #[serde(skip_serializing_if = "Option::is_none")] pub battery_charge_thresholds: Option, } @@ -153,6 +157,7 @@ impl Default for ProfileConfigToml { max_freq_mhz: None, platform_profile: None, turbo_auto_settings: None, + enable_auto_turbo: default_enable_auto_turbo(), battery_charge_thresholds: None, } } @@ -213,6 +218,7 @@ impl From for ProfileConfig { turbo_auto_settings: toml_config .turbo_auto_settings .or_else(|| Some(TurboAutoSettings::default())), + enable_auto_turbo: toml_config.enable_auto_turbo, battery_charge_thresholds: toml_config.battery_charge_thresholds, } } @@ -286,6 +292,10 @@ const fn default_stats_file_path() -> Option { None } +const fn default_enable_auto_turbo() -> bool { + true +} + #[derive(Deserialize, Serialize, Debug, Clone)] pub struct DaemonConfigToml { #[serde(default = "default_poll_interval_sec")] diff --git a/src/engine.rs b/src/engine.rs index 4eb3e6b..cb56254 100644 --- a/src/engine.rs +++ b/src/engine.rs @@ -113,8 +113,15 @@ pub fn determine_and_apply_settings( info!("Setting turbo to '{turbo_setting:?}'"); match turbo_setting { TurboSetting::Auto => { - debug!("Managing turbo in auto mode based on system conditions"); - manage_auto_turbo(report, selected_profile_config)?; + if selected_profile_config.enable_auto_turbo { + debug!("Managing turbo in auto mode based on system conditions"); + manage_auto_turbo(report, selected_profile_config)?; + } else { + debug!("Auto turbo management disabled by configuration, using system default behavior"); + try_apply_feature("Turbo boost", "system default (Auto)", || { + cpu::set_turbo(turbo_setting) + })?; + } } _ => { try_apply_feature("Turbo boost", &format!("{turbo_setting:?}"), || {