From 22a55d2eb6ab7a096500f757edf8bbb0715deb28 Mon Sep 17 00:00:00 2001 From: Takeshi Yoshimura Date: Wed, 10 Jul 2019 19:22:35 -0700 Subject: [PATCH] vfio: fix build on Linux < 4.2 The commit db90b4969e2e ("vfio: retry creating sPAPR DMA window") introduced a build breakage on old Linux. Linux <4.2 does not define ddw in struct vfio_iommu_spapr_tce_info. Without ddw, we cannot change window size and so should give up the creation. I just exculuded the retrying code if ddw is not supported. Fixes: db90b4969e2e ("vfio: retry creating sPAPR DMA window") Signed-off-by: Takeshi Yoshimura Tested-by: Anatoly Burakov --- lib/librte_eal/linux/eal/eal_vfio.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/librte_eal/linux/eal/eal_vfio.c b/lib/librte_eal/linux/eal/eal_vfio.c index 7053ebe7d5..fadef427f9 100644 --- a/lib/librte_eal/linux/eal/eal_vfio.c +++ b/lib/librte_eal/linux/eal/eal_vfio.c @@ -1445,6 +1445,7 @@ vfio_spapr_create_new_dma_window(int vfio_container_fd, /* create new DMA window */ ret = ioctl(vfio_container_fd, VFIO_IOMMU_SPAPR_TCE_CREATE, create); if (ret) { +#ifdef VFIO_IOMMU_SPAPR_INFO_DDW /* try possible page_shift and levels for workaround */ uint32_t levels; @@ -1463,6 +1464,7 @@ vfio_spapr_create_new_dma_window(int vfio_container_fd, if (!ret) break; } +#endif if (ret) { RTE_LOG(ERR, EAL, " cannot create new DMA window, " "error %i (%s)\n", errno, strerror(errno)); -- 2.20.1