mem: fix 32-bit memory upper limit for non-legacy mode
authorAnatoly Burakov <anatoly.burakov@intel.com>
Fri, 20 Apr 2018 15:25:25 +0000 (16:25 +0100)
committerThomas Monjalon <thomas@monjalon.net>
Fri, 27 Apr 2018 21:52:51 +0000 (23:52 +0200)
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")

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Tested-by: Jananee Parthasarathy <jananeex.m.parthasarathy@intel.com>
lib/librte_eal/common/eal_common_memory.c

index 3e30c58..54329dc 100644 (file)
@@ -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));