memblock tests: add top-down NUMA tests for memblock_alloc_try_nid*
authorRebecca Mckeever <remckee0@gmail.com>
Tue, 13 Sep 2022 05:21:10 +0000 (00:21 -0500)
committerMike Rapoport <rppt@linux.ibm.com>
Sun, 18 Sep 2022 07:30:20 +0000 (10:30 +0300)
commit50c80241f15890a64b9302187faaeb7cfe78b4b8
tree0fecc9b805650f0a57d151d4e205c3e6b0fcfc27
parentb338bde5a3a9c4ccf6c83e0a20c8de3ad281ef02
memblock tests: add top-down NUMA tests for memblock_alloc_try_nid*

Add tests for memblock_alloc_try_nid() and memblock_alloc_try_nid_raw()
where the simulated physical memory is set up with multiple NUMA nodes.
Additionally, all of these tests set nid != NUMA_NO_NODE. These tests are
run with a top-down allocation direction.

The tested scenarios are:

Range unrestricted:
- region can be allocated in the specific node requested:
      + there are no previously reserved regions
      + the requested node is partially reserved but has enough space
- the specific node requested cannot accommodate the request, but the
  region can be allocated in a different node:
      + there are no previously reserved regions, but node is too small
      + the requested node is fully reserved
      + the requested node is partially reserved and does not have
        enough space

Range restricted:
- region can be allocated in the specific node requested after dropping
  min_addr:
      + range partially overlaps with two different nodes, where the first
        node is the requested node
      + range partially overlaps with two different nodes, where the
        requested node ends before min_addr
- region cannot be allocated in the specific node requested, but it can be
  allocated in the requested range:
      + range overlaps with multiple nodes along node boundaries, and the
        requested node ends before min_addr
      + range overlaps with multiple nodes along node boundaries, and the
        requested node starts after max_addr
- region cannot be allocated in the specific node requested, but it can be
  allocated after dropping min_addr:
      + range partially overlaps with two different nodes, where the
        second node is the requested node

Acked-by: David Hildenbrand <david@redhat.com>
Signed-off-by: Rebecca Mckeever <remckee0@gmail.com>
Signed-off-by: Mike Rapoport <rppt@linux.ibm.com>
Link: https://lore.kernel.org/r/84009c5b3969337ccf89df850db56d364f8c228b.1663046060.git.remckee0@gmail.com
tools/testing/memblock/tests/alloc_nid_api.c
tools/testing/memblock/tests/alloc_nid_api.h
tools/testing/memblock/tests/common.h