[dpdk-dev] [PATCH v7 0/9] virtio 1.0 enabling for virtio pmd driver

Yuanhan Liu yuanhan.liu at linux.intel.com
Tue Feb 2 14:48:11 CET 2016


v7: - make checkpatch a bit happier; few (false) warnings still left.

    - rebase to latest code: fixed a conflict.

v6: unfold IO_READ/WRITE_DEF macro

v5: minor fixes:

    - fix wrong type of arg "offset" of read/write_dev_config(): patch 2
      is newly added for that.

    - check "offset + length" overflow

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 8.

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 (9):
  virtio: don't set vring address again at queue startup
  virtio: define offset as size_t type
  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                 | 815 +++++++++++++++++++++++-
 drivers/net/virtio/virtio_pci.h                 | 124 +++-
 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   |   2 +
 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 |   3 +
 15 files changed, 964 insertions(+), 382 deletions(-)

-- 
1.9.0



More information about the dev mailing list