diff --git a/Cargo.lock b/Cargo.lock index c9d0833b..8b5ea620 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1279,7 +1279,7 @@ dependencies = [ [[package]] name = "lact" -version = "0.7.1" +version = "0.7.2" dependencies = [ "anyhow", "divan", @@ -1291,7 +1291,7 @@ dependencies = [ [[package]] name = "lact-cli" -version = "0.7.1" +version = "0.7.2" dependencies = [ "anyhow", "lact-client", @@ -1301,7 +1301,7 @@ dependencies = [ [[package]] name = "lact-client" -version = "0.7.1" +version = "0.7.2" dependencies = [ "amdgpu-sysfs", "anyhow", @@ -1316,7 +1316,7 @@ dependencies = [ [[package]] name = "lact-daemon" -version = "0.7.1" +version = "0.7.2" dependencies = [ "amdgpu-sysfs", "anyhow", @@ -1352,7 +1352,7 @@ dependencies = [ [[package]] name = "lact-gui" -version = "0.7.1" +version = "0.7.2" dependencies = [ "amdgpu-sysfs", "anyhow", @@ -1377,7 +1377,7 @@ dependencies = [ [[package]] name = "lact-schema" -version = "0.7.1" +version = "0.7.2" dependencies = [ "amdgpu-sysfs", "anyhow", diff --git a/lact-cli/Cargo.toml b/lact-cli/Cargo.toml index 4749daa5..e0abad1e 100644 --- a/lact-cli/Cargo.toml +++ b/lact-cli/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "lact-cli" -version = "0.7.1" +version = "0.7.2" edition = "2021" [dependencies] diff --git a/lact-client/Cargo.toml b/lact-client/Cargo.toml index e642e3d5..d4eb0b2c 100644 --- a/lact-client/Cargo.toml +++ b/lact-client/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "lact-client" -version = "0.7.1" +version = "0.7.2" edition = "2021" [dependencies] diff --git a/lact-daemon/Cargo.toml b/lact-daemon/Cargo.toml index fd7dad79..709426e1 100644 --- a/lact-daemon/Cargo.toml +++ b/lact-daemon/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "lact-daemon" -version = "0.7.1" +version = "0.7.2" edition = "2021" [features] diff --git a/lact-daemon/src/server/gpu_controller/amd.rs b/lact-daemon/src/server/gpu_controller/amd.rs index edf6881e..e02a5abb 100644 --- a/lact-daemon/src/server/gpu_controller/amd.rs +++ b/lact-daemon/src/server/gpu_controller/amd.rs @@ -45,6 +45,7 @@ use { }; const GPU_CLOCKDOWN_TIMEOUT_SECS: u64 = 3; +const FAN_CONTROL_RETRIES: u32 = 10; const MAX_PSTATE_READ_ATTEMPTS: u32 = 5; const STEAM_DECK_IDS: [&str; 2] = ["163F", "1435"]; @@ -201,7 +202,19 @@ impl AmdGpuController { 1 => { warn!("GPU has only one temperature sensor, 'temperature_key' setting will be ignored"); } - _ => (), + _ => { + if !temps.contains_key(&settings.temperature_key) { + return Err(anyhow!( + "Sensor with name {} not found, available sensors: {}", + settings.temperature_key, + temps + .keys() + .map(String::as_str) + .collect::>() + .join(",") + )); + } + } } hw_mon @@ -230,6 +243,8 @@ impl AmdGpuController { #[allow(clippy::cast_precision_loss)] let change_threshold = settings.change_threshold.unwrap_or(0) as f32; + let mut retries = 0; + loop { select! { () = sleep(interval) => (), @@ -239,11 +254,19 @@ impl AmdGpuController { let mut temps = hw_mon.get_temps(); let temp = if temps.len() == 1 { temps.into_values().next().unwrap() + } else if let Some(value) = temps.remove(&temp_key) { + value } else { - temps - .remove(&temp_key) - .expect("Could not get temperature by given key") + retries += 1; + + if retries == FAN_CONTROL_RETRIES { + error!("could not get temperature sensor {temp_key}, exiting fan control (reached max attempts)"); + break; + } + error!("could not get temperature sensor {temp_key} from {} sensors (assuming error is temporary, attempt {retries}/{FAN_CONTROL_RETRIES})", temps.len()); + continue; }; + retries = 0; let current_temp = temp.current.expect("Missing temp"); diff --git a/lact-daemon/src/tests/data/amd/rx6600/card1/dev b/lact-daemon/src/tests/data/amd/rx6600/card1/dev new file mode 100644 index 00000000..fdd256a9 --- /dev/null +++ b/lact-daemon/src/tests/data/amd/rx6600/card1/dev @@ -0,0 +1 @@ +226:1 diff --git a/lact-daemon/src/tests/data/amd/rx6600/card1/device/current_link_speed b/lact-daemon/src/tests/data/amd/rx6600/card1/device/current_link_speed new file mode 100644 index 00000000..839b8f21 --- /dev/null +++ b/lact-daemon/src/tests/data/amd/rx6600/card1/device/current_link_speed @@ -0,0 +1 @@ +16.0 GT/s PCIe diff --git a/lact-daemon/src/tests/data/amd/rx6600/card1/device/current_link_width b/lact-daemon/src/tests/data/amd/rx6600/card1/device/current_link_width new file mode 100644 index 00000000..b6a7d89c --- /dev/null +++ b/lact-daemon/src/tests/data/amd/rx6600/card1/device/current_link_width @@ -0,0 +1 @@ +16 diff --git a/lact-daemon/src/tests/data/amd/rx6600/card1/device/gpu_busy_percent b/lact-daemon/src/tests/data/amd/rx6600/card1/device/gpu_busy_percent new file mode 100644 index 00000000..573541ac --- /dev/null +++ b/lact-daemon/src/tests/data/amd/rx6600/card1/device/gpu_busy_percent @@ -0,0 +1 @@ +0 diff --git a/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/fan1_enable b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/fan1_enable new file mode 100644 index 00000000..573541ac --- /dev/null +++ b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/fan1_enable @@ -0,0 +1 @@ +0 diff --git a/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/fan1_input b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/fan1_input new file mode 100644 index 00000000..c4425ac2 --- /dev/null +++ b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/fan1_input @@ -0,0 +1 @@ +1395 diff --git a/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/fan1_max b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/fan1_max new file mode 100644 index 00000000..d9d811cb --- /dev/null +++ b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/fan1_max @@ -0,0 +1 @@ +3100 diff --git a/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/fan1_min b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/fan1_min new file mode 100644 index 00000000..573541ac --- /dev/null +++ b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/fan1_min @@ -0,0 +1 @@ +0 diff --git a/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/fan1_target b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/fan1_target new file mode 100644 index 00000000..c4425ac2 --- /dev/null +++ b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/fan1_target @@ -0,0 +1 @@ +1395 diff --git a/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/freq1_input b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/freq1_input new file mode 100644 index 00000000..98d39c5c --- /dev/null +++ b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/freq1_input @@ -0,0 +1 @@ +20000000 diff --git a/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/freq1_label b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/freq1_label new file mode 100644 index 00000000..8941a5d4 --- /dev/null +++ b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/freq1_label @@ -0,0 +1 @@ +sclk diff --git a/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/freq2_input b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/freq2_input new file mode 100644 index 00000000..21bd50d6 --- /dev/null +++ b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/freq2_input @@ -0,0 +1 @@ +96000000 diff --git a/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/freq2_label b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/freq2_label new file mode 100644 index 00000000..f5f93995 --- /dev/null +++ b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/freq2_label @@ -0,0 +1 @@ +mclk diff --git a/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/in0_input b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/in0_input new file mode 100644 index 00000000..83b33d23 --- /dev/null +++ b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/in0_input @@ -0,0 +1 @@ +1000 diff --git a/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/in0_label b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/in0_label new file mode 100644 index 00000000..90d82113 --- /dev/null +++ b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/in0_label @@ -0,0 +1 @@ +vddgfx diff --git a/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/name b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/name new file mode 100644 index 00000000..75f88fb0 --- /dev/null +++ b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/name @@ -0,0 +1 @@ +amdgpu diff --git a/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/power/control b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/power/control new file mode 100644 index 00000000..865faf10 --- /dev/null +++ b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/power/control @@ -0,0 +1 @@ +auto diff --git a/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/power/runtime_active_time b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/power/runtime_active_time new file mode 100644 index 00000000..573541ac --- /dev/null +++ b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/power/runtime_active_time @@ -0,0 +1 @@ +0 diff --git a/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/power/runtime_status b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/power/runtime_status new file mode 100644 index 00000000..ad7ccf7a --- /dev/null +++ b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/power/runtime_status @@ -0,0 +1 @@ +unsupported diff --git a/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/power/runtime_suspended_time b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/power/runtime_suspended_time new file mode 100644 index 00000000..573541ac --- /dev/null +++ b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/power/runtime_suspended_time @@ -0,0 +1 @@ +0 diff --git a/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/power1_average b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/power1_average new file mode 100644 index 00000000..d4f015c6 --- /dev/null +++ b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/power1_average @@ -0,0 +1 @@ +3000000 diff --git a/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/power1_cap b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/power1_cap new file mode 100644 index 00000000..318ff3d5 --- /dev/null +++ b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/power1_cap @@ -0,0 +1 @@ +120000000 diff --git a/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/power1_cap_default b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/power1_cap_default new file mode 100644 index 00000000..ea600cb6 --- /dev/null +++ b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/power1_cap_default @@ -0,0 +1 @@ +100000000 diff --git a/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/power1_cap_max b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/power1_cap_max new file mode 100644 index 00000000..318ff3d5 --- /dev/null +++ b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/power1_cap_max @@ -0,0 +1 @@ +120000000 diff --git a/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/power1_cap_min b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/power1_cap_min new file mode 100644 index 00000000..31651095 --- /dev/null +++ b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/power1_cap_min @@ -0,0 +1 @@ +94000000 diff --git a/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/power1_label b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/power1_label new file mode 100644 index 00000000..47e4899b --- /dev/null +++ b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/power1_label @@ -0,0 +1 @@ +PPT diff --git a/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/pwm1 b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/pwm1 new file mode 100644 index 00000000..573541ac --- /dev/null +++ b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/pwm1 @@ -0,0 +1 @@ +0 diff --git a/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/pwm1_enable b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/pwm1_enable new file mode 100644 index 00000000..0cfbf088 --- /dev/null +++ b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/pwm1_enable @@ -0,0 +1 @@ +2 diff --git a/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/pwm1_max b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/pwm1_max new file mode 100644 index 00000000..ace9d036 --- /dev/null +++ b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/pwm1_max @@ -0,0 +1 @@ +255 diff --git a/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/pwm1_min b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/pwm1_min new file mode 100644 index 00000000..573541ac --- /dev/null +++ b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/pwm1_min @@ -0,0 +1 @@ +0 diff --git a/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/temp1_crit b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/temp1_crit new file mode 100644 index 00000000..f7393e84 --- /dev/null +++ b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/temp1_crit @@ -0,0 +1 @@ +100000 diff --git a/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/temp1_crit_hyst b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/temp1_crit_hyst new file mode 100644 index 00000000..526f8b23 --- /dev/null +++ b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/temp1_crit_hyst @@ -0,0 +1 @@ +-273150 diff --git a/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/temp1_emergency b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/temp1_emergency new file mode 100644 index 00000000..971c604c --- /dev/null +++ b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/temp1_emergency @@ -0,0 +1 @@ +105000 diff --git a/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/temp1_input b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/temp1_input new file mode 100644 index 00000000..a3f7bcee --- /dev/null +++ b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/temp1_input @@ -0,0 +1 @@ +28000 diff --git a/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/temp1_label b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/temp1_label new file mode 100644 index 00000000..54aeb5dc --- /dev/null +++ b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/temp1_label @@ -0,0 +1 @@ +edge diff --git a/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/temp2_crit b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/temp2_crit new file mode 100644 index 00000000..6223f45a --- /dev/null +++ b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/temp2_crit @@ -0,0 +1 @@ +110000 diff --git a/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/temp2_crit_hyst b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/temp2_crit_hyst new file mode 100644 index 00000000..526f8b23 --- /dev/null +++ b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/temp2_crit_hyst @@ -0,0 +1 @@ +-273150 diff --git a/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/temp2_emergency b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/temp2_emergency new file mode 100644 index 00000000..0b35cf30 --- /dev/null +++ b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/temp2_emergency @@ -0,0 +1 @@ +115000 diff --git a/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/temp2_input b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/temp2_input new file mode 100644 index 00000000..a3f7bcee --- /dev/null +++ b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/temp2_input @@ -0,0 +1 @@ +28000 diff --git a/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/temp2_label b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/temp2_label new file mode 100644 index 00000000..a2a3db1b --- /dev/null +++ b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/temp2_label @@ -0,0 +1 @@ +junction diff --git a/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/temp3_crit b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/temp3_crit new file mode 100644 index 00000000..f7393e84 --- /dev/null +++ b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/temp3_crit @@ -0,0 +1 @@ +100000 diff --git a/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/temp3_crit_hyst b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/temp3_crit_hyst new file mode 100644 index 00000000..526f8b23 --- /dev/null +++ b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/temp3_crit_hyst @@ -0,0 +1 @@ +-273150 diff --git a/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/temp3_emergency b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/temp3_emergency new file mode 100644 index 00000000..971c604c --- /dev/null +++ b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/temp3_emergency @@ -0,0 +1 @@ +105000 diff --git a/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/temp3_input b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/temp3_input new file mode 100644 index 00000000..afe1f8be --- /dev/null +++ b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/temp3_input @@ -0,0 +1 @@ +26000 diff --git a/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/temp3_label b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/temp3_label new file mode 100644 index 00000000..9f5c0b2a --- /dev/null +++ b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/temp3_label @@ -0,0 +1 @@ +mem diff --git a/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/uevent b/lact-daemon/src/tests/data/amd/rx6600/card1/device/hwmon/hwmon4/uevent new file mode 100644 index 00000000..e69de29b diff --git a/lact-daemon/src/tests/data/amd/rx6600/card1/device/pp_cur_state b/lact-daemon/src/tests/data/amd/rx6600/card1/device/pp_cur_state new file mode 100644 index 00000000..573541ac --- /dev/null +++ b/lact-daemon/src/tests/data/amd/rx6600/card1/device/pp_cur_state @@ -0,0 +1 @@ +0 diff --git a/lact-daemon/src/tests/data/amd/rx6600/card1/device/pp_dpm_mclk b/lact-daemon/src/tests/data/amd/rx6600/card1/device/pp_dpm_mclk new file mode 100644 index 00000000..c7796709 --- /dev/null +++ b/lact-daemon/src/tests/data/amd/rx6600/card1/device/pp_dpm_mclk @@ -0,0 +1,4 @@ +0: 96Mhz * +1: 541Mhz +2: 675Mhz +3: 925Mhz diff --git a/lact-daemon/src/tests/data/amd/rx6600/card1/device/pp_dpm_pcie b/lact-daemon/src/tests/data/amd/rx6600/card1/device/pp_dpm_pcie new file mode 100644 index 00000000..640433f0 --- /dev/null +++ b/lact-daemon/src/tests/data/amd/rx6600/card1/device/pp_dpm_pcie @@ -0,0 +1,2 @@ +0: 2.5GT/s, x1 81Mhz +1: 8.0GT/s, x8 619Mhz * diff --git a/lact-daemon/src/tests/data/amd/rx6600/card1/device/pp_dpm_sclk b/lact-daemon/src/tests/data/amd/rx6600/card1/device/pp_dpm_sclk new file mode 100644 index 00000000..2c086645 --- /dev/null +++ b/lact-daemon/src/tests/data/amd/rx6600/card1/device/pp_dpm_sclk @@ -0,0 +1,3 @@ +0: 500Mhz +1: 2605Mhz * +2: 2700Mhz diff --git a/lact-daemon/src/tests/data/amd/rx6600/card1/device/pp_dpm_socclk b/lact-daemon/src/tests/data/amd/rx6600/card1/device/pp_dpm_socclk new file mode 100644 index 00000000..910c0843 --- /dev/null +++ b/lact-daemon/src/tests/data/amd/rx6600/card1/device/pp_dpm_socclk @@ -0,0 +1,3 @@ +0: 417Mhz +1: 640Mhz * +2: 1200Mhz diff --git a/lact-daemon/src/tests/data/amd/rx6600/card1/device/pp_features b/lact-daemon/src/tests/data/amd/rx6600/card1/device/pp_features new file mode 100644 index 00000000..845e5192 --- /dev/null +++ b/lact-daemon/src/tests/data/amd/rx6600/card1/device/pp_features @@ -0,0 +1,45 @@ +features high: 0x00003762 low: 0xa37f7dfb +No. Feature Bit : State +00. DPM_PREFETCHER ( 0) : enabled +01. DPM_GFXCLK ( 1) : enabled +02. DPM_GFX_GPO ( 2) : disabled +03. DPM_UCLK ( 3) : enabled +04. DPM_FCLK ( 4) : enabled +05. DPM_SOCCLK ( 5) : enabled +06. DPM_MP0CLK ( 6) : enabled +07. DPM_LINK ( 7) : enabled +08. DPM_DCEFCLK ( 8) : enabled +09. DPM_XGMI ( 9) : disabled +10. MEM_VDDCI_SCALING (10) : enabled +11. MEM_MVDD_SCALING (11) : enabled +12. DS_GFXCLK (12) : enabled +13. DS_SOCCLK (13) : enabled +14. DS_FCLK (14) : enabled +15. DS_LCLK (15) : disabled +16. DS_DCEFCLK (16) : enabled +17. DS_UCLK (17) : enabled +18. GFX_ULV (18) : enabled +19. FW_DSTATE (19) : enabled +20. GFXOFF (20) : enabled +21. BACO (21) : enabled +22. MM_DPM_PG (22) : enabled +23. PPT (24) : enabled +24. TDC (25) : enabled +25. APCC_PLUS (26) : disabled +26. GTHR (27) : disabled +27. ACDC (28) : disabled +28. VR0HOT (29) : enabled +29. VR1HOT (30) : disabled +30. FW_CTF (31) : enabled +31. FAN_CONTROL (32) : disabled +32. THERMAL (33) : enabled +33. GFX_DCS (34) : disabled +34. RM (35) : disabled +35. LED_DISPLAY (36) : disabled +36. GFX_SS (37) : enabled +37. OUT_OF_BAND_MONITOR (38) : enabled +38. TEMP_DEPENDENT_VMIN (39) : disabled +39. MMHUB_PG (40) : enabled +40. ATHUB_PG (41) : enabled +41. APCC_DFLL (42) : enabled +42. RSMU_SMN_CG (44) : enabled diff --git a/lact-daemon/src/tests/data/amd/rx6600/card1/device/pp_force_state b/lact-daemon/src/tests/data/amd/rx6600/card1/device/pp_force_state new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/lact-daemon/src/tests/data/amd/rx6600/card1/device/pp_force_state @@ -0,0 +1 @@ + diff --git a/lact-daemon/src/tests/data/amd/rx6600/card1/device/pp_num_states b/lact-daemon/src/tests/data/amd/rx6600/card1/device/pp_num_states new file mode 100644 index 00000000..9d5547f1 --- /dev/null +++ b/lact-daemon/src/tests/data/amd/rx6600/card1/device/pp_num_states @@ -0,0 +1,2 @@ +states: 1 +0 default diff --git a/lact-daemon/src/tests/data/amd/rx6600/card1/device/pp_od_clk_voltage b/lact-daemon/src/tests/data/amd/rx6600/card1/device/pp_od_clk_voltage new file mode 100644 index 00000000..93649697 Binary files /dev/null and b/lact-daemon/src/tests/data/amd/rx6600/card1/device/pp_od_clk_voltage differ diff --git a/lact-daemon/src/tests/data/amd/rx6600/card1/device/pp_power_profile_mode b/lact-daemon/src/tests/data/amd/rx6600/card1/device/pp_power_profile_mode new file mode 100644 index 00000000..7b800bd6 --- /dev/null +++ b/lact-daemon/src/tests/data/amd/rx6600/card1/device/pp_power_profile_mode @@ -0,0 +1,29 @@ +PROFILE_INDEX(NAME) CLOCK_TYPE(NAME) FPS MinFreqType MinActiveFreqType MinActiveFreq BoosterFreqType BoosterFreq PD_Data_limit_c PD_Data_error_coeff PD_Data_error_rate_coeff + 0 BOOTUP_DEFAULT : + 0( GFXCLK) 0 5 1 0 4 800 4587520 -65536 0 + 1( SOCCLK) 0 5 1 0 1 0 3276800 -6553 -6553 + 2( MEMCLK) 0 5 1 0 4 800 327680 -65536 0 + 1 3D_FULL_SCREEN*: + 0( GFXCLK) 0 5 1 0 4 650 4587520 -3276 -65536 + 1( SOCCLK) 0 5 1 0 1 0 655360 -6553 -6553 + 2( MEMCLK) 0 5 4 850 4 800 327680 -65536 0 + 2 POWER_SAVING : + 0( GFXCLK) 0 5 1 0 3 0 5898240 -65536 0 + 1( SOCCLK) 0 5 1 0 1 0 3407872 -6553 -6553 + 2( MEMCLK) 0 5 1 0 3 0 1966080 -65536 0 + 3 VIDEO : + 0( GFXCLK) 0 5 1 0 4 500 4587520 -65536 0 + 1( SOCCLK) 0 5 1 0 1 0 3473408 -6553 -6553 + 2( MEMCLK) 0 5 1 0 4 500 1966080 -65536 0 + 4 VR : + 0( GFXCLK) 0 5 4 1000 1 0 3932160 0 0 + 1( SOCCLK) 0 5 1 0 1 0 655360 -6553 -6553 + 2( MEMCLK) 0 5 1 0 4 800 327680 -65536 0 + 5 COMPUTE : + 0( GFXCLK) 0 5 4 1000 1 0 3932160 0 0 + 1( SOCCLK) 0 5 1 0 1 0 655360 -6553 -6553 + 2( MEMCLK) 0 5 4 850 3 0 327680 -65536 -32768 + 6 CUSTOM : + 0( GFXCLK) 0 5 1 0 4 800 4587520 -65536 0 + 1( SOCCLK) 0 5 1 0 1 0 3276800 -6553 -6553 + 2( MEMCLK) 0 5 1 0 4 800 327680 -65536 0 diff --git a/lact-daemon/src/tests/data/amd/rx6600/card1/device/pp_table b/lact-daemon/src/tests/data/amd/rx6600/card1/device/pp_table new file mode 100644 index 00000000..f0540d10 Binary files /dev/null and b/lact-daemon/src/tests/data/amd/rx6600/card1/device/pp_table differ diff --git a/lact-daemon/src/tests/data/amd/rx6600/card1/device/uevent b/lact-daemon/src/tests/data/amd/rx6600/card1/device/uevent new file mode 100644 index 00000000..b1feacaa --- /dev/null +++ b/lact-daemon/src/tests/data/amd/rx6600/card1/device/uevent @@ -0,0 +1,6 @@ +DRIVER=amdgpu +PCI_CLASS=30000 +PCI_ID=1002:73FF +PCI_SUBSYS_ID=1458:2334 +PCI_SLOT_NAME=0000:12:00.0 +MODALIAS=pci:v00001002d000073FFsv00001458sd00002334bc03sc00i00 diff --git a/lact-daemon/src/tests/data/amd/rx6600/card1/device/vbios_version b/lact-daemon/src/tests/data/amd/rx6600/card1/device/vbios_version new file mode 100644 index 00000000..988a0d8d --- /dev/null +++ b/lact-daemon/src/tests/data/amd/rx6600/card1/device/vbios_version @@ -0,0 +1 @@ +113-D534-R66E diff --git a/lact-daemon/src/tests/data/amd/rx6600/card1/device/vendor b/lact-daemon/src/tests/data/amd/rx6600/card1/device/vendor new file mode 100644 index 00000000..7f97d854 --- /dev/null +++ b/lact-daemon/src/tests/data/amd/rx6600/card1/device/vendor @@ -0,0 +1 @@ +0x1002 diff --git a/lact-daemon/src/tests/data/amd/rx6600/card1/uevent b/lact-daemon/src/tests/data/amd/rx6600/card1/uevent new file mode 100644 index 00000000..96ce9f7f --- /dev/null +++ b/lact-daemon/src/tests/data/amd/rx6600/card1/uevent @@ -0,0 +1,4 @@ +MAJOR=226 +MINOR=1 +DEVNAME=dri/card1 +DEVTYPE=drm_minor diff --git a/lact-daemon/src/tests/snapshots/lact_daemon__tests__amd__rx6600.snap b/lact-daemon/src/tests/snapshots/lact_daemon__tests__amd__rx6600.snap new file mode 100644 index 00000000..b871849c --- /dev/null +++ b/lact-daemon/src/tests/snapshots/lact_daemon__tests__amd__rx6600.snap @@ -0,0 +1,517 @@ +--- +source: lact-daemon/src/tests/mod.rs +expression: device_info +--- +{ + "clocks_info": { + "max_mclk": 925, + "max_sclk": 2700, + "table": { + "type": "amd", + "value": { + "data": { + "current_mclk_range": { + "max": 925, + "min": 97 + }, + "current_sclk_range": { + "max": 2700, + "min": 2600 + }, + "od_range": { + "curve_sclk_points": [], + "curve_voltage_points": [], + "mclk": { + "max": 950, + "min": 674 + }, + "sclk": { + "max": 2900, + "min": 500 + }, + "voltage_offset": null + }, + "vddc_curve": [], + "voltage_offset": -100 + }, + "kind": "vega20" + } + } + }, + "info": { + "driver": "amdgpu", + "link_info": { + "current_speed": "16.0 GT/s PCIe", + "current_width": "16" + }, + "pci_info": { + "device_pci_info": { + "model": "Navi 23 [Radeon RX 6600/6600 XT/6600M]", + "model_id": "73FF", + "vendor": "Advanced Micro Devices, Inc. [AMD/ATI]", + "vendor_id": "1002" + }, + "subsystem_pci_info": { + "model_id": "2334", + "vendor": "Gigabyte Technology Co., Ltd", + "vendor_id": "1458" + } + }, + "vbios_version": "113-D534-R66E", + "vulkan_info": { + "api_version": "", + "device_name": "", + "driver": { + "version": 0 + }, + "enabled_layers": [], + "extensions": {}, + "features": {} + } + }, + "pci_info": { + "device_pci_info": { + "model": "Navi 23 [Radeon RX 6600/6600 XT/6600M]", + "model_id": "73FF", + "vendor": "Advanced Micro Devices, Inc. [AMD/ATI]", + "vendor_id": "1002" + }, + "subsystem_pci_info": { + "model_id": "2334", + "vendor": "Gigabyte Technology Co., Ltd", + "vendor_id": "1458" + } + }, + "power_profile_modes": { + "active": 1, + "modes": { + "0": { + "components": [ + { + "clock_type": "GFXCLK", + "values": [ + 0, + 5, + 1, + 0, + 4, + 800, + 4587520, + -65536, + 0 + ] + }, + { + "clock_type": "SOCCLK", + "values": [ + 0, + 5, + 1, + 0, + 1, + 0, + 3276800, + -6553, + -6553 + ] + }, + { + "clock_type": "MEMCLK", + "values": [ + 0, + 5, + 1, + 0, + 4, + 800, + 327680, + -65536, + 0 + ] + } + ], + "name": "BOOTUP_DEFAULT" + }, + "1": { + "components": [ + { + "clock_type": "GFXCLK", + "values": [ + 0, + 5, + 1, + 0, + 4, + 650, + 4587520, + -3276, + -65536 + ] + }, + { + "clock_type": "SOCCLK", + "values": [ + 0, + 5, + 1, + 0, + 1, + 0, + 655360, + -6553, + -6553 + ] + }, + { + "clock_type": "MEMCLK", + "values": [ + 0, + 5, + 4, + 850, + 4, + 800, + 327680, + -65536, + 0 + ] + } + ], + "name": "3D_FULL_SCREEN" + }, + "2": { + "components": [ + { + "clock_type": "GFXCLK", + "values": [ + 0, + 5, + 1, + 0, + 3, + 0, + 5898240, + -65536, + 0 + ] + }, + { + "clock_type": "SOCCLK", + "values": [ + 0, + 5, + 1, + 0, + 1, + 0, + 3407872, + -6553, + -6553 + ] + }, + { + "clock_type": "MEMCLK", + "values": [ + 0, + 5, + 1, + 0, + 3, + 0, + 1966080, + -65536, + 0 + ] + } + ], + "name": "POWER_SAVING" + }, + "3": { + "components": [ + { + "clock_type": "GFXCLK", + "values": [ + 0, + 5, + 1, + 0, + 4, + 500, + 4587520, + -65536, + 0 + ] + }, + { + "clock_type": "SOCCLK", + "values": [ + 0, + 5, + 1, + 0, + 1, + 0, + 3473408, + -6553, + -6553 + ] + }, + { + "clock_type": "MEMCLK", + "values": [ + 0, + 5, + 1, + 0, + 4, + 500, + 1966080, + -65536, + 0 + ] + } + ], + "name": "VIDEO" + }, + "4": { + "components": [ + { + "clock_type": "GFXCLK", + "values": [ + 0, + 5, + 4, + 1000, + 1, + 0, + 3932160, + 0, + 0 + ] + }, + { + "clock_type": "SOCCLK", + "values": [ + 0, + 5, + 1, + 0, + 1, + 0, + 655360, + -6553, + -6553 + ] + }, + { + "clock_type": "MEMCLK", + "values": [ + 0, + 5, + 1, + 0, + 4, + 800, + 327680, + -65536, + 0 + ] + } + ], + "name": "VR" + }, + "5": { + "components": [ + { + "clock_type": "GFXCLK", + "values": [ + 0, + 5, + 4, + 1000, + 1, + 0, + 3932160, + 0, + 0 + ] + }, + { + "clock_type": "SOCCLK", + "values": [ + 0, + 5, + 1, + 0, + 1, + 0, + 655360, + -6553, + -6553 + ] + }, + { + "clock_type": "MEMCLK", + "values": [ + 0, + 5, + 4, + 850, + 3, + 0, + 327680, + -65536, + -32768 + ] + } + ], + "name": "COMPUTE" + }, + "6": { + "components": [ + { + "clock_type": "GFXCLK", + "values": [ + 0, + 5, + 1, + 0, + 4, + 800, + 4587520, + -65536, + 0 + ] + }, + { + "clock_type": "SOCCLK", + "values": [ + 0, + 5, + 1, + 0, + 1, + 0, + 3276800, + -6553, + -6553 + ] + }, + { + "clock_type": "MEMCLK", + "values": [ + 0, + 5, + 1, + 0, + 4, + 800, + 327680, + -65536, + 0 + ] + } + ], + "name": "CUSTOM" + } + }, + "value_names": [ + "FPS", + "MinFreqType", + "MinActiveFreqType", + "MinActiveFreq", + "BoosterFreqType", + "BoosterFreq", + "PD_Data_limit_c", + "PD_Data_error_coeff", + "PD_Data_error_rate_coeff" + ] + }, + "power_states": { + "core": [ + { + "enabled": true, + "index": 0, + "value": 500 + }, + { + "enabled": true, + "index": 1, + "value": 2605 + }, + { + "enabled": true, + "index": 2, + "value": 2700 + } + ], + "vram": [ + { + "enabled": true, + "index": 0, + "value": 96 + }, + { + "enabled": true, + "index": 1, + "value": 541 + }, + { + "enabled": true, + "index": 2, + "value": 675 + }, + { + "enabled": true, + "index": 3, + "value": 925 + } + ] + }, + "stats": { + "busy_percent": 0, + "clockspeed": { + "gpu_clockspeed": 20, + "vram_clockspeed": 96 + }, + "core_power_state": 1, + "fan": { + "control_enabled": false, + "pmfw_info": {}, + "pwm_current": 0, + "speed_current": 1395, + "speed_max": 3100, + "speed_min": 0 + }, + "memory_power_state": 0, + "pcie_power_state": 1, + "power": { + "average": 3.0, + "cap_current": 120.0, + "cap_default": 100.0, + "cap_max": 120.0, + "cap_min": 94.0 + }, + "temps": { + "edge": { + "crit": 100.0, + "crit_hyst": -273.1499938964844, + "current": 28.0 + }, + "junction": { + "crit": 110.0, + "crit_hyst": -273.1499938964844, + "current": 28.0 + }, + "mem": { + "crit": 100.0, + "crit_hyst": -273.1499938964844, + "current": 26.0 + } + }, + "voltage": { + "gpu": 1000 + }, + "vram": {} + } +} diff --git a/lact-gui/Cargo.toml b/lact-gui/Cargo.toml index 35111b76..0bcc93ef 100644 --- a/lact-gui/Cargo.toml +++ b/lact-gui/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "lact-gui" -version = "0.7.1" +version = "0.7.2" authors = ["Ilya Zlobintsev "] edition = "2021" diff --git a/lact-schema/Cargo.toml b/lact-schema/Cargo.toml index de4c7826..93216f6c 100644 --- a/lact-schema/Cargo.toml +++ b/lact-schema/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "lact-schema" -version = "0.7.1" +version = "0.7.2" edition = "2021" [features] diff --git a/lact/Cargo.toml b/lact/Cargo.toml index 5404dd68..7e458841 100644 --- a/lact/Cargo.toml +++ b/lact/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "lact" -version = "0.7.1" +version = "0.7.2" edition = "2021" [features] diff --git a/pkg/recipes/lact-headless/recipe.yml b/pkg/recipes/lact-headless/recipe.yml index a56c2487..9458b5ba 100644 --- a/pkg/recipes/lact-headless/recipe.yml +++ b/pkg/recipes/lact-headless/recipe.yml @@ -3,7 +3,7 @@ metadata: description: AMDGPU control utility arch: x86_64 license: MIT - version: 0.7.1 + version: 0.7.2 maintainer: ilya-zlobintsev url: https://github.com/ilya-zlobintsev/lact source: diff --git a/pkg/recipes/lact-libadwaita/recipe.yml b/pkg/recipes/lact-libadwaita/recipe.yml index 33752486..b2de9083 100644 --- a/pkg/recipes/lact-libadwaita/recipe.yml +++ b/pkg/recipes/lact-libadwaita/recipe.yml @@ -3,7 +3,7 @@ metadata: description: AMDGPU control utility arch: x86_64 license: MIT - version: 0.7.1 + version: 0.7.2 maintainer: ilya-zlobintsev url: https://github.com/ilya-zlobintsev/lact source: diff --git a/pkg/recipes/lact/recipe.yml b/pkg/recipes/lact/recipe.yml index aebddc18..67b58488 100644 --- a/pkg/recipes/lact/recipe.yml +++ b/pkg/recipes/lact/recipe.yml @@ -3,7 +3,7 @@ metadata: description: AMDGPU control utility arch: x86_64 license: MIT - version: 0.7.1 + version: 0.7.2 maintainer: ilya-zlobintsev url: https://github.com/ilya-zlobintsev/lact source: