From b67df474258e4787ecf7da40443bb74a3627949b Mon Sep 17 00:00:00 2001
From: Simon Michnowicz <simon.michnowicz@monash.edu>
Date: Mon, 8 Apr 2019 17:58:49 +1000
Subject: [PATCH] modified detection of pci bus id's to account for baremetal
 machines have a different format

---
 roles/gpu/files/scripts/nvidia-xconf-gen.py | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/roles/gpu/files/scripts/nvidia-xconf-gen.py b/roles/gpu/files/scripts/nvidia-xconf-gen.py
index 7cd9cb55..6993d333 100755
--- a/roles/gpu/files/scripts/nvidia-xconf-gen.py
+++ b/roles/gpu/files/scripts/nvidia-xconf-gen.py
@@ -29,8 +29,18 @@ def grab_card_ids():
     cards = []
 
     for line in p.stdout.readlines():
-        line = line.rstrip().split(":")[2]
-        pcibus_num = int(re.sub('[.:]', '', line).rstrip("0"),16)
+	stripped_line = line.rstrip().split(":")[2]
+        #check for different format of pcibus_id. This happens on baremetals
+        # i.e. 00000000:06:00.0 not 00000000:00:06.0
+        pcibus_id = re.sub('[.:]', '', stripped_line).rstrip("0")
+        if not pcibus_id: # empty string, try the other way
+                 stripped_line = line.rstrip().split(":")[1]
+                 pcibus_id = re.sub('[.:]', '', stripped_line).rstrip("0")
+                 if not pcibus_id:
+                        print("Error in grab_card_ids: we can not parse the line {}".format(line))
+                        print("Command that generated it is: {}".format(cmd))
+                        system.exit(1)
+        pcibus_num = int(pcibus_id,16)
         card = "PCI:0:{}:0".format(str(pcibus_num))
         cards.append(card)
     return cards
-- 
GitLab