Skip to content

Commit 854c815

Browse files
committed
Use include-persistenced-socket feature for CDI mode
This change ensures that the internal CDI representation includes the persistenced socket if the include-persistenced-socket feature flag is enabled. Signed-off-by: Evan Lezar <[email protected]>
1 parent c1f3580 commit 854c815

File tree

7 files changed

+34
-18
lines changed

7 files changed

+34
-18
lines changed

internal/discover/ipc.go

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,12 @@ import (
2424
type ipcMounts mounts
2525

2626
// NewIPCDiscoverer creats a discoverer for NVIDIA IPC sockets.
27-
func NewIPCDiscoverer(logger logger.Interface, driverRoot string) (Discover, error) {
27+
func NewIPCDiscoverer(logger logger.Interface, driverRoot string, includePersistencedSocket bool) (Discover, error) {
28+
var requiredSockets []string
29+
if includePersistencedSocket {
30+
requiredSockets = append(requiredSockets, "/nvidia-persistenced/socket")
31+
}
32+
2833
sockets := newMounts(
2934
logger,
3035
lookup.NewFileLocator(
@@ -34,10 +39,7 @@ func NewIPCDiscoverer(logger logger.Interface, driverRoot string) (Discover, err
3439
lookup.WithCount(1),
3540
),
3641
driverRoot,
37-
[]string{
38-
"/nvidia-persistenced/socket",
39-
"/nvidia-fabricmanager/socket",
40-
},
42+
requiredSockets,
4143
)
4244

4345
mps := newMounts(

internal/modifier/cdi.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,7 @@ func generateAutomaticCDISpec(logger logger.Interface, cfg *config.Config, devic
189189
nvcdi.WithDriverRoot(cfg.NVIDIAContainerCLIConfig.Root),
190190
nvcdi.WithVendor("runtime.nvidia.com"),
191191
nvcdi.WithClass("gpu"),
192+
nvcdi.WithOptInFeature("include-persistenced-socket", cfg.Features.IncludePersistencedSocket.IsEnabled()),
192193
)
193194
if err != nil {
194195
return nil, fmt.Errorf("failed to construct CDI library: %w", err)

pkg/nvcdi/common-nvml.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ func (l *nvmllib) newCommonNVMLDiscoverer() (discover.Discover, error) {
4141
l.logger.Warningf("failed to create discoverer for graphics mounts: %v", err)
4242
}
4343

44-
driverFiles, err := NewDriverDiscoverer(l.logger, l.driver, l.nvidiaCDIHookPath, l.ldconfigPath, l.nvmllib)
44+
driverFiles, err := l.NewDriverDiscoverer()
4545
if err != nil {
4646
return nil, fmt.Errorf("failed to create discoverer for driver files: %v", err)
4747
}

pkg/nvcdi/driver-nvml.go

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -34,41 +34,41 @@ import (
3434

3535
// NewDriverDiscoverer creates a discoverer for the libraries and binaries associated with a driver installation.
3636
// The supplied NVML Library is used to query the expected driver version.
37-
func NewDriverDiscoverer(logger logger.Interface, driver *root.Driver, nvidiaCDIHookPath string, ldconfigPath string, nvmllib nvml.Interface) (discover.Discover, error) {
38-
if r := nvmllib.Init(); r != nvml.SUCCESS {
37+
func (l *nvmllib) NewDriverDiscoverer() (discover.Discover, error) {
38+
if r := l.nvmllib.Init(); r != nvml.SUCCESS {
3939
return nil, fmt.Errorf("failed to initialize NVML: %v", r)
4040
}
4141
defer func() {
42-
if r := nvmllib.Shutdown(); r != nvml.SUCCESS {
43-
logger.Warningf("failed to shutdown NVML: %v", r)
42+
if r := l.nvmllib.Shutdown(); r != nvml.SUCCESS {
43+
l.logger.Warningf("failed to shutdown NVML: %v", r)
4444
}
4545
}()
4646

47-
version, r := nvmllib.SystemGetDriverVersion()
47+
version, r := l.nvmllib.SystemGetDriverVersion()
4848
if r != nvml.SUCCESS {
4949
return nil, fmt.Errorf("failed to determine driver version: %v", r)
5050
}
5151

52-
return newDriverVersionDiscoverer(logger, driver, nvidiaCDIHookPath, ldconfigPath, version)
52+
return (*nvcdilib)(l).newDriverVersionDiscoverer(version)
5353
}
5454

55-
func newDriverVersionDiscoverer(logger logger.Interface, driver *root.Driver, nvidiaCDIHookPath, ldconfigPath, version string) (discover.Discover, error) {
56-
libraries, err := NewDriverLibraryDiscoverer(logger, driver, nvidiaCDIHookPath, ldconfigPath, version)
55+
func (l *nvcdilib) newDriverVersionDiscoverer(version string) (discover.Discover, error) {
56+
libraries, err := NewDriverLibraryDiscoverer(l.logger, l.driver, l.nvidiaCDIHookPath, l.ldconfigPath, version)
5757
if err != nil {
5858
return nil, fmt.Errorf("failed to create discoverer for driver libraries: %v", err)
5959
}
6060

61-
ipcs, err := discover.NewIPCDiscoverer(logger, driver.Root)
61+
ipcs, err := discover.NewIPCDiscoverer(l.logger, l.driver.Root, l.optInFeatures["include-persistenced-socket"])
6262
if err != nil {
6363
return nil, fmt.Errorf("failed to create discoverer for IPC sockets: %v", err)
6464
}
6565

66-
firmwares, err := NewDriverFirmwareDiscoverer(logger, driver.Root, version)
66+
firmwares, err := NewDriverFirmwareDiscoverer(l.logger, l.driver.Root, version)
6767
if err != nil {
6868
return nil, fmt.Errorf("failed to create discoverer for GSP firmware: %v", err)
6969
}
7070

71-
binaries := NewDriverBinariesDiscoverer(logger, driver.Root)
71+
binaries := NewDriverBinariesDiscoverer(l.logger, l.driver.Root)
7272

7373
d := discover.Merge(
7474
libraries,

pkg/nvcdi/lib.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,8 @@ type nvcdilib struct {
6363
infolib info.Interface
6464

6565
mergedDeviceOptions []transform.MergedDeviceOption
66+
67+
optInFeatures map[string]bool
6668
}
6769

6870
// New creates a new nvcdi library

pkg/nvcdi/management.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ func (m *managementlib) GetCommonEdits() (*cdi.ContainerEdits, error) {
6666
return nil, fmt.Errorf("failed to get CUDA version: %v", err)
6767
}
6868

69-
driver, err := newDriverVersionDiscoverer(m.logger, m.driver, m.nvidiaCDIHookPath, m.ldconfigPath, version)
69+
driver, err := (*nvcdilib)(m).newDriverVersionDiscoverer(version)
7070
if err != nil {
7171
return nil, fmt.Errorf("failed to create driver library discoverer: %v", err)
7272
}

pkg/nvcdi/options.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,3 +155,14 @@ func WithLibrarySearchPaths(paths []string) Option {
155155
o.librarySearchPaths = paths
156156
}
157157
}
158+
159+
// WithOptInFeature sets a specific opt-in feature.
160+
// Note that previous opt-in-features are not removed.
161+
func WithOptInFeature(feature string, enabled bool) Option {
162+
return func(n *nvcdilib) {
163+
if n.optInFeatures == nil {
164+
n.optInFeatures = make(map[string]bool)
165+
}
166+
n.optInFeatures[feature] = enabled
167+
}
168+
}

0 commit comments

Comments
 (0)