@@ -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
112112func 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.
136144func 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