net/mlx5: fix port action for LAG
[dpdk.git] / lib / librte_eal / linux / eal / eal_memory.c
index 226ac70..43e4ffc 100644 (file)
@@ -69,6 +69,26 @@ static int phys_addrs_available = -1;
 
 #define RANDOMIZE_VA_SPACE_FILE "/proc/sys/kernel/randomize_va_space"
 
+uint64_t eal_get_baseaddr(void)
+{
+       /*
+        * Linux kernel uses a really high address as starting address for
+        * serving mmaps calls. If there exists addressing limitations and IOVA
+        * mode is VA, this starting address is likely too high for those
+        * devices. However, it is possible to use a lower address in the
+        * process virtual address space as with 64 bits there is a lot of
+        * available space.
+        *
+        * Current known limitations are 39 or 40 bits. Setting the starting
+        * address at 4GB implies there are 508GB or 1020GB for mapping the
+        * available hugepages. This is likely enough for most systems, although
+        * a device with addressing limitations should call
+        * rte_mem_check_dma_mask for ensuring all memory is within supported
+        * range.
+        */
+       return 0x100000000ULL;
+}
+
 /*
  * Get physical address of any mapped virtual address in the current process.
  */
@@ -811,6 +831,7 @@ alloc_memseg_list(struct rte_memseg_list *msl, uint64_t page_sz,
        msl->page_sz = page_sz;
        msl->socket_id = socket_id;
        msl->base_va = NULL;
+       msl->heap = 1; /* mark it as a heap segment */
 
        RTE_LOG(DEBUG, EAL, "Memseg list allocated: 0x%zxkB at socket %i\n",
                        (size_t)page_sz >> 10, socket_id);
@@ -1385,6 +1406,7 @@ eal_legacy_hugepage_init(void)
                msl->page_sz = page_sz;
                msl->socket_id = 0;
                msl->len = internal_config.memory;
+               msl->heap = 1;
 
                /* we're in single-file segments mode, so only the segment list
                 * fd needs to be set up.
@@ -1657,6 +1679,7 @@ eal_legacy_hugepage_init(void)
                mem_sz = msl->len;
                munmap(msl->base_va, mem_sz);
                msl->base_va = NULL;
+               msl->heap = 0;
 
                /* destroy backing fbarray */
                rte_fbarray_destroy(&msl->memseg_arr);