[dpdk-dev] [PATCH v3 0/8] virtio 1.0 enabling for virtio pmd driver
Yuanhan Liu
yuanhan.liu at linux.intel.com
Thu Jan 14 08:42:44 CET 2016
v3: - export pci_unmap_device as well; and invoke it at virtio
uninit stage.
- fixed same data corruption bug reported by Qian in simple
rxtx code path.
- move VIRTIO_READ/WRITE_REG_X to virtio_pci.c
v2: - fix a data corruption reported by Qian, due to hdr size mismatch.
check detailes at ptach 5.
- Add missing config_irq and isr reading support from v1.
- fix comments from v1.
Almost all difference comes from virtio 1.0 are the PCI layout change:
the major configuration structures are stored at bar space, and their
location is stored at corresponding pci cap structure. Reading/parsing
them is one of the major work of patch 7.
To make handling virtio v1.0 and v0.95 co-exist well, this patch set
introduces a virtio_pci_ops structure, to add another layer so that
we could keep those vtpci_foo_bar "APIs". With that, we could do the
minimum change to add virtio 1.0 support.
Rough test guide
================
Firstly, you need get a virtio 1.0 supported QEMU (say, v2.5), then add
option "disable-modern=false" to qemu virtio-net-pci device to enable
virtio 1.0 (which is disabled by default).
And if you see something like following from 'lspci -v', it means virtio
1.0 is indeed enabled:
00:04.0 Ethernet controller: Red Hat, Inc Virtio network device
Subsystem: Red Hat, Inc Device 0001
Physical Slot: 4
Flags: bus master, fast devsel, latency 0, IRQ 11
I/O ports at c040 [size=64]
Memory at febf1000 (32-bit, non-prefetchable) [size=4K]
Memory at fe000000 (64-bit, prefetchable) [size=8M]
Expansion ROM at feb80000 [disabled] [size=256K]
Capabilities: [98] MSI-X: Enable+ Count=6 Masked-
==> Capabilities: [84] Vendor Specific Information: Len=14 <?>
==> Capabilities: [70] Vendor Specific Information: Len=14 <?>
==> Capabilities: [60] Vendor Specific Information: Len=10 <?>
==> Capabilities: [50] Vendor Specific Information: Len=10 <?>
==> Capabilities: [40] Vendor Specific Information: Len=10 <?>
Kernel driver in use: virtio-pci
Kernel modules: virtio_pci
After that, there wasn't anything speical comparing to the old virtio
0.95 pmd driver.
---
Yuanhan Liu (8):
virtio: don't set vring address again at queue startup
virtio: introduce struct virtio_pci_ops
virtio: move left pci stuff to virtio_pci.c
viritio: switch to 64 bit features
virtio: retrieve hdr_size from hw->vtnet_hdr_size
eal: pci: export pci_[un]map_device
virtio: add 1.0 support
virtio: move VIRTIO_READ/WRITE_REG_X into virtio_pci.c
doc/guides/rel_notes/release_2_3.rst | 3 +
drivers/net/virtio/virtio_ethdev.c | 302 +--------
drivers/net/virtio/virtio_ethdev.h | 3 +-
drivers/net/virtio/virtio_pci.c | 787 +++++++++++++++++++++++-
drivers/net/virtio/virtio_pci.h | 120 +++-
drivers/net/virtio/virtio_rxtx.c | 21 +-
drivers/net/virtio/virtio_rxtx_simple.c | 12 +-
drivers/net/virtio/virtqueue.h | 4 +-
lib/librte_eal/bsdapp/eal/eal_pci.c | 4 +-
lib/librte_eal/bsdapp/eal/rte_eal_version.map | 7 +
lib/librte_eal/common/eal_common_pci.c | 4 +-
lib/librte_eal/common/eal_private.h | 18 -
lib/librte_eal/common/include/rte_pci.h | 27 +
lib/librte_eal/linuxapp/eal/eal_pci.c | 4 +-
lib/librte_eal/linuxapp/eal/rte_eal_version.map | 7 +
15 files changed, 946 insertions(+), 377 deletions(-)
--
1.9.0
More information about the dev
mailing list