vfio: allow mapping MSI-X BARs if kernel allows it
authorAnatoly Burakov <anatoly.burakov@intel.com>
Thu, 20 Sep 2018 13:11:13 +0000 (14:11 +0100)
committerThomas Monjalon <thomas@monjalon.net>
Wed, 3 Oct 2018 22:45:50 +0000 (00:45 +0200)
commit03ba15ca65c19e63948041cbcfca17672dd537cb
tree1f350b448405f3612da19bdc6aed5672ca61bfda
parentb1621823eacbe4669a4b581d6c420db08f9e6505
vfio: allow mapping MSI-X BARs if kernel allows it

Currently, DPDK will skip mapping some areas (or even an entire BAR)
if MSI-X table happens to be in them but is smaller than page size.

Kernels 4.16+ will allow mapping MSI-X BARs [1], and will report this
as a capability flag. Capability flags themselves are also only
supported since kernel 4.6 [2].

This commit will introduce support for checking VFIO capabilities,
and will use it to check if we are allowed to map BARs with MSI-X
tables in them, along with backwards compatibility for older
kernels, including a workaround for a variable rename in VFIO
region info structure [3].

[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/
linux.git/commit/?id=a32295c612c57990d17fb0f41e7134394b2f35f6

[2] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/
linux.git/commit/?id=c84982adb23bcf3b99b79ca33527cd2625fbe279

[3] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/
linux.git/commit/?id=ff63eb638d63b95e489f976428f1df01391e15e4

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
drivers/bus/pci/linux/pci_vfio.c
lib/librte_eal/common/include/rte_vfio.h