[lxc-devel] [lxd/master] gpu: skip non-existing Nvidia devices
brauner on Github
lxc-bot at linuxcontainers.org
Wed Nov 22 11:09:22 UTC 2017
A non-text attachment was scrubbed...
Name: not available
Type: text/x-mailbox
Size: 536 bytes
Desc: not available
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20171122/65d70506/attachment.bin>
-------------- next part --------------
From de70922e68967569c6bbacec162b24cd1a9664a2 Mon Sep 17 00:00:00 2001
From: Christian Brauner <christian.brauner at ubuntu.com>
Date: Wed, 22 Nov 2017 12:06:15 +0100
Subject: [PATCH] gpu: skip non-existing Nvidia devices
When the Nvidia driver isn't loaded the needed information about Nvidia gpu
devices cannot be gathered. In this case skip trying to list Nvidia cards.
Closes #4044.
Signed-off-by: Christian Brauner <christian.brauner at ubuntu.com>
---
lxd/devices.go | 27 ++++++++++++++++++---------
1 file changed, 18 insertions(+), 9 deletions(-)
diff --git a/lxd/devices.go b/lxd/devices.go
index 9b6edbfc1..bf2772a83 100644
--- a/lxd/devices.go
+++ b/lxd/devices.go
@@ -194,15 +194,6 @@ func deviceLoadGpu() ([]gpuDevice, []nvidiaGpuDevices, error) {
continue
}
- if isCard {
- // If it is a card it's minor number will be its id.
- tmpGpu.id = strconv.Itoa(minorInt)
- tmp := cardIds{
- id: tmpGpu.id,
- pci: tmpGpu.pci,
- }
- cards = append(cards, tmp)
- }
// Find matching /dev/nvidia* entry for /dev/dri/card*
if tmpGpu.isNvidiaGpu() && isCard {
if !isNvidia {
@@ -212,6 +203,10 @@ func deviceLoadGpu() ([]gpuDevice, []nvidiaGpuDevices, error) {
nvidiaPath := fmt.Sprintf("/proc/driver/nvidia/gpus/%s/information", tmpGpu.pci)
buf, err := ioutil.ReadFile(nvidiaPath)
if err != nil {
+ if os.IsNotExist(err) {
+ continue
+ }
+
return nil, nil, err
}
strBuf := strings.TrimSpace(string(buf))
@@ -240,6 +235,10 @@ func deviceLoadGpu() ([]gpuDevice, []nvidiaGpuDevices, error) {
stat := syscall.Stat_t{}
err = syscall.Stat(nvidiaPath, &stat)
if err != nil {
+ if os.IsNotExist(err) {
+ continue
+ }
+
return nil, nil, err
}
tmpGpu.nvidia.path = nvidiaPath
@@ -247,6 +246,16 @@ func deviceLoadGpu() ([]gpuDevice, []nvidiaGpuDevices, error) {
tmpGpu.nvidia.minor = shared.Minor(stat.Rdev)
tmpGpu.nvidia.id = strconv.Itoa(tmpGpu.nvidia.minor)
}
+
+ if isCard {
+ // If it is a card it's minor number will be its id.
+ tmpGpu.id = strconv.Itoa(minorInt)
+ tmp := cardIds{
+ id: tmpGpu.id,
+ pci: tmpGpu.pci,
+ }
+ cards = append(cards, tmp)
+ }
gpus = append(gpus, tmpGpu)
}
}
More information about the lxc-devel
mailing list