From: Claudio Migliorelli <claudio.migliorelli@mail.polimi.it>
To: Mike Rapoport <rppt@kernel.org>
Cc: Rebecca Mckeever <remckee0@gmail.com>,
David Hildenbrand <david@redhat.com>,
Shaoqin Huang <shaoqin.huang@intel.com>,
Karolina Drobnik <karolinadrobnik@gmail.com>,
Claudio Migliorelli <claudio.migliorelli@mail.polimi.it>,
linux-mm@kvack.org, linux-kernel@vger.kernel.org
Subject: [PATCH] Add tests for memblock_alloc_node()
Date: Fri, 13 Jan 2023 17:01:43 +0100 (CET) [thread overview]
Message-ID: <0c3fdce6-3180-89c6-ba9e-77b7e98a5691@mail.polimi.it> (raw)
These tests are aimed at verifying the memblock_alloc_node() to work as expected, so setting the
correct NUMA node for the new allocated region. The memblock_alloc_node() is mimicked by executing
the already implemented test function run_memblock_alloc_try_nid() and by setting the flags used
internally by the memblock_alloc_node(). The core check is between the requested NUMA node and the
`nid` field inside the memblock_region structure. These two are supposed to be equal in order for
the test to succeed.
Signed-off-by: Claudio Migliorelli <claudio.migliorelli@mail.polimi.it>
---
tools/testing/memblock/tests/alloc_nid_api.c | 43 ++++++++++++++++++++
1 file changed, 43 insertions(+)
diff --git a/tools/testing/memblock/tests/alloc_nid_api.c b/tools/testing/memblock/tests/alloc_nid_api.c
index 2c2d60f4e3e3..9183e2219c5c 100644
--- a/tools/testing/memblock/tests/alloc_nid_api.c
+++ b/tools/testing/memblock/tests/alloc_nid_api.c
@@ -2483,6 +2483,40 @@ static int alloc_try_nid_numa_split_all_reserved_generic_check(void)
return 0;
}
+/*
+ * A test that tries to allocate a memory region through the
+ * memblock_alloc_node() on a NUMA node with id `nid`. The call to the
+ * memblock_alloc_node() is mimicked using the run_memblock_alloc_try_nid()
+ * with appropriate flags, the same used internally by the memblock_alloc_node().
+ * Expected to have the correct NUMA node set for the new region.
+ */
+static int alloc_node_on_correct_nid_simple_check(void)
+{
+ int nid_req = 2;
+ void *allocated_ptr = NULL;
+#ifdef CONFIG_NUMA
+ struct memblock_region *req_node = &memblock.memory.regions[nid_req];
+#endif
+ phys_addr_t size = SZ_512;
+
+ PREFIX_PUSH();
+ setup_numa_memblock(node_fractions);
+
+ allocated_ptr = run_memblock_alloc_try_nid(size, SMP_CACHE_BYTES,
+ MEMBLOCK_LOW_LIMIT, MEMBLOCK_ALLOC_ACCESSIBLE,
+ nid_req);
+
+ ASSERT_NE(allocated_ptr, NULL);
+ assert_mem_content(allocated_ptr, size, alloc_nid_test_flags);
+#ifdef CONFIG_NUMA
+ ASSERT_EQ(nid_req, req_node->nid);
+#endif
+
+ test_pass_pop();
+
+ return 0;
+}
+
/* Test case wrappers for NUMA tests */
static int alloc_try_nid_numa_simple_check(void)
{
@@ -2621,6 +2655,14 @@ static int alloc_try_nid_numa_split_all_reserved_check(void)
return 0;
}
+static int alloc_try_nid_numa_correct_node_simple_check(void)
+{
+ test_print("\tRunning %s...\n", __func__);
+ alloc_node_on_correct_nid_simple_check();
+
+ return 0;
+}
+
int __memblock_alloc_nid_numa_checks(void)
{
test_print("Running %s NUMA tests...\n",
@@ -2640,6 +2682,7 @@ int __memblock_alloc_nid_numa_checks(void)
alloc_try_nid_numa_large_region_check();
alloc_try_nid_numa_reserved_full_merge_check();
alloc_try_nid_numa_split_all_reserved_check();
+ alloc_try_nid_numa_correct_node_simple_check();
return 0;
}
--
2.39.0
next reply other threads:[~2023-01-13 16:08 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-01-13 16:01 Claudio Migliorelli [this message]
2023-01-19 12:58 ` [PATCH] Add tests for memblock_alloc_node() Mike Rapoport
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=0c3fdce6-3180-89c6-ba9e-77b7e98a5691@mail.polimi.it \
--to=claudio.migliorelli@mail.polimi.it \
--cc=david@redhat.com \
--cc=karolinadrobnik@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=remckee0@gmail.com \
--cc=rppt@kernel.org \
--cc=shaoqin.huang@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.