From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from office2.cesnet.cz (office2.cesnet.cz [195.113.144.244]) by dpdk.org (Postfix) with ESMTP id A0A63DE3 for ; Tue, 30 Aug 2016 10:40:53 +0200 (CEST) Received: from [IPv6:2001:67c:1220:80c:f8f4:f055:211e:fe80] (unknown [IPv6:2001:67c:1220:80c:f8f4:f055:211e:fe80]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by office2.cesnet.cz (Postfix) with ESMTPSA id 3FCCE2000D; Tue, 30 Aug 2016 10:40:53 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cesnet.cz; s=office2; t=1472546453; bh=/yZYTya81EBdmEYnCX+jF1VrO4wWO4lmMfmB3M/R4uI=; h=Subject:To:References:Cc:From:Date:In-Reply-To; b=m6Idtf8MmHPFFwO0aNYFLb0qEX93cRwwACkQNO09DlwBPnn4px/zUE9RwNDf8ETlH NxoytAoxgH8TY8e9fHtB+hD6bGA5rosLTa7cmgmfZJ1Qkd151qag9oe4BA4CxZivvV N71yvB/HF07dqqjx7S1ohI9zLdx8f8m6r4ULD5TU= To: Olivier Matz References: <1472217646-26219-1-git-send-email-olivier.matz@6wind.com> Cc: dev@dpdk.org, nhorman@tuxdriver.com, thomas.monjalon@6wind.com From: Matej Vido Message-ID: <8dfb056d-7b71-4fae-72c5-ef47383619a2@cesnet.cz> Date: Tue, 30 Aug 2016 10:40:52 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.2.0 MIME-Version: 1.0 In-Reply-To: <1472217646-26219-1-git-send-email-olivier.matz@6wind.com> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [dpdk-dev] [RFC] drivers: advertise kmod dependencies in pmdinfo X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 30 Aug 2016 08:40:53 -0000 On 26.08.2016 15:20, Olivier Matz wrote: > Add a new macro DRIVER_REGISTER_KMOD_DEP() that allows a driver to > declare the list of kernel modules required to run properly. > > Today, most PCI drivers require uio/vfio. > > Signed-off-by: Olivier Matz > --- > > In this RFC, I supposed that all PCI drivers require a the loading of a > uio/vfio module (except mlx*), this may be wrong. > Comments are welcome! > > > buildtools/pmdinfogen/pmdinfogen.c | 1 + > buildtools/pmdinfogen/pmdinfogen.h | 1 + > drivers/crypto/qat/rte_qat_cryptodev.c | 2 ++ > drivers/net/bnx2x/bnx2x_ethdev.c | 4 ++++ > drivers/net/bnxt/bnxt_ethdev.c | 2 ++ > drivers/net/cxgbe/cxgbe_ethdev.c | 2 ++ > drivers/net/e1000/em_ethdev.c | 2 ++ > drivers/net/e1000/igb_ethdev.c | 4 ++++ > drivers/net/ena/ena_ethdev.c | 2 ++ > drivers/net/enic/enic_ethdev.c | 2 ++ > drivers/net/fm10k/fm10k_ethdev.c | 2 ++ > drivers/net/i40e/i40e_ethdev.c | 2 ++ > drivers/net/i40e/i40e_ethdev_vf.c | 2 ++ > drivers/net/ixgbe/ixgbe_ethdev.c | 4 ++++ > drivers/net/mlx4/mlx4.c | 2 ++ > drivers/net/mlx5/mlx5.c | 3 +++ > drivers/net/nfp/nfp_net.c | 2 ++ > drivers/net/qede/qede_ethdev.c | 4 ++++ > drivers/net/szedata2/rte_eth_szedata2.c | 2 ++ > drivers/net/thunderx/nicvf_ethdev.c | 2 ++ > drivers/net/virtio/virtio_ethdev.c | 2 ++ > drivers/net/vmxnet3/vmxnet3_ethdev.c | 2 ++ > lib/librte_eal/common/include/rte_dev.h | 14 ++++++++++++++ > tools/dpdk-pmdinfo.py | 5 ++++- > 24 files changed, 69 insertions(+), 1 deletion(-) > > diff --git a/buildtools/pmdinfogen/pmdinfogen.c b/buildtools/pmdinfogen/pmdinfogen.c > index e1bf2e4..1e5b6f3 100644 > --- a/buildtools/pmdinfogen/pmdinfogen.c > +++ b/buildtools/pmdinfogen/pmdinfogen.c > @@ -269,6 +269,7 @@ struct opt_tag { > > static const struct opt_tag opt_tags[] = { > {"_param_string_export", "params"}, > + {"_kmod_dep_export", "kmod"}, > }; > > static int complete_pmd_entry(struct elf_info *info, struct pmd_driver *drv) > diff --git a/buildtools/pmdinfogen/pmdinfogen.h b/buildtools/pmdinfogen/pmdinfogen.h > index 1da2966..2fab2aa 100644 > --- a/buildtools/pmdinfogen/pmdinfogen.h > +++ b/buildtools/pmdinfogen/pmdinfogen.h > @@ -85,6 +85,7 @@ else \ > > enum opt_params { > PMD_PARAM_STRING = 0, > + PMD_KMOD_DEP, > PMD_OPT_MAX > }; [..] > > > diff --git a/drivers/net/szedata2/rte_eth_szedata2.c b/drivers/net/szedata2/rte_eth_szedata2.c > index 483d789..409e71f 100644 > --- a/drivers/net/szedata2/rte_eth_szedata2.c > +++ b/drivers/net/szedata2/rte_eth_szedata2.c > @@ -1602,3 +1602,5 @@ static struct rte_driver rte_szedata2_driver = { > > PMD_REGISTER_DRIVER(rte_szedata2_driver, RTE_SZEDATA2_DRIVER_NAME); > DRIVER_REGISTER_PCI_TABLE(RTE_SZEDATA2_DRIVER_NAME, rte_szedata2_pci_id_table); > +DRIVER_REGISTER_KMOD_DEP(RTE_SZEDATA2_DRIVER_NAME, > + "uio,igb_uio:uio,uio_pci_generic:vfio,vfio-pci"); Hi Olivier, szedata2 doesn't require uio/vfio modules. Instead the following lines could be used: +DRIVER_REGISTER_KMOD_DEP(RTE_SZEDATA2_DRIVER_NAME, + "combo6core,combov3,szedata2,szedata2_cv3"); Thanks, Matej [..] > diff --git a/lib/librte_eal/common/include/rte_dev.h b/lib/librte_eal/common/include/rte_dev.h > index 95789f9..b721dc3 100644 > --- a/lib/librte_eal/common/include/rte_dev.h > +++ b/lib/librte_eal/common/include/rte_dev.h > @@ -203,6 +203,20 @@ RTE_STR(table) > static const char DRV_EXP_TAG(name, param_string_export)[] \ > __attribute__((used)) = str > > +/** > + * Advertise the list of kernel modules required to run this driver > + * > + * This string list the name of kernel modules, separated by commas. The > + * order is important. If several modules lists are possible, they are > + * separated by colons. > + * > + * Example: "uio,igb_uio:uio,uio_pci_generic" means either "uio,igb_uio" > + * or "uio,uio_pci_generic". > + */ > +#define DRIVER_REGISTER_KMOD_DEP(name, str) \ > +static const char DRV_EXP_TAG(name, kmod_dep_export)[] \ > +__attribute__((used)) = str > + > #ifdef __cplusplus > } > #endif > diff --git a/tools/dpdk-pmdinfo.py b/tools/dpdk-pmdinfo.py > index 3db9819..17bfed4 100755 > --- a/tools/dpdk-pmdinfo.py > +++ b/tools/dpdk-pmdinfo.py > @@ -312,7 +312,10 @@ class ReadElf(object): > global raw_output > global pcidb > > - optional_pmd_info = [{'id': 'params', 'tag': 'PMD PARAMETERS'}] > + optional_pmd_info = [ > + {'id': 'params', 'tag': 'PMD PARAMETERS'}, > + {'id': 'kmod', 'tag': 'PMD KMOD DEPENDENCIES'} > + ] > > i = mystring.index("=") > mystring = mystring[i + 2:]