devargs: use devargs for vdev and PCI whitelist/blacklist
authorOlivier Matz <olivier.matz@6wind.com>
Sat, 1 Mar 2014 12:14:34 +0000 (13:14 +0100)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Thu, 10 Apr 2014 12:59:34 +0000 (14:59 +0200)
commit12204589517e06230e24e0f23396222f2929bd77
tree6a1c3e5add3f82d189f919e71f254c2dbd06470f
parentbf6dea0e04afc0d1f2c8056cd4d1aecab12502d1
devargs: use devargs for vdev and PCI whitelist/blacklist

Remove old whitelist code:
- remove references to rte_pmd_ring, rte_pmd_pcap and pmd_xenvirt in
  is_valid_wl_entry() as we want to be able to register external virtual
  drivers as a shared library. Moreover this code was duplicated with
  dev_types[] from eal_common_pci.c
- eal_common_whitelist.c was badly named: it was able to process PCI
  devices white list and the registration of virtual devices
- the parsing code was complex: all arguments were prepended in
  one string dev_list_str[4096], then split again

Use the newly introduced rte_devargs to get:
- the PCI white list
- the PCI black list
- the list of virtual devices

Rework the tests:
- a part of the whitelist test can be removed as it is now tested
  in app/test/test_devargs.c
- the other parts are just reworked to adapt them to the new API

This commit induce a small API modification: it is not possible to specify
several devices per "--use-device" option. This notation was anyway a bit
cryptic. Ex:
  --use-device="eth_ring0,eth_pcap0;iface=ixgbe0"
  now becomes:
  --use-device="eth_ring0" --use-device="eth_pcap0;iface=ixgbe0"

On the other hand, it is now possible to work in PCI blacklist mode and
instanciate virtual drivers, which was not possible before this patch.

Test result:

./app/test -c 0x15 -n 3 -m 64
RTE>>devargs_autotest
EAL: invalid PCI identifier <08:1>
EAL: invalid PCI identifier <00.1>
EAL: invalid PCI identifier <foo>
EAL: invalid PCI identifier <>
EAL: invalid PCI identifier <000f:0:0>
Test OK

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
app/test/test_eal_flags.c
app/test/test_pci.c
lib/librte_eal/common/eal_common_nonpci_devs.c
lib/librte_eal/common/eal_common_pci.c
lib/librte_eal/common/eal_common_whitelist.c [deleted file]
lib/librte_eal/common/include/eal_private.h
lib/librte_eal/common/include/rte_pci.h
lib/librte_eal/linuxapp/eal/Makefile
lib/librte_eal/linuxapp/eal/eal.c
lib/librte_pmd_ring/rte_eth_ring.c