From 5de8e03ad0beed01b03c5f73e8ee90d459e42a04 Mon Sep 17 00:00:00 2001 From: Heitor Date: Thu, 4 Apr 2024 15:41:30 -0300 Subject: [PATCH] amd_gpu: better error message on device not found (#2035) --- src/blocks/amd_gpu.rs | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/src/blocks/amd_gpu.rs b/src/blocks/amd_gpu.rs index 25e9be9bf..78fc4a053 100644 --- a/src/blocks/amd_gpu.rs +++ b/src/blocks/amd_gpu.rs @@ -63,7 +63,7 @@ pub async fn run(config: &Config, api: &CommonApi) -> Result<()> { }; let device = match &config.device { - Some(name) => Device::new(name), + Some(name) => Device::new(name)?, None => Device::default_card() .await .error("failed to get default GPU")? @@ -121,9 +121,13 @@ struct GpuInfo { } impl Device { - fn new(name: &str) -> Self { - Self { - path: PathBuf::from(format!("/sys/class/drm/{name}/device")), + fn new(name: &str) -> Result { + let path = PathBuf::from(format!("/sys/class/drm/{name}/device")); + + if !path.exists() { + Err(Error::new(format!("Device {name} not found"))) + } else { + Ok(Self { path }) } } @@ -176,3 +180,14 @@ impl Device { }) } } + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_non_existing_gpu_device() { + let device = Device::new("/nope"); + assert!(device.is_err()); + } +}