Skip to content

Commit d3d41a3

Browse files
committed
Simplify handling of custom firmware path
Signed-off-by: Evan Lezar <elezar@nvidia.com>
1 parent 0a37f87 commit d3d41a3

File tree

1 file changed

+16
-8
lines changed

1 file changed

+16
-8
lines changed

pkg/nvcdi/driver-nvml.go

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ func NewDriverLibraryDiscoverer(logger logger.Interface, driverRoot string, nvid
101101
return d, nil
102102
}
103103

104-
func getUTSRelease(logger logger.Interface) (string, error) {
104+
func getUTSRelease() (string, error) {
105105
utsname := &unix.Utsname{}
106106
if err := unix.Uname(utsname); err != nil {
107107
return "", err
@@ -110,7 +110,7 @@ func getUTSRelease(logger logger.Interface) (string, error) {
110110
}
111111

112112
func getFirmwareSearchPaths(logger logger.Interface) ([]string, error) {
113-
utsRelease, err := getUTSRelease(logger)
113+
utsRelease, err := getUTSRelease()
114114
if err != nil {
115115
return nil, fmt.Errorf("failed to get UTS_RELEASE: %v", err)
116116
}
@@ -122,21 +122,29 @@ func getFirmwareSearchPaths(logger logger.Interface) ([]string, error) {
122122
filepath.Join("/lib/firmware/"),
123123
}
124124

125+
if p := getCustomFirmwareClassPath(logger); p != "" {
126+
logger.Debugf("using custom firmware class path: %s", p)
127+
firmwarePaths = append(firmwarePaths, p)
128+
}
129+
return firmwarePaths, nil
130+
}
131+
132+
// getCustomFirmwareClassPath returns the custom firmware class path if it exists.
133+
func getCustomFirmwareClassPath(logger logger.Interface) string {
125134
customFirmwareClassPath, err := os.ReadFile("/sys/module/firmware_class/parameters/path")
126135
if err != nil {
127-
return nil, fmt.Errorf("failed to get custom firmware class path for driver version: %v", err)
136+
logger.Warningf("failed to get custom firmware class path: %v", err)
137+
return ""
128138
}
129-
if !(len(customFirmwareClassPath) == 1 && customFirmwareClassPath[0] == byte(10)) {
130-
firmwarePaths = append(firmwarePaths, string(customFirmwareClassPath))
131-
}
132-
return firmwarePaths, nil
139+
140+
return strings.TrimSpace(string(customFirmwareClassPath))
133141
}
134142

135143
// NewDriverFirmwareDiscoverer creates a discoverer for GSP firmware associated with the specified driver version.
136144
func NewDriverFirmwareDiscoverer(logger logger.Interface, driverRoot string, version string) (discover.Discover, error) {
137145
gspFirmwareSearchPaths, err := getFirmwareSearchPaths(logger)
138146
if err != nil {
139-
return nil, fmt.Errorf("failed to get libraries for driver version: %v", err)
147+
return nil, fmt.Errorf("failed to get firmware search paths: %v", err)
140148
}
141149
gspFirmwarePaths := filepath.Join("nvidia", version, "gsp*.bin")
142150
return discover.NewMounts(

0 commit comments

Comments
 (0)