[dpdk-dev] [PATCH v5] usertools/devbind: fix binding for built-in kernel drivers

Liu, Yongxin Yongxin.Liu at windriver.com
Thu Dec 3 09:25:34 CET 2020


Hi Anatoly,

Do you have any further comments on this v5?
Or you can submit your own patch directly.

I am really expecting this issue to be fixed.


Thank you very much.

Yongxin

> -----Original Message-----
> From: dev <dev-bounces at dpdk.org> On Behalf Of Yongxin Liu
> Sent: Monday, November 23, 2020 11:06
> To: dev at dpdk.org; anatoly.burakov at intel.com; thomas at monjalon.net
> Subject: [dpdk-dev] [PATCH v5] usertools/devbind: fix binding for built-in
> kernel drivers
> 
> A driver can be loaded as a dynamic module or a built-in module.
> In commit 681a67288655 ("usertools: check if module is loaded before
> binding"), script only checks modules in /sys/module/.
> 
> However, for built-in kernel driver, it only shows up in /sys/module/, if
> it has a version or at least one parameter. So add check for modules in
> /lib/modules/$(uname -r)/modules.builtin.
> 
> Signed-off-by: Yongxin Liu <yongxin.liu at windriver.com>
> ---
> 
> v5:
>  - Make code robust and more memory efficient.
> 
> v4:
>  - Replace shell call with platform.uname(). Check file existence
>    before reading.
> 
> v3:
>  - Add built-in module list in loaded_modules for checking
>    instead of removing error check.
> 
> v2:
>  - fix git commit description style in commit log
>  - fix typo spelling
> 
> ---
>  usertools/dpdk-devbind.py | 13 ++++++++++++-
>  1 file changed, 12 insertions(+), 1 deletion(-)
> 
> diff --git a/usertools/dpdk-devbind.py b/usertools/dpdk-devbind.py index
> 054ad2e1c..4bc0b6207 100755
> --- a/usertools/dpdk-devbind.py
> +++ b/usertools/dpdk-devbind.py
> @@ -7,6 +7,7 @@
>  import os
>  import subprocess
>  import argparse
> +import platform
> 
>  from glob import glob
>  from os.path import exists, basename
> @@ -107,7 +108,17 @@ def module_is_loaded(module):
> 
>      loaded_modules = sysfs_mods
> 
> -    return module in sysfs_mods
> +    # add built-in modules as loaded
> +    release = platform.uname().release
> +    filename = os.path.join("/lib/modules/", release, "modules.builtin")
> +    if os.path.exists(filename):
> +        try:
> +            with open(filename) as f:
> +                loaded_modules +=
> [os.path.splitext(os.path.basename(mod))[0] for mod in f]
> +        except IOError:
> +            print("Warning: cannot read list of built-in kernel
> + modules")
> +
> +    return module in loaded_modules
> 
> 
>  def check_modules():
> --
> 2.14.4



More information about the dev mailing list