summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorsongyanchao <[email protected]>2022-12-23 06:11:33 +0000
committersongyanchao <[email protected]>2022-12-23 06:11:33 +0000
commite01b25a8e5504899e997d5eab8c5a3ff29016531 (patch)
treef6d450ee48cf0f0c2d44190c7654e9e41e43d429 /tools
parente36dc15ee97ad00fc2ef04f540e284baa907ff8b (diff)
🐞 fix(TSG-13124): 修复"enable_unsafe_noiommu_mod"设置失败、“systemctl stop”响应时间过长问题
修复"enable_unsafe_noiommu_mod"设置失败、“systemctl stop”响应时间过长问题
Diffstat (limited to 'tools')
-rw-r--r--tools/devbind/devbind.py47
-rw-r--r--tools/systemd/mrenv-script35
2 files changed, 37 insertions, 45 deletions
diff --git a/tools/devbind/devbind.py b/tools/devbind/devbind.py
index a51e435..cac493c 100644
--- a/tools/devbind/devbind.py
+++ b/tools/devbind/devbind.py
@@ -249,9 +249,8 @@ def unbind_one(devices, dev_id, force):
filename = "/sys/bus/pci/drivers/%s/unbind" % dev["Driver_str"]
try:
f = open(filename, "a")
- except OSError as err:
- sys.exit("Error: unbind failed for %s - Cannot open %s: %s" %
- (dev_id, filename, err))
+ except :
+ sys.exit("Error: unbind failed for %s - Cannot open %s" %(dev_id, filename))
f.write(dev_id)
f.close()
@@ -297,58 +296,52 @@ def bind_one(devices,dev_id, driver, force):
if exists(filename):
try:
f = open(filename, "w")
- except OSError as err:
- print("Error: bind failed for %s - Cannot open %s: %s"
- % (dev_id, filename, err))
+ except :
+ print("Error: bind failed for %s - Cannot open %s" % (dev_id, filename))
return
try:
f.write("%s" % driver)
f.close()
- except OSError as err:
- print("Error: bind failed for %s - Cannot write driver %s to "
- "PCI ID: %s" % (dev_id, driver, err))
+ except :
+ print("Error: bind failed for %s - Cannot write driver %s " % (dev_id, driver))
return
# For kernels < 3.15 use new_id to add PCI id's to the driver
else:
filename = "/sys/bus/pci/drivers/%s/new_id" % driver
try:
f = open(filename, "w")
- except OSError as err:
- print("Error: bind failed for %s - Cannot open %s: %s"
- % (dev_id, filename, err))
+ except :
+ print("Error: bind failed for %s - Cannot open %s" % (dev_id, filename))
return
try:
# Convert Device and Vendor Id to int to write to new_id
f.write("%04x %04x" % (int(dev["Vendor"], 16),
int(dev["Device"], 16)))
f.close()
- except OSError as err:
- print("Error: bind failed for %s - Cannot write new PCI ID to "
- "driver %s: %s" % (dev_id, driver, err))
+ except :
+ print("Error: bind failed for %s - Cannot write new PCI ID to " "driver %s" % (dev_id, driver))
return
# do the bind by writing to /sys
filename = "/sys/bus/pci/drivers/%s/bind" % driver
try:
f = open(filename, "a")
- except OSError as err:
- print("Error: bind failed for %s - Cannot open %s: %s"
- % (dev_id, filename, err))
+ except :
+ print("Error: bind failed for %s - Cannot open %s"% (dev_id, filename))
if saved_driver is not None: # restore any previous driver
bind_one(devices,dev_id, saved_driver, force)
return
try:
f.write(dev_id)
f.close ()
- except OSError as err:
+ except :
# for some reason, closing dev_id after adding a new PCI ID to new_id
# results in IOError. however, if the device was successfully bound,
# we don't care for any errors and can safely ignore IOError
- tmp = get_pci_device_details(dev_id, True)
+ tmp = get_pci_device_details(dev_id)
if "Driver_str" in tmp and tmp["Driver_str"] == driver:
return
- print("Error: bind failed for %s - Cannot bind to driver %s: %s"
- % (dev_id, driver, err))
+ print("Error: bind failed for %s - Cannot bind to driver %s"% (dev_id, driver))
if saved_driver is not None: # restore any previous driver
bind_one(devices,dev_id, saved_driver, force)
return
@@ -360,15 +353,13 @@ def bind_one(devices,dev_id, driver, force):
if exists(filename):
try:
f = open(filename, "w")
- except OSError as err:
- sys.exit("Error: unbind failed for %s - Cannot open %s: %s"
- % (dev_id, filename, err))
+ except :
+ sys.exit("Error: unbind failed for %s - Cannot open %s"% (dev_id, filename))
try:
f.write("\00")
f.close()
- except OSError as err:
- sys.exit("Error: unbind failed for %s - Cannot write %s: %s"
- % (dev_id, filename, err))
+ except :
+ sys.exit("Error: unbind failed for %s - Cannot write %s"% (dev_id, filename))
def unbind_all(devices, dev_list, force=False):
"""Unbind method, takes a list of device locations"""
diff --git a/tools/systemd/mrenv-script b/tools/systemd/mrenv-script
index d769ab2..074c569 100644
--- a/tools/systemd/mrenv-script
+++ b/tools/systemd/mrenv-script
@@ -60,7 +60,7 @@ function module_load_kni()
echo -n "$KNI_MODULE_FILENAME does not existed. "
return 1
fi
-
+
module_unload_kni
insmod $MODULE_PATH/$KNI_MODULE_FILENAME > /dev/null 2>&1
[ ! $? -eq 0 ] && echo -n " $MODULE_PATH/$KNI_MODULE_FILENAME load failure." && return 1
@@ -93,9 +93,10 @@ function module_unload_vfio_pci()
function module_load_vfio_pci()
{
- modprobe vfio enable_unsafe_noiommu_mode=1
+ modprobe vfio
[ ! $? -eq 0 ] && echo "failed at modprobe vfio" && return 1
+ echo 1 > /sys/module/vfio/parameters/enable_unsafe_noiommu_mode
modprobe vfio_pci
return $?
}
@@ -124,7 +125,7 @@ function huge_release_1G()
umount $HUGEPAGE_PATH_1G > /dev/null
[ ! $? -eq 0 ] && echo "umount 1G hugepage failure, maybe in use" && return 1
fi
-
+
if [ -d $HUGEPAGE_PATH_1G ] ; then
rm -R $HUGEPAGE_PATH_1G
[ ! $? -eq 0 ] && echo "Cannot delete 2M hugepage" && return 1
@@ -133,7 +134,7 @@ function huge_release_1G()
if [ $HUGEPAGE_NUM_1G -ne 0 ]; then
echo -n 0 > $NR_HUGEPAGE_FILE_1G
fi
-
+
return 0
}
@@ -146,16 +147,16 @@ function huge_release_2M()
umount $HUGEPAGE_PATH_2M > /dev/null
[ ! $? -eq 0 ] && echo "umount 2M hugepage failure, maybe in use" && return 1
fi
-
+
if [ -d $HUGEPAGE_PATH_2M ] ; then
rm -R $HUGEPAGE_PATH_2M
[ ! $? -eq 0 ] && echo "Cannot delete 2M hugepage" && return 1
fi
-
+
if [ $HUGEPAGE_NUM_2M -ne 0 ]; then
echo -n 0 > $NR_HUGEPAGE_FILE_2M
fi
-
+
return 0
}
@@ -164,7 +165,7 @@ function huge_alloc_1G()
if [ ! -e $NR_HUGEPAGE_FILE_1G ]; then
return 1
fi
-
+
echo -n $HUGEPAGE_NUM_1G > $NR_HUGEPAGE_FILE_1G
[ $? -eq 0 ] && return 0
return 1
@@ -175,7 +176,7 @@ function huge_alloc_2M()
if [ ! -e $NR_HUGEPAGE_FILE_2M ]; then
return 1
fi
-
+
echo -n $HUGEPAGE_NUM_2M > $NR_HUGEPAGE_FILE_2M
[ $? -eq 0 ] && return 0
return 1
@@ -186,13 +187,13 @@ function huge_mount_1G()
if [ ! -e $NR_HUGEPAGE_FILE_1G ]; then
return 0
fi
-
+
SIZE_1G=$(cat $NR_HUGEPAGE_FILE_1G)
if [ $SIZE_1G -eq 0 ]; then
return 0
fi
- mkdir -p $HUGEPAGE_PATH_1G
+ mkdir -p $HUGEPAGE_PATH_1G
mount -t hugetlbfs nodev -o pagesize=1G $HUGEPAGE_PATH_1G
[ $? -eq 0 ] && return 0
return 1
@@ -203,13 +204,13 @@ function huge_mount_2M()
if [ ! -e $NR_HUGEPAGE_FILE_2M ]; then
return 0
fi
-
+
SIZE_2M=$(cat $NR_HUGEPAGE_FILE_2M)
if [ $SIZE_2M -eq 0 ]; then
return 0
fi
- mkdir -p $HUGEPAGE_PATH_2M
+ mkdir -p $HUGEPAGE_PATH_2M
mount -t hugetlbfs nodev -o pagesize=2M $HUGEPAGE_PATH_2M
[ $? -eq 0 ] && return 0
return 1
@@ -256,7 +257,7 @@ function nic_unbind_ixgbe()
OLDIFS=$IFS; IFS=,
for ITER_PCI_ADDR in $PCI_ADDR_IXGBE; do
$NICTOOL --force -b ixgbe $ITER_PCI_ADDR
- [ ! $? -eq 0 ] && return 1
+ [ ! $? -eq 0 ] && return 1
done
IFS=$OLDIFS
return 0
@@ -373,7 +374,7 @@ function module_load()
if [ "$DEFAULT_UIO_MODULE" == "vfio_pci" ]; then
module_load_vfio_pci
return $?
- fi
+ fi
return 0
}
@@ -412,8 +413,8 @@ function stop()
[ ! $? -eq 0 ] && return 1
return 0
}
-
-function restart()
+
+function restart()
{
stop
start $*