All of lore.kernel.org
 help / color / mirror / Atom feed
From: Peter Xu <peterx@redhat.com>
To: "Xie, Huawei" <huawei.xie@intel.com>
Cc: DPDK Dev <dev@dpdk.org>
Subject: Re: [Question] How pmd virtio works without UIO?
Date: Tue, 22 Dec 2015 19:39:12 +0800	[thread overview]
Message-ID: <20151222113912.GA30780@pxdev.xzpeter.org> (raw)
In-Reply-To: <C37D651A908B024F974696C65296B57B4C551E48@SHSMSX101.ccr.corp.intel.com>

On Tue, Dec 22, 2015 at 10:47:21AM +0000, Xie, Huawei wrote:
> On 12/22/2015 5:57 PM, Peter Xu wrote:
> > On Tue, Dec 22, 2015 at 04:32:46PM +0800, Yuanhan Liu wrote:
> >> Actually, you are right. I mentioned in the last email that this is
> >> for configuration part. To answer your question in this email, you
> >> will not be able to go that further (say initiating virtio pmd) if
> >> you don't unbind the origin virtio-net driver, and bind it to igb_uio
> >> (or something similar).
> >>
> >> The start point is from rte_eal_pci_scan, where the sub-function
> >> pci_san_one just initates a DPDK bond driver.
> > I am not sure whether I do understand your meaning correctly
> > (regarding "you willl not be able to go that furture"): The problem
> > is that, we _can_ run testpmd without unbinding the ports and bind
> > to UIO or something. What we need to do is boot the guest, reserve
> > huge pages, and run testpmd (keeping its kernel driver as
> > "virtio-pci"). In pci_scan_one():
> >
> > 	if (!ret) {
> > 		if (!strcmp(driver, "vfio-pci"))
> > 			dev->kdrv = RTE_KDRV_VFIO;
> > 		else if (!strcmp(driver, "igb_uio"))
> > 			dev->kdrv = RTE_KDRV_IGB_UIO;
> > 		else if (!strcmp(driver, "uio_pci_generic"))
> > 			dev->kdrv = RTE_KDRV_UIO_GENERIC;
> > 		else
> > 			dev->kdrv = RTE_KDRV_UNKNOWN;
> > 	} else
> > 		dev->kdrv = RTE_KDRV_UNKNOWN;
> >
> > I think it should be going to RTE_KDRV_UNKNOWN
> > (driver=="virtio-pci") here. I tried to run IO and it could work,
> > but I am not sure whether it is safe, and how.
> 
> Good catch, peter.
> Actually recently customers complain that with this feature, DPDK always
> tries to take over this virtio-pci device, which is unwanted behavior.
> Using blacklist could workaround this issue.
> However, the real serious problem is that kernel driver is still
> managing this device.
> 
> Changchun, Thomas:
> I think we should fix this, but firstly i wonder why using port IO to
> get PCI resource is more secure.

I am not familiar with this, however, shouldn't port IO from
userspace the most dangerous way to access PCI resource?

> 
> >
> > Also, I am not sure whether I need to (at least) unbind the
> > virtio-pci driver, so that there should have no kernel driver
> > running for the virtio device before DPDK using it.
> If you unbind, you have no entry under /proc/ioports for virtio IO port.

I tried to unbind one of the virtio net device, I see the PCI entry
still there.

Before unbind:

[root@vm proc]# lspci -k -s 00:03.0
00:03.0 Ethernet controller: Red Hat, Inc Virtio network device
        Subsystem: Red Hat, Inc Device 0001
        Kernel driver in use: virtio-pci
[root@vm proc]# cat /proc/ioports | grep c060-c07f
  c060-c07f : 0000:00:03.0
    c060-c07f : virtio-pci

After unbind:

[root@vm proc]# lspci -k -s 00:03.0
00:03.0 Ethernet controller: Red Hat, Inc Virtio network device
        Subsystem: Red Hat, Inc Device 0001
