Go to file
Yuanhan Liu 6d890f8ab5 net/virtio: fix multiple process support
The introduce of virtio 1.0 support brings yet another set of ops, badly,
it's not handled correctly, that it breaks the multiple process support.

The issue is the data/function pointer may vary from different processes,
and the old used to do one time set (for primary process only). That
said, the function pointer the secondary process saw is actually from the
primary process space. Accessing it could likely result to a crash.

Kudos to the last patches, we now be able to maintain those info that may
vary among different process locally, meaning every process could have its
own copy for each of them, with the correct value set. And this is what
this patch does:

- remap the PCI (IO port for legacy device and memory map for modern
  device)

- set vtpci_ops correctly

After that, multiple process would work like a charm. (At least, it
passed my fuzzy test)

Fixes: b8f04520ad ("virtio: use PCI ioport API")
Fixes: d5bbeefca8 ("virtio: introduce PCI implementation structure")
Fixes: 6ba1f63b5a ("virtio: support specification 1.0")
Cc: stable@dpdk.org

Reported-by: Juho Snellman <jsnell@iki.fi>
Reported-by: Yaron Illouz <yaroni@radcom.com>
Signed-off-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>
2017-01-17 09:20:18 +01:00
app mbuf: add a function to linearize a packet 2017-01-15 19:30:00 +01:00
buildtools pmdinfogen: fix null dereference 2017-01-06 11:40:30 +01:00
config ethdev: add Tx preparation 2017-01-04 20:40:15 +01:00
devtools devtools: skip capitalization check for commit prefixes 2017-01-13 17:03:43 +01:00
doc net/virtio: fix multiple process support 2017-01-17 09:20:18 +01:00
drivers net/virtio: fix multiple process support 2017-01-17 09:20:18 +01:00
examples examples/vhost: fix lcore initialization 2017-01-17 09:20:18 +01:00
lib ethdev: fix port data mismatched in multiple process model 2017-01-17 09:20:18 +01:00
mk tools: move to usertools 2017-01-04 21:17:32 +01:00
pkg tools: move to usertools 2017-01-04 21:17:32 +01:00
usertools tools: move to usertools 2017-01-04 21:17:32 +01:00
.gitattributes improve git diff 2016-11-13 15:25:12 +01:00
.gitignore doc: generate NIC overview table from ini files 2016-08-03 18:42:17 +02:00
GNUmakefile pmdinfogen: add buildtools and pmdinfogen utility 2016-07-06 22:34:39 +02:00
LICENSE.GPL doc: GPL/LGPL licenses 2013-07-25 14:43:06 +02:00
LICENSE.LGPL doc: fix file format (dos to unix) 2013-09-06 11:43:07 +02:00
MAINTAINERS tools: move to usertools 2017-01-04 21:17:32 +01:00
Makefile remove trailing whitespaces 2014-06-11 00:29:34 +02:00
README doc: add readme file 2015-12-13 22:06:58 +01:00

DPDK is a set of libraries and drivers for fast packet processing.
It supports many processor architectures and both FreeBSD and Linux.

The DPDK uses the Open Source BSD license for the core libraries and
drivers. The kernel components are GPLv2 licensed.

Please check the doc directory for release notes,
API documentation, and sample application information.

For questions and usage discussions, subscribe to: users@dpdk.org
Report bugs and issues to the development mailing list: dev@dpdk.org