1414# limitations under the License.
1515**/
1616
17- package nvcdi
17+ package dgpu
1818
1919import (
2020 "fmt"
@@ -31,66 +31,50 @@ import (
3131 "github.com/NVIDIA/nvidia-container-toolkit/internal/lookup/root"
3232)
3333
34- // NewDriverDiscoverer creates a discoverer for the libraries and binaries associated with a driver installation.
35- // The supplied NVML Library is used to query the expected driver version.
36- func NewDriverDiscoverer (logger logger.Interface , driver * root.Driver , nvidiaCDIHookPath string , ldconfigPath string , version string ) (discover.Discover , error ) {
37- return newDriverVersionDiscoverer (logger , driver , nvidiaCDIHookPath , ldconfigPath , version )
38- }
39-
40- func newDriverVersionDiscoverer (logger logger.Interface , driver * root.Driver , nvidiaCDIHookPath , ldconfigPath , version string ) (discover.Discover , error ) {
41- libraries , err := NewDriverLibraryDiscoverer (logger , driver , nvidiaCDIHookPath , ldconfigPath , version )
34+ // newNvmlDriverDiscoverer constructs a discoverer from the specified NVML library.
35+ func (o * options ) newNvmlDriverDiscoverer () (discover.Discover , error ) {
36+ libraries , err := o .newNvmlDriverLibraryDiscoverer ()
4237 if err != nil {
4338 return nil , fmt .Errorf ("failed to create discoverer for driver libraries: %v" , err )
4439 }
4540
46- ipcs , err := discover .NewIPCDiscoverer (logger , driver .Root )
47- if err != nil {
48- return nil , fmt .Errorf ("failed to create discoverer for IPC sockets: %v" , err )
49- }
50-
51- firmwares , err := NewDriverFirmwareDiscoverer (logger , driver .Root , version )
41+ firmwares , err := o .newNvmlDriverFirmwareDiscoverer ()
5242 if err != nil {
5343 return nil , fmt .Errorf ("failed to create discoverer for GSP firmware: %v" , err )
5444 }
5545
56- binaries := NewDriverBinariesDiscoverer ( logger , driver . Root )
46+ binaries := o . newNvmlDriverBinariesDiscoverer ( )
5747
5848 d := discover .Merge (
5949 libraries ,
60- ipcs ,
6150 firmwares ,
6251 binaries ,
6352 )
6453
6554 return d , nil
6655}
6756
68- // NewDriverLibraryDiscoverer creates a discoverer for the libraries associated with the specified driver version.
69- func NewDriverLibraryDiscoverer ( logger logger. Interface , driver * root. Driver , nvidiaCDIHookPath , ldconfigPath , version string ) (discover.Discover , error ) {
70- libraryPaths , err := getVersionLibs (logger , driver , version )
57+ // newNvmlDriverLibraryDiscoverer creates a discoverer for the libraries associated with the specified driver version.
58+ func ( o * options ) newNvmlDriverLibraryDiscoverer ( ) (discover.Discover , error ) {
59+ libraryPaths , err := getVersionLibs (o . logger , o . driver , o . version )
7160 if err != nil {
7261 return nil , fmt .Errorf ("failed to get libraries for driver version: %v" , err )
7362 }
7463
7564 libraries := discover .NewMounts (
76- logger ,
65+ o . logger ,
7766 lookup .NewFileLocator (
78- lookup .WithLogger (logger ),
79- lookup .WithRoot (driver .Root ),
67+ lookup .WithLogger (o . logger ),
68+ lookup .WithRoot (o . driver .Root ),
8069 ),
81- driver .Root ,
70+ o . driver .Root ,
8271 libraryPaths ,
8372 )
8473
85- updateLDCache , _ := discover .NewLDCacheUpdateHook (logger , libraries , nvidiaCDIHookPath , ldconfigPath )
86-
87- d := discover .Merge (
88- discover .WithDriverDotSoSymlinks (
89- libraries ,
90- version ,
91- nvidiaCDIHookPath ,
92- ),
93- updateLDCache ,
74+ d := discover .WithDriverDotSoSymlinks (
75+ libraries ,
76+ o .version ,
77+ o .nvidiaCDIHookPath ,
9478 )
9579
9680 return d , nil
@@ -138,31 +122,31 @@ func getCustomFirmwareClassPath(logger logger.Interface) string {
138122 return strings .TrimSpace (string (customFirmwareClassPath ))
139123}
140124
141- // NewDriverFirmwareDiscoverer creates a discoverer for GSP firmware associated with the specified driver version.
142- func NewDriverFirmwareDiscoverer ( logger logger. Interface , driverRoot string , version string ) (discover.Discover , error ) {
143- gspFirmwareSearchPaths , err := getFirmwareSearchPaths (logger )
125+ // newNvmlDriverFirmwareDiscoverer creates a discoverer for GSP firmware associated with the specified driver version.
126+ func ( o * options ) newNvmlDriverFirmwareDiscoverer ( ) (discover.Discover , error ) {
127+ gspFirmwareSearchPaths , err := getFirmwareSearchPaths (o . logger )
144128 if err != nil {
145129 return nil , fmt .Errorf ("failed to get firmware search paths: %v" , err )
146130 }
147- gspFirmwarePaths := filepath .Join ("nvidia" , version , "gsp*.bin" )
131+ gspFirmwarePaths := filepath .Join ("nvidia" , o . version , "gsp*.bin" )
148132 return discover .NewMounts (
149- logger ,
133+ o . logger ,
150134 lookup .NewFileLocator (
151- lookup .WithLogger (logger ),
152- lookup .WithRoot (driverRoot ),
135+ lookup .WithLogger (o . logger ),
136+ lookup .WithRoot (o . driver . Root ),
153137 lookup .WithSearchPaths (gspFirmwareSearchPaths ... ),
154138 ),
155- driverRoot ,
139+ o . driver . Root ,
156140 []string {gspFirmwarePaths },
157141 ), nil
158142}
159143
160- // NewDriverBinariesDiscoverer creates a discoverer for GSP firmware associated with the GPU driver.
161- func NewDriverBinariesDiscoverer ( logger logger. Interface , driverRoot string ) discover.Discover {
144+ // newNvmlDriverBinariesDiscoverer creates a discoverer for binaries associated with the specified driver version .
145+ func ( o * options ) newNvmlDriverBinariesDiscoverer ( ) discover.Discover {
162146 return discover .NewMounts (
163- logger ,
164- lookup .NewExecutableLocator (logger , driverRoot ),
165- driverRoot ,
147+ o . logger ,
148+ lookup .NewExecutableLocator (o . logger , o . driver . Root ),
149+ o . driver . Root ,
166150 []string {
167151 "nvidia-smi" , /* System management interface */
168152 "nvidia-debugdump" , /* GPU coredump utility */
0 commit comments