[dpdk-dev,06/10] bsdapp/eal: detect iova mapping mode
Checks
Commit Message
- Moving late bus scanning to up..just after eal_parsing.
- Mapping mode would be default for bsdapp. It supports
only one pass through mode (RTE_KDRV_NIC_UIO)
Signed-off-by: Santosh Shukla <santosh.shukla@caviumnetworks.com>
Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
---
lib/librte_eal/bsdapp/eal/eal.c | 24 ++++++++++++++++++------
lib/librte_eal/bsdapp/eal/rte_eal_version.map | 1 +
2 files changed, 19 insertions(+), 6 deletions(-)
@@ -113,6 +113,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)
@@ -536,6 +543,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 &&
eal_hugepage_info_init() < 0) {
@@ -615,12 +633,6 @@ rte_eal_init(int argc, char **argv)
rte_config.master_lcore, thread_id, cpuset,
ret == 0 ? "" : "...");
- 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) {
/*
@@ -199,5 +199,6 @@ DPDK_17.08 {
rte_pci_get_iommu_class;
rte_bus_get_iommu_class;
+ rte_eal_iova_mode;
} DPDK_17.05;