From a880857d62ece96fe4795cb75a04424dc7fc44dc Mon Sep 17 00:00:00 2001 From: Ilya Zlobintsev Date: Thu, 21 Dec 2023 18:35:30 +0200 Subject: [PATCH] chore: more detailed error reporting when writing the clocks table --- Cargo.toml | 2 +- src/gpu_handle/overdrive/vega20.rs | 22 ++++++++++++++-------- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 981b6ae..e47ba75 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "amdgpu-sysfs" -version = "0.12.5" +version = "0.12.6" authors = ["Ilya Zlobintsev "] edition = "2021" license = "GPL-3.0" diff --git a/src/gpu_handle/overdrive/vega20.rs b/src/gpu_handle/overdrive/vega20.rs index c176237..78aadfe 100644 --- a/src/gpu_handle/overdrive/vega20.rs +++ b/src/gpu_handle/overdrive/vega20.rs @@ -1,7 +1,7 @@ //! The format used by Vega20 and newer GPUs. use super::{parse_line_item, parse_range_line, push_level_line, ClocksLevel, ClocksTable, Range}; use crate::{ - error::{Error, ErrorKind::ParseError}, + error::{Error, ErrorContext, ErrorKind::ParseError}, gpu_handle::trim_sysfs_line, Result, }; @@ -38,18 +38,24 @@ impl ClocksTable for Table { for (maybe_clockspeed, symbol, index) in clockspeeds { if let Some(clockspeed) = maybe_clockspeed { let line = clockspeed_line(symbol, index, clockspeed); - writer.write_all(line.as_bytes())?; + writer + .write_all(line.as_bytes()) + .with_context(|| format!("Error when writing clockspeed line `{line}`"))?; } } for (i, level) in self.vddc_curve.iter().enumerate() { let line = vddc_curve_line(i, level.clockspeed, level.voltage); - writer.write_all(line.as_bytes())?; + writer + .write_all(line.as_bytes()) + .with_context(|| format!("Error when writing VDDC line `{line}`"))?; } if let Some(offset) = self.voltage_offset { let line = voltage_offset_line(offset); - writer.write_all(line.as_bytes())?; + writer + .write_all(line.as_bytes()) + .with_context(|| format!("Error when writing voltage offset `{line}`"))?; } Ok(()) @@ -415,7 +421,7 @@ mod tests { table.set_max_mclk(950).unwrap(); assert_eq!(table.get_max_mclk(), Some(950)); assert_eq!(table.current_mclk_range.max, Some(950)); - + table.set_max_voltage(1150).unwrap(); assert_eq!(table.vddc_curve[2].voltage, 1150); @@ -451,20 +457,20 @@ mod tests { assert_eq!(expected_commands, commands); } - + #[test] fn write_commands_5500xt() { let mut table = Table::from_str(TABLE_5500XT).unwrap(); table.clear(); table.set_max_sclk(1900).unwrap(); table.set_max_voltage(1140).unwrap(); - + let commands = table.get_commands().unwrap(); let expected_commands = vec![ "s 1 1900", "vc 0 500 710", "vc 1 1162 794", - "vc 2 1900 1140" + "vc 2 1900 1140", ]; assert_eq!(expected_commands, commands); }