Skip to content

Commit d236e4c

Browse files
committed
address review comments
1 parent 377f9cb commit d236e4c

File tree

1 file changed

+35
-9
lines changed

1 file changed

+35
-9
lines changed

launcher/internal/gpu/driverinstaller.go

Lines changed: 35 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import (
2323
const (
2424
CCModeON CCMode = "ON"
2525
CCModeOFF CCMode = "OFF"
26+
CCModeDevTools CCMode = "DEVTOOLS"
2627
installerContainerID = "tee-gpu-driver-installer-container"
2728
installerSnapshotID = "tee-gpu-driver-installer-snapshot"
2829
)
@@ -36,7 +37,7 @@ type CCMode string
3637

3738
func (ccm CCMode) isValid() error {
3839
switch ccm {
39-
case CCModeOFF, CCModeON:
40+
case CCModeOFF, CCModeON, CCModeDevTools:
4041
return nil
4142
}
4243
return fmt.Errorf("invalid gpu cc mode: %s", ccm)
@@ -90,8 +91,7 @@ func (di *DriverInstaller) InstallGPUDrivers(ctx context.Context) error {
9091
return fmt.Errorf("failed to pull installer image: %v", err)
9192
}
9293

93-
installerDigest := image.Target().Digest.String()
94-
if err := verifyInstallerImageDigest(installerDigest); err != nil {
94+
if err := verifyInstallerImageDigest(image); err != nil {
9595
return err
9696
}
9797

@@ -195,7 +195,8 @@ func getInstallerImageReference() (string, error) {
195195
return installerImageRef, nil
196196
}
197197

198-
func verifyInstallerImageDigest(installerDigest string) error {
198+
func verifyInstallerImageDigest(image containerd.Image) error {
199+
installerDigest := image.Target().Digest.String()
199200
imageDigestBytes, err := os.ReadFile(InstallerImageDigestFile)
200201
if err != nil {
201202
return fmt.Errorf("failed to get the cos-gpu-installer image digest: %v", err)
@@ -239,16 +240,16 @@ func setGPUStateToReady() error {
239240
}
240241

241242
func isGPUCCModeEnabled() (bool, error) {
242-
ccMode, err := GetGPUCCMode()
243+
ccMode, err := QueryCCMode()
243244
if err != nil {
244245
return false, err
245246
}
246247
return ccMode == CCModeON, nil
247248
}
248249

249-
// GetGPUCCMode executes nvidia-smi to determine the current Confidential Computing (CC) mode status of the GPU.
250-
// It returns the CC mode ("ON" or "OFF") and an error if the command fails or if the output cannot be parsed.
251-
func GetGPUCCMode() (CCMode, error) {
250+
// QueryCCMode executes nvidia-smi to determine the current Confidential Computing (CC) mode status of the GPU.
251+
// If DEVTOOLS mode is enabled, it would override CC mode as DEVTOOLS. DEVTOOLS mode would be enabled only when CC mode is ON.
252+
func QueryCCMode() (CCMode, error) {
252253
// Run nvidia-smi conf-compute command to get the confidential computing mode status.
253254
nvidiaSmiCmd := fmt.Sprintf("%s/bin/nvidia-smi", InstallationHostDir)
254255
ccModeOutput, err := exec.Command(nvidiaSmiCmd, "conf-compute", "-f").Output()
@@ -259,7 +260,17 @@ func GetGPUCCMode() (CCMode, error) {
259260
if err != nil {
260261
return "", err
261262
}
262-
return CCMode(ccMode), nil
263+
264+
devToolsEnabled, err := isDevToolsModeEnabled()
265+
if err != nil {
266+
return "", err
267+
}
268+
269+
if devToolsEnabled {
270+
ccMode = CCModeDevTools
271+
}
272+
273+
return ccMode, nil
263274
}
264275

265276
func parseCCStatus(output string) (CCMode, error) {
@@ -276,6 +287,21 @@ func parseCCStatus(output string) (CCMode, error) {
276287
return ccMode, nil
277288
}
278289

290+
func isDevToolsModeEnabled() (bool, error) {
291+
nvidiaSmiCmd := fmt.Sprintf("%s/bin/nvidia-smi", InstallationHostDir)
292+
output, err := exec.Command(nvidiaSmiCmd, "conf-compute", "-d").Output()
293+
if err != nil {
294+
return false, err
295+
}
296+
re := regexp.MustCompile(`DevTools Mode:\s*(ON|OFF)`)
297+
match := re.FindStringSubmatch(string(output))
298+
299+
if len(match) < 2 {
300+
return false, fmt.Errorf("DevTools mode not found in output: %s", output)
301+
}
302+
return match[1] == "ON", nil
303+
}
304+
279305
func launchNvidiaPersistencedProcess(logger logging.Logger) error {
280306
nvidiaPersistencedCmd := fmt.Sprintf("%s/bin/nvidia-persistenced", InstallationHostDir)
281307
logger.Info("Starting nvidia-persistenced process")

0 commit comments

Comments
 (0)