- Moving late bus scanning to up..just after eal_parsing. - Detect iova mapping mode based on user provided eal option (rte_eal_iova_mode) and result of rte_bus_scan_iommu_class.
Signed-off-by: Santosh Shukla <santosh.shu...@caviumnetworks.com> Signed-off-by: Jerin Jacob <jerin.ja...@caviumnetworks.com> --- lib/librte_eal/linuxapp/eal/eal.c | 24 ++++++++++++++++++------ lib/librte_eal/linuxapp/eal/rte_eal_version.map | 1 + 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/lib/librte_eal/linuxapp/eal/eal.c b/lib/librte_eal/linuxapp/eal/eal.c index 7c78f2dc2..54f42d752 100644 --- a/lib/librte_eal/linuxapp/eal/eal.c +++ b/lib/librte_eal/linuxapp/eal/eal.c @@ -122,6 +122,13 @@ struct internal_config internal_config; /* used by rte_rdtsc() */ int rte_cycles_vmware_tsc_map; +/* Get the iova mode */ +enum rte_iova_mode +rte_eal_iova_mode(void) +{ + return internal_config.iova_mode; +} + /* Return a pointer to the configuration structure */ struct rte_config * rte_eal_get_configuration(void) @@ -793,6 +800,17 @@ rte_eal_init(int argc, char **argv) return -1; } + if (rte_bus_scan()) { + rte_eal_init_alert("Cannot scan the buses for devices\n"); + rte_errno = ENODEV; + return -1; + } + + if (rte_eal_iova_mode() == RTE_IOVA_VA && + rte_bus_get_iommu_class() == RTE_IOVA_VA) { + internal_config.iova_mode = RTE_IOVA_VA; + } + if (internal_config.no_hugetlbfs == 0 && internal_config.process_type != RTE_PROC_SECONDARY && internal_config.xen_dom0_support == 0 && @@ -890,12 +908,6 @@ rte_eal_init(int argc, char **argv) return -1; } - if (rte_bus_scan()) { - rte_eal_init_alert("Cannot scan the buses for devices\n"); - rte_errno = ENODEV; - return -1; - } - RTE_LCORE_FOREACH_SLAVE(i) { /* diff --git a/lib/librte_eal/linuxapp/eal/rte_eal_version.map b/lib/librte_eal/linuxapp/eal/rte_eal_version.map index 6c016c82e..79b005036 100644 --- a/lib/librte_eal/linuxapp/eal/rte_eal_version.map +++ b/lib/librte_eal/linuxapp/eal/rte_eal_version.map @@ -204,5 +204,6 @@ DPDK_17.08 { rte_pci_get_iommu_class; rte_bus_get_iommu_class; + rte_eal_iova_mode; } DPDK_17.05; -- 2.11.0