lib: fix typos
[dpdk.git] / lib / librte_eal / linuxapp / eal / eal_memory.c
index e2ea120..16a181c 100644 (file)
@@ -59,7 +59,6 @@
 
 #include <rte_log.h>
 #include <rte_memory.h>
-#include <rte_memzone.h>
 #include <rte_launch.h>
 #include <rte_eal.h>
 #include <rte_eal_memconfig.h>
@@ -108,10 +107,11 @@ test_phys_addrs_available(void)
 
        physaddr = rte_mem_virt2phy(&tmp);
        if (physaddr == RTE_BAD_PHYS_ADDR) {
-               RTE_LOG(ERR, EAL,
-                       "Cannot obtain physical addresses: %s. "
-                       "Only vfio will function.\n",
-                       strerror(errno));
+               if (rte_eal_iova_mode() == RTE_IOVA_PA)
+                       RTE_LOG(ERR, EAL,
+                               "Cannot obtain physical addresses: %s. "
+                               "Only vfio will function.\n",
+                               strerror(errno));
                phys_addrs_available = false;
        }
 }
@@ -128,12 +128,9 @@ rte_mem_virt2phy(const void *virtaddr)
        int page_size;
        off_t offset;
 
-       if (rte_eal_iova_mode() == RTE_IOVA_VA)
-               return (uintptr_t)virtaddr;
-
        /* Cannot parse /proc/self/pagemap, no need to log errors everywhere */
        if (!phys_addrs_available)
-               return RTE_BAD_PHYS_ADDR;
+               return RTE_BAD_IOVA;
 
        /* standard page size */
        page_size = getpagesize();
@@ -142,7 +139,7 @@ rte_mem_virt2phy(const void *virtaddr)
        if (fd < 0) {
                RTE_LOG(ERR, EAL, "%s(): cannot open /proc/self/pagemap: %s\n",
                        __func__, strerror(errno));
-               return RTE_BAD_PHYS_ADDR;
+               return RTE_BAD_IOVA;
        }
 
        virt_pfn = (unsigned long)virtaddr / page_size;
@@ -151,7 +148,7 @@ rte_mem_virt2phy(const void *virtaddr)
                RTE_LOG(ERR, EAL, "%s(): seek error in /proc/self/pagemap: %s\n",
                                __func__, strerror(errno));
                close(fd);
-               return RTE_BAD_PHYS_ADDR;
+               return RTE_BAD_IOVA;
        }
 
        retval = read(fd, &page, PFN_MASK_SIZE);
@@ -159,12 +156,12 @@ rte_mem_virt2phy(const void *virtaddr)
        if (retval < 0) {
                RTE_LOG(ERR, EAL, "%s(): cannot read /proc/self/pagemap: %s\n",
                                __func__, strerror(errno));
-               return RTE_BAD_PHYS_ADDR;
+               return RTE_BAD_IOVA;
        } else if (retval != PFN_MASK_SIZE) {
                RTE_LOG(ERR, EAL, "%s(): read %d bytes from /proc/self/pagemap "
                                "but expected %d:\n",
                                __func__, retval, PFN_MASK_SIZE);
-               return RTE_BAD_PHYS_ADDR;
+               return RTE_BAD_IOVA;
        }
 
        /*
@@ -172,7 +169,7 @@ rte_mem_virt2phy(const void *virtaddr)
         * pagemap.txt in linux Documentation)
         */
        if ((page & 0x7fffffffffffffULL) == 0)
-               return RTE_BAD_PHYS_ADDR;
+               return RTE_BAD_IOVA;
 
        physaddr = ((page & 0x7fffffffffffffULL) * page_size)
                + ((unsigned long)virtaddr % page_size);
@@ -180,6 +177,14 @@ rte_mem_virt2phy(const void *virtaddr)
        return physaddr;
 }
 
+rte_iova_t
+rte_mem_virt2iova(const void *virtaddr)
+{
+       if (rte_eal_iova_mode() == RTE_IOVA_VA)
+               return (uintptr_t)virtaddr;
+       return rte_mem_virt2phy(virtaddr);
+}
+
 /*
  * For each hugepage in hugepg_tbl, fill the physaddr value. We find
  * it by browsing the /proc/self/pagemap special file.
@@ -339,7 +344,7 @@ void numa_error(char *where)
  * hugetlbfs, then mmap() hugepage_sz data in it. If orig is set, the
  * virtual address is stored in hugepg_tbl[i].orig_va, else it is stored
  * in hugepg_tbl[i].final_va. The second mapping (when orig is 0) tries to
- * map continguous physical blocks in contiguous virtual blocks.
+ * map contiguous physical blocks in contiguous virtual blocks.
  */
 static unsigned
 map_all_hugepages(struct hugepage_file *hugepg_tbl, struct hugepage_info *hpi,
@@ -685,6 +690,8 @@ create_shared_memory(const char *filename, const size_t mem_size)
        }
        retval = mmap(NULL, mem_size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
        close(fd);
+       if (retval == MAP_FAILED)
+               return NULL;
        return retval;
 }
 
@@ -1028,7 +1035,10 @@ rte_eal_hugepage_init(void)
                                        strerror(errno));
                        return -1;
                }
-               mcfg->memseg[0].phys_addr = RTE_BAD_PHYS_ADDR;
+               if (rte_eal_iova_mode() == RTE_IOVA_VA)
+                       mcfg->memseg[0].iova = (uintptr_t)addr;
+               else
+                       mcfg->memseg[0].iova = RTE_BAD_IOVA;
                mcfg->memseg[0].addr = addr;
                mcfg->memseg[0].hugepage_sz = RTE_PGSIZE_4K;
                mcfg->memseg[0].len = internal_config.memory;
@@ -1277,7 +1287,7 @@ rte_eal_hugepage_init(void)
                        if (j == RTE_MAX_MEMSEG)
                                break;
 
-                       mcfg->memseg[j].phys_addr = hugepage[i].physaddr;
+                       mcfg->memseg[j].iova = hugepage[i].physaddr;
                        mcfg->memseg[j].addr = hugepage[i].final_va;
                        mcfg->memseg[j].len = hugepage[i].size;
                        mcfg->memseg[j].socket_id = hugepage[i].socket_id;
@@ -1288,7 +1298,7 @@ rte_eal_hugepage_init(void)
 #ifdef RTE_ARCH_PPC_64
                /* Use the phy and virt address of the last page as segment
                 * address for IBM Power architecture */
-                       mcfg->memseg[j].phys_addr = hugepage[i].physaddr;
+                       mcfg->memseg[j].iova = hugepage[i].physaddr;
                        mcfg->memseg[j].addr = hugepage[i].final_va;
 #endif
                        mcfg->memseg[j].len += mcfg->memseg[j].hugepage_sz;
@@ -1489,7 +1499,7 @@ error:
        return -1;
 }
 
-bool
+int
 rte_eal_using_phys_addrs(void)
 {
        return phys_addrs_available;