[PATCH] usertools: add check for IOMMU support in dpdk-devbind
    Fidaullah Noonari 
    fidaullah.noonari at emumba.com
       
    Tue Mar  8 13:49:01 CET 2022
    
    
  
binding with vfio driver, when IOMMU is disabled, causes program to crash.
this patch checks for IOMMU support, if it is disabled, changes vfio
into unsafe noiommu mode and prints a warning message.
Signed-off-by: Fidaullah Noonari <fidaullah.noonari at gmai.com>
---
 usertools/dpdk-devbind.py | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)
diff --git a/usertools/dpdk-devbind.py b/usertools/dpdk-devbind.py
index ace4627218..f42eead0c4 100755
--- a/usertools/dpdk-devbind.py
+++ b/usertools/dpdk-devbind.py
@@ -466,6 +466,26 @@ def unbind_all(dev_list, force=False):
         unbind_one(d, force)
 
 
+def check_iommu():
+    """Check if IOMMU is enabled on system"""
+    if len(os.listdir("/sys/class/iommu")) != 0:
+        return True
+    print("Warning: IOMMU support disabled")
+    return False
+
+
+def enable_noiommu_mode():
+    """Enables the noiommu mode for vfio drivers"""
+    filename = "/sys/module/vfio/parameters/enable_unsafe_noiommu_mode"
+    try:
+        f = open(filename, "w")
+    except:
+        sys.exit("Error: unable to enable noiommu mode, could not open '%s'" % filename)
+    f.write("1")
+    f.close()
+    print("Warning: enabling unsafe no IOMMU mode for vfio drivers")
+
+
 def bind_all(dev_list, driver, force=False):
     """Bind method, takes a list of device locations"""
     global devices
@@ -492,6 +512,11 @@ def bind_all(dev_list, driver, force=False):
     except ValueError as ex:
         sys.exit(ex)
 
+    # check for IOMMU support
+    if not check_iommu():
+        if driver == "vfio-pci":
+            enable_noiommu_mode()
+
     for d in dev_list:
         bind_one(d, driver, force)
 
-- 
2.25.1
    
    
More information about the dev
mailing list