vfio: allow secondary process to query IOMMU type
authorAnatoly Burakov <anatoly.burakov@intel.com>
Fri, 18 Jan 2019 10:24:41 +0000 (10:24 +0000)
committerThomas Monjalon <thomas@monjalon.net>
Mon, 21 Jan 2019 15:13:59 +0000 (16:13 +0100)
commit47f4fe0595fda08e0e4b8a26ad249dd52b95186f
tree8a1f87493a5cba36ba2cbd08f683c5bd3c8427c7
parent84a1d4a873634f53cc6e3555dc78ca611bbc3458
vfio: allow secondary process to query IOMMU type

It is only possible to know IOMMU type of a given VFIO container
by attempting to initialize it. Since secondary process never
attempts to set up VFIO container itself (because they're shared
between primary and secondary), it never knows which IOMMU type
the container is using, and never sets up the appropriate config
structures. This results in inability to perform DMA mappings in
secondary process.

Fix this by allowing secondary process to query IOMMU type of
primary's default container at device initialization.

Note that this fix is assuming we're only interested in default
container.

Bugzilla ID: 174
Fixes: 6bcb7c95fe14 ("vfio: share default container in multi-process")
Cc: stable@dpdk.org
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Reviewed-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
lib/librte_eal/linuxapp/eal/eal_vfio.c
lib/librte_eal/linuxapp/eal/eal_vfio.h
lib/librte_eal/linuxapp/eal/eal_vfio_mp_sync.c