[PATCH] eal: add warning for incompatibe requested IOVA mode

Viacheslav Ovsiienko viacheslavo at nvidia.com
Tue Jun 6 17:39:21 CEST 2023


The DPDK can be compiled to be run in IOVA VA mode with
'enable_iova_as_pa=false' meson option. It disables support
of the physical address field in the mbufs and application
can not be run in 'IOVA as PA mode'.

The patch adds warning if some bus requires the 'IOVA as PA'
mode in runtime and the 'enable_iova_as_pa=false' meson option
was configured on build.

Signed-off-by: Viacheslav Ovsiienko <viacheslavo at nvidia.com>
---
 lib/eal/common/eal_common_bus.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/lib/eal/common/eal_common_bus.c b/lib/eal/common/eal_common_bus.c
index deb9fb8a12..acac14131a 100644
--- a/lib/eal/common/eal_common_bus.c
+++ b/lib/eal/common/eal_common_bus.c
@@ -239,9 +239,13 @@ rte_bus_get_iommu_class(void)
 			rte_bus_name(bus),
 			bus_iova_mode == RTE_IOVA_DC ? "DC" :
 			(bus_iova_mode == RTE_IOVA_PA ? "PA" : "VA"));
-		if (bus_iova_mode == RTE_IOVA_PA)
+		if (bus_iova_mode == RTE_IOVA_PA) {
 			buses_want_pa = true;
-		else if (bus_iova_mode == RTE_IOVA_VA)
+			if (!RTE_IOVA_IN_MBUF)
+				RTE_LOG(WARNING, EAL,
+					"Bus %s wants IOVA as PA not compatible with 'enable_iova_as_pa=false' build option.\n",
+					rte_bus_name(bus));
+		} else if (bus_iova_mode == RTE_IOVA_VA)
 			buses_want_va = true;
 	}
 	if (buses_want_va && !buses_want_pa) {
-- 
2.18.1



More information about the dev mailing list