From: "Tosatti, Giovanni" <GTosatti@empirix.com>
To: "dev@dpdk.org" <dev@dpdk.org>
Subject: [dpdk-dev] Add option to dpdk-devbind.py to restore kernel driver binding
Date: Tue, 10 Apr 2018 10:55:19 +0000 [thread overview]
Message-ID: <40ff3805d8a647f8bda4a386cc6a3987@bilemail2.empirix.com> (raw)
This patch adds a " --restore" option that will unbind all devices currently bound to DPDK PMDs back to the kernel driver.
--- /opt/Perforce/gtosatti_centos/E-XMS/CSA-Mainline/Third-Party/dpdk/dpdk-16.07.orig/tools/dpdk-devbind.py
+++ /opt/Perforce/gtosatti_centos/E-XMS/CSA-Mainline/Third-Party/dpdk/dpdk-16.07/tools/dpdk-devbind.py
@@ -91,6 +91,9 @@
-u, --unbind:
Unbind a device (Equivalent to \"-b none\")
+ -r, --restore
+ Restore ALL the DPDK devices to their kernel drivers
+
--force:
By default, devices which are used by Linux - as indicated by having
routes in the routing table - cannot be modified. Using the --force
@@ -448,6 +451,21 @@
if "Driver_str" in devices[d]:
unbind_one(d, force)
+def restore_all_to_kernel():
+ global force_flag
+ # List all the available devices
+ for d in devices.keys():
+ if not has_driver(d):
+ # Discard the unbinded devices
+ continue
+ if devices[d]["Driver_str"] in dpdk_drivers:
+ # List the unused Drivers of the the DPDK Devices...
+ unused_drivers = devices[d]["Module_str"].split(",")
+ print("Restoring kernel driver for: %s '%s' '%s'" % (devices[d]["Slot"],
+ devices[d]["Device_str"], devices[d]["Module_str"]))
+ # Bind the current Device to the FIRST unused Driver
+ if unused_drivers:
+ bind_one(devices[d]["Slot"], unused_drivers[0], force_flag)
def display_devices(title, dev_list, extra_params=None):
'''Displays to the user the details of a list of devices given in
@@ -513,7 +531,7 @@
try:
opts, args = getopt.getopt(sys.argv[1:], "b:us",
["help", "usage", "status", "force",
- "bind=", "unbind"])
+ "bind=", "unbind", "restore"])
except getopt.GetoptError as error:
print(str(error))
print("Run '%s --usage' for further information" % sys.argv[0])
@@ -527,11 +545,15 @@
status_flag = True
if opt == "--force":
force_flag = True
- if opt == "-b" or opt == "-u" or opt == "--bind" or opt == "--unbind":
+ if (opt == "-b" or opt == "--bind" or
+ opt == "-u" or opt == "--unbind" or
+ opt == "-r" or opt == "--restore"):
if b_flag is not None:
print("Error - Only one bind or unbind may be specified\n")
sys.exit(1)
- if opt == "-u" or opt == "--unbind":
+ if opt == "-r" or opt == "--restore":
+ b_flag = "restore"
+ elif opt == "-u" or opt == "--unbind":
b_flag = "none"
else:
b_flag = arg
@@ -551,11 +573,14 @@
sys.exit(1)
if b_flag is not None and len(args) == 0:
- print("Error: No devices specified.")
- print("Run '%s --usage' for further information" % sys.argv[0])
- sys.exit(1)
-
- if b_flag == "none" or b_flag == "None":
+ if b_flag != "restore":
+ print("Error: No devices specified.")
+ print("Run '%s --usage' for further information" % sys.argv[0])
+ sys.exit(1)
+
+ if b_flag == "restore":
+ restore_all_to_kernel()
+ elif b_flag == "none" or b_flag == "None":
unbind_all(args, force_flag)
elif b_flag is not None:
bind_all(args, b_flag, force_flag)
next reply other threads:[~2018-04-10 10:55 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-04-10 10:55 Tosatti, Giovanni [this message]
2018-04-10 12:55 ` Burakov, Anatoly
2018-04-10 13:19 ` Burakov, Anatoly
2019-04-05 15:50 ` Ferruh Yigit
2019-04-05 15:50 ` Ferruh Yigit
-- strict thread matches above, loose matches on Subject: below --
2018-04-10 11:10 Tosatti, Giovanni
2018-03-22 13:41 Tosatti, Giovanni
2018-03-22 14:19 ` Burakov, Anatoly
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=40ff3805d8a647f8bda4a386cc6a3987@bilemail2.empirix.com \
--to=gtosatti@empirix.com \
--cc=dev@dpdk.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).