New upstream version 18.11-rc2
[deb_dpdk.git] / lib / librte_eal / linuxapp / eal / eal_memory.c
index fce86fd..c1b5e07 100644 (file)
@@ -1393,6 +1393,18 @@ eal_legacy_hugepage_init(void)
 
                        addr = RTE_PTR_ADD(addr, (size_t)page_sz);
                }
+               if (mcfg->dma_maskbits &&
+                   rte_mem_check_dma_mask_thread_unsafe(mcfg->dma_maskbits)) {
+                       RTE_LOG(ERR, EAL,
+                               "%s(): couldnt allocate memory due to IOVA exceeding limits of current DMA mask.\n",
+                               __func__);
+                       if (rte_eal_iova_mode() == RTE_IOVA_VA &&
+                           rte_eal_using_phys_addrs())
+                               RTE_LOG(ERR, EAL,
+                                       "%s(): Please try initializing EAL with --iova-mode=pa parameter.\n",
+                                       __func__);
+                       goto fail;
+               }
                return 0;
        }
 
@@ -1628,6 +1640,14 @@ eal_legacy_hugepage_init(void)
                rte_fbarray_destroy(&msl->memseg_arr);
        }
 
+       if (mcfg->dma_maskbits &&
+           rte_mem_check_dma_mask_thread_unsafe(mcfg->dma_maskbits)) {
+               RTE_LOG(ERR, EAL,
+                       "%s(): couldn't allocate memory due to IOVA exceeding limits of current DMA mask.\n",
+                       __func__);
+               goto fail;
+       }
+
        return 0;
 
 fail: