eal: add option to force IOVA as PA mode
PATCH 1/1 eal: add option to force IOVA as PA mode
From: Chas Williams <[email protected]>
The IOMMU in some machines report that they can only support limited widths. IOVA virtual addresses may exceed this width making the use of IOVA virtual addresses difficult. The option CONFIG_RTE_LIBRTE_USE_PHYS_IOVA can used to force IOVA physical address usage.
Signed-off-by Chas Williams <[email protected]>
--- config/common_base | 5 +++++ lib/librte_eal/bsdapp/eal/eal.c | 4 ++++ lib/librte_eal/linuxapp/eal/eal.c | 4 ++++ 3 files changed, 13 insertions(+)
config/common_base +5 -0
@@ -820,3 +820,8 @@ CONFIG_RTE_APP_CRYPTO_PERF=y # Compile the eventdev application # CONFIG_RTE_APP_EVENTDEV=y + +# +# Force IOVA physical addresses in VFIO +# +CONFIG_RTE_LIBRTE_USE_PHYS_IOVA=n
lib/librte_eal/bsdapp/eal/eal.c +4 -0
@@ -569,8 +569,12 @@ rte_eal_init(int argc, char **argv)return -1 ; } +#ifdef RTE_LIBRTE_USE_PHYS_IOVA +rte_eal_get_configuration ()->iova_mode =RTE_IOVA_PA ; +#else /* autodetect the iova mapping mode (default is iova_pa) */ rte_eal_get_configuration ()->iova_mode =rte_bus_get_iommu_class (); +#endif if (internal_config.no_hugetlbfs == 0 && internal_config.process_type != RTE_PROC_SECONDARY &&
lib/librte_eal/linuxapp/eal/eal.c +4 -0
@@ -804,8 +804,12 @@ rte_eal_init(int argc, char **argv)return -1 ; } +#ifdef RTE_LIBRTE_USE_PHYS_IOVA +rte_eal_get_configuration ()->iova_mode =RTE_IOVA_PA ; +#else /* autodetect the iova mapping mode (default is iova_pa) */ rte_eal_get_configuration ()->iova_mode =rte_bus_get_iommu_class (); +#endif /* Workaround for KNI which requires physical address to work */ if (rte_eal_get_configuration()->iova_mode == RTE_IOVA_VA &&
Signature · 1 line
2.9.5