vfio: fix workaround of BAR mapping
authorTakeshi Yoshimura <t.yoshimura8869@gmail.com>
Fri, 20 Jul 2018 08:13:47 +0000 (17:13 +0900)
committerThomas Monjalon <thomas@monjalon.net>
Thu, 26 Jul 2018 09:34:08 +0000 (11:34 +0200)
commitd4774a568ba0a5923229974a002972c83eb04570
tree4a05bd856bba58fbcb8b2884727099ff85b7f823
parent7350d1be051a1c8fc140e116755c3c6609e8de37
vfio: fix workaround of BAR mapping

Currently, VFIO will try to map around MSI-X table in the BARs. When
MSI-X table (page-aligned) size is equal to (page-aligned) size of BAR,
VFIO will just skip the BAR.

Recent kernel versions will allow VFIO to map the entire BAR containing
MSI-X tables (*), so instead of trying to map around the MSI-X vector
or skipping the BAR entirely if it's not possible, we can now try
mapping the entire BAR first. If mapping the entire BAR doesn't
succeed, fall back to the old behavior of mapping around MSI-X table or
skipping the BAR.

(*): "vfio-pci: Allow mapping MSIX BAR",
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/
commit/?id=a32295c612c57990d17fb0f41e7134394b2f35f6

Fixes: 90a1633b2347 ("eal/linux: allow to map BARs with MSI-X tables")

Signed-off-by: Takeshi Yoshimura <t.yoshimura8869@gmail.com>
Reviewed-by: Anatoly Burakov <anatoly.burakov@intel.com>
drivers/bus/pci/linux/pci_vfio.c