From mboxrd@z Thu Jan 1 00:00:00 1970 From: Kamil Rytarowski Subject: Re: [PATCH v5 1/2] tools: Add support for handling built-in kernel modules Date: Mon, 18 Jan 2016 10:26:45 +0100 Message-ID: <569CAFD5.50909@caviumnetworks.com> References: <1449588833-485-1-git-send-email-Kamil.Rytarowski@caviumnetworks.com> <1449667198-27218-1-git-send-email-Kamil.Rytarowski@caviumnetworks.com> <567171BC.1090105@caviumnetworks.com> Mime-Version: 1.0 Content-Type: text/plain; charset="iso-8859-2"; format=flowed Content-Transfer-Encoding: 7bit To: Return-path: Received: from na01-by2-obe.outbound.protection.outlook.com (mail-by2on0064.outbound.protection.outlook.com [207.46.100.64]) by dpdk.org (Postfix) with ESMTP id C059ADE6 for ; Mon, 18 Jan 2016 10:26:59 +0100 (CET) In-Reply-To: <567171BC.1090105@caviumnetworks.com> List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" ping? W dniu 16.12.2015 o 15:14, Kamil Rytarowski pisze: > ping? > > W dniu 09.12.2015 o 14:19, Kamil Rytarowski pisze: >> Currently dpdk_nic_bind.py detects Linux kernel modules via reading >> /proc/modules. Built-in ones aren't listed there and therefore they >> are not >> being found by the script. >> >> Add support for checking built-in modules with parsing the sysfs files. >> >> This commit obsoletes the /proc/modules parsing approach. >> >> Signed-off-by: Kamil Rytarowski >> Signed-off-by: David Marchand >> --- >> tools/dpdk_nic_bind.py | 27 +++++++++++++++++---------- >> 1 file changed, 17 insertions(+), 10 deletions(-) >> >> diff --git a/tools/dpdk_nic_bind.py b/tools/dpdk_nic_bind.py >> index f02454e..e161062 100755 >> --- a/tools/dpdk_nic_bind.py >> +++ b/tools/dpdk_nic_bind.py >> @@ -156,22 +156,29 @@ def check_modules(): >> '''Checks that igb_uio is loaded''' >> global dpdk_drivers >> - fd = file("/proc/modules") >> - loaded_mods = fd.readlines() >> - fd.close() >> - >> # list of supported modules >> mods = [{"Name" : driver, "Found" : False} for driver in >> dpdk_drivers] >> # first check if module is loaded >> - for line in loaded_mods: >> + try: >> + # Get list of syfs modules, some of them might be builtin >> and merge with mods >> + sysfs_path = '/sys/module/' >> + >> + # Get the list of directories in sysfs_path >> + sysfs_mods = [os.path.join(sysfs_path,o) for o in >> os.listdir(sysfs_path) if os.path.isdir(os.path.join(sysfs_path,o))] >> + >> + # Extract the last element of '/sys/module/abc' in the array >> + sysfs_mods = [a.split('/')[-1] for a in sysfs_mods] >> + >> + # special case for vfio_pci (module is named vfio-pci, >> + # but its .ko is named vfio_pci) >> + sysfs_mods = map(lambda a: a if a != 'vfio_pci' else >> 'vfio-pci', sysfs_mods) >> + >> for mod in mods: >> - if line.startswith(mod["Name"]): >> - mod["Found"] = True >> - # special case for vfio_pci (module is named vfio-pci, >> - # but its .ko is named vfio_pci) >> - elif line.replace("_", "-").startswith(mod["Name"]): >> + if mod["Found"] == False and (mod["Name"] in sysfs_mods): >> mod["Found"] = True >> + except: >> + pass >> # check if we have at least one loaded module >> if True not in [mod["Found"] for mod in mods] and b_flag is not >> None: >