vfio: fix workaround of BAR0 mapping

Message ID 20180712024455.4807-1-t.yoshimura8869@gmail.com (mailing list archive)
State Superseded, archived
Headers
Series vfio: fix workaround of BAR0 mapping |

Checks

Context Check Description
ci/checkpatch warning coding style issues
ci/Intel-compilation success Compilation OK

Commit Message

Takeshi Yoshimura July 12, 2018, 2:44 a.m. UTC
  The workaround of BAR0 mapping does not work if BAR0 area is smaller
than page size (64KB in ppc). In addition, we no longer need the
workaround in recent Linux because VFIO allows MSIX mapping (*).
This fix is just to skip the workaround if BAR0 is smarller than a page.

(*): "vfio-pci: Allow mapping MSIX BAR", https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/drivers/vfio/pci/vfio_pci.c?h=v4.18-rc3&id=a32295c612c57990d17fb0f41e7134394b2f35f6

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

Signed-off-by: Takeshi Yoshimura <t.yoshimura8869@gmail.com>
---
 drivers/bus/pci/linux/pci_vfio.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
  

Patch

diff --git a/drivers/bus/pci/linux/pci_vfio.c b/drivers/bus/pci/linux/pci_vfio.c
index aeeaa9ed8..facda64bb 100644
--- a/drivers/bus/pci/linux/pci_vfio.c
+++ b/drivers/bus/pci/linux/pci_vfio.c
@@ -337,7 +337,7 @@  pci_vfio_mmap_bar(int vfio_dev_fd, struct mapped_pci_resource *vfio_res,
 		/* Skip this BAR */
 		return 0;
 
-	if (msix_table->bar_index == bar_index) {
+	if (msix_table->bar_index == bar_index && (uint64_t)PAGE_SIZE < bar->size) {
 		/*
 		 * VFIO will not let us map the MSI-X table,
 		 * but we can map around it.