physmem: fix physmem allocation on kernels without NUMA support 35/9935/2
authorDamjan Marion <damjan.marion@gmail.com>
Wed, 3 Jan 2018 15:48:34 +0000 (15:48 +0000)
committerDave Wallace <dwallacelf@gmail.com>
Tue, 9 Jan 2018 20:34:30 +0000 (20:34 +0000)
Change-Id: I056598a1818a39c2da73e252600c14585e5aae83
Signed-off-by: Damjan Marion <damarion@cisco.com>
src/vlib/linux/physmem.c
src/vppinfra/linux/mem.c

index 161dbf5..72b00e2 100644 (file)
@@ -223,8 +223,8 @@ unix_physmem_region_alloc (vlib_main_t * vm, char *name, u32 size,
        {
          void *ptr = pr->mem + (i << pr->log2_page_size);
          int node;
-         move_pages (0, 1, &ptr, 0, &node, 0);
-         if (numa_node != node)
+         if ((move_pages (0, 1, &ptr, 0, &node, 0) == 0) &&
+             (numa_node != node))
            {
              clib_warning ("physmem page for region \'%s\' allocated on the"
                            " wrong numa node (requested %u actual %u)",
index 2d8f593..e0e22b0 100644 (file)
@@ -71,12 +71,12 @@ clib_mem_vm_ext_alloc (clib_mem_vm_alloc_t * a)
   if (a->flags & (CLIB_MEM_VM_F_NUMA_PREFER | CLIB_MEM_VM_F_NUMA_FORCE))
     {
       int rv;
-      rv =
-       get_mempolicy (&old_mpol, old_mask, sizeof (old_mask) * 8 + 1, 0, 0);
+      rv = get_mempolicy (&old_mpol, old_mask, sizeof (old_mask) * 8 + 1,
+                         0, 0);
 
       if (rv == -1)
        {
-         if ((a->flags & CLIB_MEM_VM_F_NUMA_FORCE) != 0)
+         if (a->numa_node != 0 && (a->flags & CLIB_MEM_VM_F_NUMA_FORCE) != 0)
            {
              err = clib_error_return_unix (0, "get_mempolicy");
              goto error;
@@ -193,7 +193,7 @@ clib_mem_vm_ext_alloc (clib_mem_vm_alloc_t * a)
       goto error;
     }
 
-  /* re-apply ole numa memory policy */
+  /* re-apply old numa memory policy */
   if (old_mpol != -1 &&
       set_mempolicy (old_mpol, old_mask, sizeof (old_mask) * 8 + 1) == -1)
     {