[root@vm proc]# cat /proc/ioports | grep c060-c07f
  c060-c07f : 0000:00:03.0

So... does this means that it is an alternative to black list
solution?

Peter

> >
> > Thanks
> > Peter
> >
> >> 	--yliu
> 

  parent reply	other threads:[~2015-12-22 11:39 UTC|newest]

Thread overview: 92+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-12-22  3:50 [Question] How pmd virtio works without UIO? Peter Xu
2015-12-22  7:00 ` Yuanhan Liu
2015-12-22  8:23   ` Peter Xu
2015-12-22  8:32     ` Yuanhan Liu
2015-12-22  9:56       ` Peter Xu
2015-12-22 10:47         ` Xie, Huawei
2015-12-22 10:53           ` Xie, Huawei
2015-12-22 11:39           ` Peter Xu [this message]
2015-12-22 14:31             ` Xie, Huawei
2015-12-22 16:38             ` Xie, Huawei
2015-12-23  1:55               ` Peter Xu
2015-12-23  2:09                 ` Yuanhan Liu
2015-12-23  2:38                   ` Peter Xu
2015-12-23 22:26                   ` Thomas Monjalon
2015-12-24  3:30                     ` Yuanhan Liu
2015-12-24 17:56                       ` Stephen Hemminger
2015-12-23  2:01         ` Yuanhan Liu
2015-12-23  2:41           ` Peter Xu
2015-12-23  2:58             ` Yuanhan Liu
2015-12-23  5:13               ` Xie, Huawei
2015-12-23 22:20                 ` Thomas Monjalon
2015-12-24 18:38 ` [PATCH 0/4] check if any kernel driver is manipulating the virtio device Huawei Xie
2015-12-24 18:38   ` [PATCH 1/4] eal: make the comment more accurate Huawei Xie
2015-12-24 18:38   ` [PATCH 2/4] eal: set kdrv to RTE_KDRV_NONE if kernel driver isn't manipulating the device Huawei Xie
2015-12-28 20:24     ` David Marchand
2015-12-24 18:38   ` [PATCH 3/4] virtio: return 1 to tell the upper layer we don't take over this device Huawei Xie
2015-12-28  5:25     ` Yuanhan Liu
2015-12-28  5:38       ` Xie, Huawei
2015-12-24 18:38   ` [PATCH 4/4] virtio: check if any kernel driver is manipulating the device Huawei Xie
2015-12-28  5:26     ` Yuanhan Liu
2015-12-28  5:29       ` Xie, Huawei
2016-01-04  9:02     ` Xie, Huawei
2016-01-04 17:29       ` Stephen Hemminger
2016-01-05 14:44       ` Panu Matilainen
2015-12-28  3:08   ` [PATCH 0/4] check if any kernel driver is manipulating the virtio device Peter Xu
2016-01-03 17:56 ` [PATCH v2 0/4] fix the issue that DPDK takes over virtio device blindly Huawei Xie
2016-01-03 17:56   ` [PATCH v2 1/4] eal: make the comment more accurate Huawei Xie
2016-01-03 17:56   ` [PATCH v2 2/4] eal: set kdrv to RTE_KDRV_NONE if kernel driver isn't manipulating the device Huawei Xie
2016-01-03 17:56   ` [PATCH v2 3/4] virtio: return 1 to tell the upper layer we don't take over this device Huawei Xie
2016-01-03 17:56   ` [PATCH v2 4/4] virtio: check if any kernel driver is manipulating the virtio device Huawei Xie
2016-01-04 17:24     ` Stephen Hemminger
2016-01-04 17:56       ` Xie, Huawei
2016-01-05  1:56         ` Yuanhan Liu
2016-01-07 13:17         ` Ferruh Yigit
2016-01-07 14:17     ` Panu Matilainen
2016-01-27 12:43       ` Thomas Monjalon
2016-01-04 17:25   ` [PATCH v2 0/4] fix the issue that DPDK takes over virtio device blindly Stephen Hemminger
2016-01-12  3:02     ` Xie, Huawei
2016-01-12  4:23       ` Santosh Shukla
2016-01-12  5:16         ` Xie, Huawei
2016-01-13 12:17           ` Santosh Shukla
2016-01-27 15:21 ` [PATCH v3 " Huawei Xie
2016-01-27 15:21   ` [PATCH v3 1/4] eal: make the comment more accurate Huawei Xie
2016-01-27 15:21   ` [PATCH v3 2/4] eal: set kdrv to RTE_KDRV_NONE if kernel driver isn't manipulating the device Huawei Xie
2016-01-27 15:21   ` [PATCH v3 3/4] virtio: return 1 to tell the upper layer we don't take over this device Huawei Xie
2016-01-27 15:21   ` [PATCH v3 4/4] virtio: check if kernel driver is manipulating the virtio device Huawei Xie
2016-01-28  9:55     ` Panu Matilainen
2016-01-29  7:40   ` [PATCH v3 0/4] fix the issue that DPDK takes over virtio device blindly Yuanhan Liu
2016-02-24 12:43   ` Thomas Monjalon
2016-02-26  6:09     ` Xie, Huawei
2016-02-26  8:40       ` David Marchand
2016-02-26  9:00         ` Xie, Huawei
2016-02-26  1:53 ` [PATCH v4 " Huawei Xie
2016-02-26  1:53   ` [PATCH v4 1/4] eal: make the comment more accurate Huawei Xie
2016-02-29  8:48     ` David Marchand
2016-02-26  1:53   ` [PATCH v4 2/4] eal: set kdrv to RTE_KDRV_NONE if kernel driver isn't managing the device Huawei Xie
2016-02-29  2:34     ` Xie, Huawei
2016-02-29  8:46     ` David Marchand
2016-02-29  9:00       ` Xie, Huawei
2016-02-29  9:05         ` David Marchand
2016-02-26  1:53   ` [PATCH v4 3/4] eal: call pci_ioport_map when " Huawei Xie
2016-02-29  9:02     ` David Marchand
2016-02-26  1:53   ` [PATCH v4 4/4] virtio: return 1 to tell the upper layer we don't take over this device Huawei Xie
2016-02-29 13:15     ` Santosh Shukla
2016-03-01  7:16     ` Thomas Monjalon
2016-03-01  7:53       ` Xie, Huawei
2016-03-01  8:20         ` Thomas Monjalon
2016-03-01  8:39           ` Xie, Huawei
2016-03-01  9:55             ` Thomas Monjalon
2016-03-01 10:08               ` Xie, Huawei
2016-03-08 17:00                 ` Xie, Huawei
2016-03-08 23:01                 ` Thomas Monjalon
2016-03-08 15:33 ` [PATCH v5 0/6] fix the issue that DPDK takes over virtio device blindly Huawei Xie
2016-03-08 15:33   ` [PATCH v5 1/6] eal: make the comment more accurate Huawei Xie
2016-03-08 15:33   ` [PATCH v5 2/6] eal: RTE_KDRV_NONE means kernel driver isn't managing the device Huawei Xie
2016-03-08 15:33   ` [PATCH v5 3/6] eal: use new RTE_ARCH_X86 for x86 arch Huawei Xie
2016-03-09 23:04     ` Thomas Monjalon
2016-03-08 15:33   ` [PATCH v5 4/6] eal: simple code rework Huawei Xie
2016-03-08 15:33   ` [PATCH v5 5/6] eal: map IO port when kernel driver isn't managing the device Huawei Xie
2016-03-08 15:33   ` [PATCH v5 6/6] virtio: return 1 to tell the upper layer we don't take over this device Huawei Xie
2016-03-09 23:23     ` Thomas Monjalon
2016-03-09 23:35   ` [PATCH v5 0/6] fix the issue that DPDK takes over virtio device blindly Thomas Monjalon

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20151222113912.GA30780@pxdev.xzpeter.org \
    --to=peterx@redhat.com \
    --cc=dev@dpdk.org \
    --cc=huawei.xie@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.