again check for virtio disks (not used now but it doesn't hurt to have them here)
[bootmanager.git] / source / systeminfo.py
index 25f5ea6..78fc2b6 100755 (executable)
@@ -117,7 +117,8 @@ def get_block_device_list(vars = {}, log = sys.stderr):
     # table with valid scsi/sata/ide/raid block device names
     valid_blk_names = {}
     # add in valid sd and hd block device names
-    for blk_prefix in ('sd','hd'):
+    # also check for vd (virtio devices used with kvm)
+    for blk_prefix in ('sd','hd','vd'):
         for blk_num in map ( \
             lambda x: chr(x), range(ord('a'),ord('z')+1)):
             devicename="%s%c" % (blk_prefix, blk_num)
@@ -277,14 +278,22 @@ def get_system_modules( vars = {}, log = sys.stderr):
     # XXX: this is really similar to what BootCD/conf_files/pl_hwinit does. merge?
     pcidevs = get_devices()
 
-    for slot in sorted(pcidevs.keys()):
+    devlist=pcidevs.keys()
+    devlist.sort()
+    for slot in devlist:
         dev = pcidevs[slot]
         base = (dev[4] & 0xff0000) >> 16
+        modules = pcimap.get(dev)
         if base not in (PCI_BASE_CLASS_STORAGE,
                         PCI_BASE_CLASS_NETWORK):
-            continue
+            # special exception for forcedeth NICs whose base id
+            # claims to be a Bridge, even though it is clearly a
+            # network device
+            if "forcedeth" in modules: 
+                base=PCI_BASE_CLASS_NETWORK
+            else:
+                continue
 
-        modules = pcimap.get(dev)
         if len(modules) > 0:
             if base == PCI_BASE_CLASS_NETWORK:
                 network_mods += modules