All of lore.kernel.org
 help / color / mirror / Atom feed
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


             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.