Do not use hugepages if none are available. 22/522/3
authorStefan Kobza <skobza@cisco.com>
Fri, 11 Mar 2016 14:18:42 +0000 (15:18 +0100)
committerGerrit Code Review <gerrit@fd.io>
Mon, 14 Mar 2016 03:50:11 +0000 (03:50 +0000)
In case socket-mem was set to <1024 and no 1G page long hupepages were
available, the condition was evaluated in unexpected manner. In other
words use_1g == 1, and that fails later in mount().
This patch makes sure this is prevented - if there are no pages_available,
do not even try to use that pagesize.

Change-Id: I30675aa017d97b99d84d5db926e62f0acb54deb6
Signed-off-by: Stefan Kobza <skobza@cisco.com>
vnet/vnet/devices/dpdk/init.c

index bcfaf25..47b5153 100644 (file)
@@ -1148,11 +1148,11 @@ dpdk_config (vlib_main_t * vm, unformat_input_t * input)
                  u32 pages_avail;
 
                  pages_avail = get_node_free_hugepages_num(c, 1048576);
-                 if (!(pages_avail >= pages_num_1g))
+                 if (!pages_avail || !(pages_avail >= pages_num_1g))
                    use_1g = 0;
 
                  pages_avail = get_node_free_hugepages_num(c, 2048);
-                 if (!(pages_avail >= pages_num_2m))
+                 if (!pages_avail || !(pages_avail >= pages_num_2m))
                    use_2m = 0;
               }
            }