Message ID | 1451843773-103006-5-git-send-email-huawei.xie@intel.com (mailing list archive) |
---|---|
State | Superseded, archived |
Headers |
Return-Path: <dev-bounces@dpdk.org> X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [IPv6:::1]) by dpdk.org (Postfix) with ESMTP id BA9A08F9B; Mon, 4 Jan 2016 10:51:41 +0100 (CET) Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by dpdk.org (Postfix) with ESMTP id 9383A8E94 for <dev@dpdk.org>; Mon, 4 Jan 2016 10:51:37 +0100 (CET) Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga103.fm.intel.com with ESMTP; 04 Jan 2016 01:51:32 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.20,520,1444719600"; d="scan'208";a="853052965" Received: from dpdk15.sh.intel.com ([10.239.129.25]) by orsmga001.jf.intel.com with ESMTP; 04 Jan 2016 01:51:30 -0800 From: Huawei Xie <huawei.xie@intel.com> To: dev@dpdk.org Date: Mon, 4 Jan 2016 01:56:13 +0800 Message-Id: <1451843773-103006-5-git-send-email-huawei.xie@intel.com> X-Mailer: git-send-email 1.8.1.4 In-Reply-To: <1451843773-103006-1-git-send-email-huawei.xie@intel.com> References: <20151222035041.GA7532@pxdev.xzpeter.org> <1451843773-103006-1-git-send-email-huawei.xie@intel.com> Subject: [dpdk-dev] [PATCH v2 4/4] virtio: check if any kernel driver is manipulating the virtio device X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK <dev.dpdk.org> List-Unsubscribe: <http://dpdk.org/ml/options/dev>, <mailto:dev-request@dpdk.org?subject=unsubscribe> List-Archive: <http://dpdk.org/ml/archives/dev/> List-Post: <mailto:dev@dpdk.org> List-Help: <mailto:dev-request@dpdk.org?subject=help> List-Subscribe: <http://dpdk.org/ml/listinfo/dev>, <mailto:dev-request@dpdk.org?subject=subscribe> Errors-To: dev-bounces@dpdk.org Sender: "dev" <dev-bounces@dpdk.org> |
Commit Message
Huawei Xie
Jan. 3, 2016, 5:56 p.m. UTC
v2 changes:
change LOG level from ERR to INFO
virtio PMD could use IO port to configure the virtio device without
using uio driver.
There are two issues with previous implementation:
1) virtio PMD will take over each virtio device blindly even if some
are not intended for DPDK.
2) driver conflict between virtio PMD and virtio-net kernel driver.
This patch checks if there is any kernel driver manipulating the virtio
device before virtio PMD uses IO port to configure the device.
Fixes: da978dfdc43b ("virtio: use port IO to get PCI resource")
Signed-off-by: Huawei Xie <huawei.xie@intel.com>
---
drivers/net/virtio/virtio_ethdev.c | 7 +++++++
1 file changed, 7 insertions(+)
Comments
On Mon, 4 Jan 2016 01:56:13 +0800 Huawei Xie <huawei.xie@intel.com> wrote: > + if (pci_dev->kdrv != RTE_KDRV_NONE) { > + PMD_INIT_LOG(INFO, > + "kernel driver is manipulating this device." \ > + " Please unbind the kernel driver."); Splitting strings in general is a bad idea since it makes it harder to find log messages. Also the first clause is lower case and the second is captialized. Lastly, the backslash continuation is unnecessary here and will cause checkpatch warning.
On 1/5/2016 1:24 AM, Stephen Hemminger wrote: > On Mon, 4 Jan 2016 01:56:13 +0800 > Huawei Xie <huawei.xie@intel.com> wrote: > >> + if (pci_dev->kdrv != RTE_KDRV_NONE) { >> + PMD_INIT_LOG(INFO, >> + "kernel driver is manipulating this device." \ >> + " Please unbind the kernel driver."); > Splitting strings in general is a bad idea since it makes it harder to find log messages. > Also the first clause is lower case and the second is captialized. Got it. This is to avoid 80 char warning. Will put it in one line to make it friendly for searching. The first clause is lower is because it actually follows "%s():". > > Lastly, the backslash continuation is unnecessary here and will cause checkpatch warning. >
On Mon, Jan 04, 2016 at 05:56:49PM +0000, Xie, Huawei wrote: > On 1/5/2016 1:24 AM, Stephen Hemminger wrote: > > On Mon, 4 Jan 2016 01:56:13 +0800 > > Huawei Xie <huawei.xie@intel.com> wrote: > > > >> + if (pci_dev->kdrv != RTE_KDRV_NONE) { > >> + PMD_INIT_LOG(INFO, > >> + "kernel driver is manipulating this device." \ > >> + " Please unbind the kernel driver."); > > Splitting strings in general is a bad idea since it makes it harder to find log messages. > > Also the first clause is lower case and the second is captialized. > Got it. This is to avoid 80 char warning. Will put it in one line to > make it friendly for searching. I agree with Stephen that _in general_ it's a bad idea. But for this case, I think it's okay, as it'd be enough to locate the code by searching "manipulating this device", or "unbind the kernel driver", or other combinations. I mean, nobody would try searching with: "kernel driver is manipulating this device. Please unbind the kernel driver." Right? --yliu > The first clause is lower is because it actually follows "%s():". > > > > Lastly, the backslash continuation is unnecessary here and will cause checkpatch warning. > > >
On 01/03/2016 07:56 PM, Huawei Xie wrote: > v2 changes: > change LOG level from ERR to INFO > > virtio PMD could use IO port to configure the virtio device without > using uio driver. > > There are two issues with previous implementation: > 1) virtio PMD will take over each virtio device blindly even if some > are not intended for DPDK. > 2) driver conflict between virtio PMD and virtio-net kernel driver. > > This patch checks if there is any kernel driver manipulating the virtio > device before virtio PMD uses IO port to configure the device. > > Fixes: da978dfdc43b ("virtio: use port IO to get PCI resource") > > Signed-off-by: Huawei Xie <huawei.xie@intel.com> > --- > drivers/net/virtio/virtio_ethdev.c | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/drivers/net/virtio/virtio_ethdev.c b/drivers/net/virtio/virtio_ethdev.c > index e815acd..7a50dac 100644 > --- a/drivers/net/virtio/virtio_ethdev.c > +++ b/drivers/net/virtio/virtio_ethdev.c > @@ -1138,6 +1138,13 @@ static int virtio_resource_init_by_ioports(struct rte_pci_device *pci_dev) > int found = 0; > size_t linesz; > > + if (pci_dev->kdrv != RTE_KDRV_NONE) { > + PMD_INIT_LOG(INFO, > + "kernel driver is manipulating this device." \ > + " Please unbind the kernel driver."); At the very least this message needs to be changed. Like said earlier, I think the message could just as well be dropped entirely, but at least it should be something to the tune of "ignoring kernel owned device" instead of asking the user to break their configuration. - Panu -
2016-01-07 16:17, Panu Matilainen: > On 01/03/2016 07:56 PM, Huawei Xie wrote: > > v2 changes: > > change LOG level from ERR to INFO > > > > virtio PMD could use IO port to configure the virtio device without > > using uio driver. > > > > There are two issues with previous implementation: > > 1) virtio PMD will take over each virtio device blindly even if some > > are not intended for DPDK. > > 2) driver conflict between virtio PMD and virtio-net kernel driver. > > > > This patch checks if there is any kernel driver manipulating the virtio > > device before virtio PMD uses IO port to configure the device. > > > > Fixes: da978dfdc43b ("virtio: use port IO to get PCI resource") > > > > Signed-off-by: Huawei Xie <huawei.xie@intel.com> > > --- > > drivers/net/virtio/virtio_ethdev.c | 7 +++++++ > > 1 file changed, 7 insertions(+) > > > > diff --git a/drivers/net/virtio/virtio_ethdev.c b/drivers/net/virtio/virtio_ethdev.c > > index e815acd..7a50dac 100644 > > --- a/drivers/net/virtio/virtio_ethdev.c > > +++ b/drivers/net/virtio/virtio_ethdev.c > > @@ -1138,6 +1138,13 @@ static int virtio_resource_init_by_ioports(struct rte_pci_device *pci_dev) > > int found = 0; > > size_t linesz; > > > > + if (pci_dev->kdrv != RTE_KDRV_NONE) { > > + PMD_INIT_LOG(INFO, > > + "kernel driver is manipulating this device." \ > > + " Please unbind the kernel driver."); > > At the very least this message needs to be changed. > > Like said earlier, I think the message could just as well be dropped > entirely, but at least it should be something to the tune of "ignoring > kernel owned device" instead of asking the user to break their > configuration. Huawei, a v3 is required. Thanks
diff --git a/drivers/net/virtio/virtio_ethdev.c b/drivers/net/virtio/virtio_ethdev.c index e815acd..7a50dac 100644 --- a/drivers/net/virtio/virtio_ethdev.c +++ b/drivers/net/virtio/virtio_ethdev.c @@ -1138,6 +1138,13 @@ static int virtio_resource_init_by_ioports(struct rte_pci_device *pci_dev) int found = 0; size_t linesz; + if (pci_dev->kdrv != RTE_KDRV_NONE) { + PMD_INIT_LOG(INFO, + "kernel driver is manipulating this device." \ + " Please unbind the kernel driver."); + return -1; + } + snprintf(pci_id, sizeof(pci_id), PCI_PRI_FMT, pci_dev->addr.domain, pci_dev->addr.bus,