eal: introduce helper API for IOVA mode
authorSantosh Shukla <santosh.shukla@caviumnetworks.com>
Fri, 6 Oct 2017 11:03:42 +0000 (16:33 +0530)
committerThomas Monjalon <thomas@monjalon.net>
Fri, 6 Oct 2017 18:39:07 +0000 (20:39 +0200)
Introducing rte_eal_iova_mode() helper API. This API
used by non-eal library for detecting iova mode.

Signed-off-by: Santosh Shukla <santosh.shukla@caviumnetworks.com>
Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Tested-by: Hemant Agrawal <hemant.agrawal@nxp.com>
lib/librte_eal/bsdapp/eal/eal.c
lib/librte_eal/bsdapp/eal/rte_eal_version.map
lib/librte_eal/common/include/rte_eal.h
lib/librte_eal/linuxapp/eal/eal.c
lib/librte_eal/linuxapp/eal/rte_eal_version.map

index 5fa5988..07e7220 100644 (file)
@@ -119,6 +119,12 @@ rte_eal_get_configuration(void)
        return &rte_config;
 }
 
+enum rte_iova_mode
+rte_eal_iova_mode(void)
+{
+       return rte_eal_get_configuration()->iova_mode;
+}
+
 /* parse a sysfs (or other) file containing one integer value */
 int
 eal_parse_sysfs_value(const char *filename, unsigned long *val)
index e887e06..d54583c 100644 (file)
@@ -243,6 +243,7 @@ DPDK_17.11 {
        global:
 
        rte_bus_get_iommu_class;
+       rte_eal_iova_mode;
        rte_pci_get_iommu_class;
        rte_pci_match;
 
index 559d230..436094d 100644 (file)
@@ -45,6 +45,7 @@
 
 #include <rte_per_lcore.h>
 #include <rte_config.h>
+#include <rte_bus.h>
 
 #ifdef __cplusplus
 extern "C" {
@@ -87,6 +88,9 @@ struct rte_config {
        /** Primary or secondary configuration */
        enum rte_proc_type_t process_type;
 
+       /** PA or VA mapping mode */
+       enum rte_iova_mode iova_mode;
+
        /**
         * Pointer to memory configuration, which may be shared across multiple
         * DPDK instances
@@ -287,6 +291,14 @@ static inline int rte_gettid(void)
        return RTE_PER_LCORE(_thread_id);
 }
 
+/**
+ * Get the iova mode
+ *
+ * @return
+ *   enum rte_iova_mode value.
+ */
+enum rte_iova_mode rte_eal_iova_mode(void);
+
 /**
  * Run function before main() with low priority.
  *
index 48f12f4..febbafd 100644 (file)
@@ -128,6 +128,12 @@ rte_eal_get_configuration(void)
        return &rte_config;
 }
 
+enum rte_iova_mode
+rte_eal_iova_mode(void)
+{
+       return rte_eal_get_configuration()->iova_mode;
+}
+
 /* parse a sysfs (or other) file containing one integer value */
 int
 eal_parse_sysfs_value(const char *filename, unsigned long *val)
index 0f04b0a..b537e8b 100644 (file)
@@ -248,6 +248,7 @@ DPDK_17.11 {
        global:
 
        rte_bus_get_iommu_class;
+       rte_eal_iova_mode;
        rte_pci_get_iommu_class;
        rte_pci_match;