ソースを参照

Harden AMD driver lookup logic

It looks like the version file doesnt exist on older(?) drivers
Daniel Hiltgen 1 年間 前
コミット
9754c6d9d8
2 ファイル変更16 行追加3 行削除
  1. 13 3
      gpu/amd.go
  2. 3 0
      gpu/gpu.go

+ 13 - 3
gpu/amd.go

@@ -2,6 +2,7 @@ package gpu
 
 import (
 	"bufio"
+	"errors"
 	"fmt"
 	"io"
 	"log/slog"
@@ -24,14 +25,23 @@ const (
 )
 
 func AMDDetected() bool {
-	_, err := AMDDriverVersion()
-	return err == nil
+	// Some driver versions (older?) don't have a version file, so just lookup the parent dir
+	sysfsDir := filepath.Dir(DriverVersionFile)
+	_, err := os.Stat(sysfsDir)
+	if errors.Is(err, os.ErrNotExist) {
+		slog.Debug("amd driver not detected " + sysfsDir)
+		return false
+	} else if err != nil {
+		slog.Debug(fmt.Sprintf("error looking up amd driver %s %s", sysfsDir, err))
+		return false
+	}
+	return true
 }
 
 func AMDDriverVersion() (string, error) {
 	_, err := os.Stat(DriverVersionFile)
 	if err != nil {
-		return "", err
+		return "", fmt.Errorf("amdgpu file stat error: %s %w", DriverVersionFile, err)
 	}
 	fp, err := os.Open(DriverVersionFile)
 	if err != nil {

+ 3 - 0
gpu/gpu.go

@@ -153,6 +153,9 @@ func GetGPUInfo() GpuInfo {
 		ver, err := AMDDriverVersion()
 		if err == nil {
 			slog.Info("AMD Driver: " + ver)
+		} else {
+			// For now this is benign, but we may eventually need to fail compatibility checks
+			slog.Debug("error looking up amd driver version: %s", err)
 		}
 		gfx := AMDGFXVersions()
 		tooOld := false