From 0bc59a02cc81ad6373fc80a8e37a0a53d41dbb39 Mon Sep 17 00:00:00 2001 From: Ilya Zlobintsev Date: Sat, 22 Apr 2023 10:27:47 +0300 Subject: [PATCH] fix: check for DEVTYPE=drm_minor when trying to find usable gpu paths instead of using the name --- lact-daemon/src/server/handler.rs | 40 +++++++++++++++---------------- 1 file changed, 19 insertions(+), 21 deletions(-) diff --git a/lact-daemon/src/server/handler.rs b/lact-daemon/src/server/handler.rs index d2f241f..6915105 100644 --- a/lact-daemon/src/server/handler.rs +++ b/lact-daemon/src/server/handler.rs @@ -8,7 +8,7 @@ use lact_schema::{ }; use std::{ collections::HashMap, - env, + env, fs, path::PathBuf, sync::{Arc, RwLock}, }; @@ -35,27 +35,25 @@ impl<'a> Handler { { let entry = entry?; - let name = entry - .file_name() - .into_string() - .map_err(|_| anyhow!("non-utf path"))?; - if name.starts_with("card") && !name.contains('-') { - trace!("trying gpu controller at {:?}", entry.path()); - let device_path = entry.path().join("device"); - match GpuController::new_from_path(device_path) { - Ok(controller) => match controller.get_id() { - Ok(id) => { - let path = controller.get_path(); - debug!("initialized GPU controller {id} for path {path:?}",); - controllers.insert(id, controller); + if let Ok(drm_uevent) = fs::read_to_string(entry.path().join("uevent")) { + if drm_uevent.contains("DEVTYPE=drm_minor") { + trace!("trying gpu controller at {:?}", entry.path()); + let device_path = entry.path().join("device"); + match GpuController::new_from_path(device_path) { + Ok(controller) => match controller.get_id() { + Ok(id) => { + let path = controller.get_path(); + debug!("initialized GPU controller {id} for path {path:?}",); + controllers.insert(id, controller); + } + Err(err) => warn!("could not initialize controller: {err:#}"), + }, + Err(error) => { + warn!( + "failed to initialize controller at {:?}, {error}", + entry.path() + ); } - Err(err) => warn!("could not initialize controller: {err:#}"), - }, - Err(error) => { - warn!( - "failed to initialize controller at {:?}, {error}", - entry.path() - ); } } }