From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maxime Coquelin Subject: Re: [PATCH v3 2/2] net/virtio: avoid annoying IOPL call related errors Date: Fri, 23 Nov 2018 18:34:22 +0100 Message-ID: References: <20181123143620.10480-1-i.maximets@samsung.com> <20181123153920.12398-1-i.maximets@samsung.com> <20181123153920.12398-3-i.maximets@samsung.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Cc: Tiwei Bie , Zhihong Wang , Thomas Monjalon , Ferruh Yigit , Ian Stokes , Kevin Traynor , Bruce Richardson To: Ilya Maximets , dev@dpdk.org, David Marchand Return-path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by dpdk.org (Postfix) with ESMTP id D487A4F9B for ; Fri, 23 Nov 2018 18:34:30 +0100 (CET) In-Reply-To: <20181123153920.12398-3-i.maximets@samsung.com> Content-Language: en-US List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" On 11/23/18 4:39 PM, Ilya Maximets wrote: > In case of running with not enough capabilities, i.e. running as > non-root user any application linked with DPDK prints the message > about IOPL call failure even if it was just called like > './testpmd --help'. For example, this breaks most of the OVS unit > tests if it built with DPDK support. > > Let's register the virtio driver unconditionally and print error > message while probing the device. Silent iopl() call left in the > constructor to have privileges as early as possible as it was before. > > Signed-off-by: Ilya Maximets > Reviewed-by: David Marchand > --- > drivers/net/virtio/virtio_ethdev.c | 11 ++++++----- > 1 file changed, 6 insertions(+), 5 deletions(-) > > diff --git a/drivers/net/virtio/virtio_ethdev.c b/drivers/net/virtio/virtio_ethdev.c > index e1fe36a23..2ba66d291 100644 > --- a/drivers/net/virtio/virtio_ethdev.c > +++ b/drivers/net/virtio/virtio_ethdev.c > @@ -1760,6 +1760,11 @@ vdpa_mode_selected(struct rte_devargs *devargs) > static int eth_virtio_pci_probe(struct rte_pci_driver *pci_drv __rte_unused, > struct rte_pci_device *pci_dev) > { > + if (rte_eal_iopl_init() != 0) { > + PMD_INIT_LOG(ERR, "IOPL call failed - cannot use virtio PMD"); > + return 1; > + } > + > /* virtio pmd skips probe if device needs to work in vdpa mode */ > if (vdpa_mode_selected(pci_dev->device.devargs)) > return 1; > @@ -1785,11 +1790,7 @@ static struct rte_pci_driver rte_virtio_pmd = { > > RTE_INIT(rte_virtio_pmd_init) > { > - if (rte_eal_iopl_init() != 0) { > - PMD_INIT_LOG(ERR, "IOPL call failed - cannot use virtio PMD"); > - return; > - } > - > + rte_eal_iopl_init(); > rte_pci_register(&rte_virtio_pmd); > } > > Reviewed-by: Maxime Coquelin Thanks, Maxime