From mboxrd@z Thu Jan 1 00:00:00 1970 From: Anatoly Burakov Subject: [PATCH 1/3] mem: fix 32-bit memory upper limit for non-legacy mode Date: Fri, 20 Apr 2018 15:41:38 +0100 Message-ID: Cc: anatoly.burakov@intel.com To: dev@dpdk.org Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by dpdk.org (Postfix) with ESMTP id 9C56DAAE8 for ; Fri, 20 Apr 2018 16:41:43 +0200 (CEST) List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" 32-bit mode has an upper limit on amount of VA space it can preallocate, but the original implementation used the wrong constant, resulting in failure to initialize due to integer overflow. Fix it by using the correct constant. Fixes: 66cc45e293ed ("mem: replace memseg with memseg lists") Cc: anatoly.burakov@intel.com Signed-off-by: Anatoly Burakov --- lib/librte_eal/common/eal_common_memory.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/librte_eal/common/eal_common_memory.c b/lib/librte_eal/common/eal_common_memory.c index 24a9ed5..c0d4673 100644 --- a/lib/librte_eal/common/eal_common_memory.c +++ b/lib/librte_eal/common/eal_common_memory.c @@ -249,7 +249,7 @@ memseg_primary_init_32(void) else total_requested_mem = internal_config.memory; - max_mem = (uint64_t) RTE_MAX_MEM_MB_PER_TYPE << 20; + max_mem = (uint64_t)RTE_MAX_MEM_MB << 20; if (total_requested_mem > max_mem) { RTE_LOG(ERR, EAL, "Invalid parameters: 32-bit process can at most use %uM of memory\n", (unsigned int)(max_mem >> 20)); -- 2.7.4