Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1600012 > unrolled thread

[Patch V2 1/2] x86/mm/numa: trivial fix on typo and error message

Started byWei Yang <richard.weiyang@gmail.com>
First post2017-03-14 04:10 +0100
Last post2017-03-14 04:10 +0100
Articles 2 — 1 participant

Back to article view | Back to linux.kernel


Contents

  [Patch V2 1/2] x86/mm/numa: trivial fix on typo and error message Wei Yang <richard.weiyang@gmail.com> - 2017-03-14 04:10 +0100
    [Patch V2 2/2] x86/mm/numa: remove the numa_nodemask_from_meminfo() Wei Yang <richard.weiyang@gmail.com> - 2017-03-14 04:10 +0100

#1600012 — [Patch V2 1/2] x86/mm/numa: trivial fix on typo and error message

FromWei Yang <richard.weiyang@gmail.com>
Date2017-03-14 04:10 +0100
Subject[Patch V2 1/2] x86/mm/numa: trivial fix on typo and error message
Message-ID<tkL0u-2gr-9@gated-at.bofh.it>
When allocating pg_data in alloc_node_data(), it will try to allocate from
local node first and then from any node. If it fails at the second trial,
it means there is not available memory on any node.

This patch fixes the error message and correct one typo.

Signed-off-by: Wei Yang <richard.weiyang@gmail.com>

---
v2:
   * also print the original nid in the error message, based on Borislav's
     comment
---
 arch/x86/mm/numa.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/x86/mm/numa.c b/arch/x86/mm/numa.c
index 12dcad7297a5..ac632e5397aa 100644
--- a/arch/x86/mm/numa.c
+++ b/arch/x86/mm/numa.c
@@ -201,7 +201,7 @@ static void __init alloc_node_data(int nid)
 		nd_pa = __memblock_alloc_base(nd_size, SMP_CACHE_BYTES,
 					      MEMBLOCK_ALLOC_ACCESSIBLE);
 		if (!nd_pa) {
-			pr_err("Cannot find %zu bytes in node %d\n",
+			pr_err("Cannot find %zu bytes in any node(initial node: %d)\n",
 			       nd_size, nid);
 			return;
 		}
@@ -225,7 +225,7 @@ static void __init alloc_node_data(int nid)
  * numa_cleanup_meminfo - Cleanup a numa_meminfo
  * @mi: numa_meminfo to clean up
  *
- * Sanitize @mi by merging and removing unncessary memblks.  Also check for
+ * Sanitize @mi by merging and removing unnecessary memblks.  Also check for
  * conflicts and clear unused memblks.
  *
  * RETURNS:
-- 
2.11.0

[toc] | [next] | [standalone]


#1600015 — [Patch V2 2/2] x86/mm/numa: remove the numa_nodemask_from_meminfo()

FromWei Yang <richard.weiyang@gmail.com>
Date2017-03-14 04:10 +0100
Subject[Patch V2 2/2] x86/mm/numa: remove the numa_nodemask_from_meminfo()
Message-ID<tkL0u-2gr-15@gated-at.bofh.it>
In reply to#1600012
numa_nodemask_from_meminfo() is called to set bit according to
numa_meminfo. While the only two places for this call is used to set proper
bit to a copy of numa_nodes_parsed from numa_meminfo. With current code
path, those numa node information in numa_meminfo is a subset of
numa_nodes_parsed. So it is not necessary to set the bits again.

The following is a code path analysis to prove the numa node information in
numa_meminfo is a subset of numa_nodes_parsed.

    x86_numa_init()
        numa_init()
            Case 1
            acpi_numa_init()
                acpi_parse_memory_affinity()
                    numa_add_memblk()
                    node_set(numa_nodes_parsed)
                acpi_parse_slit()
                    numa_nodemask_from_meminfo()

            Case 2
            amd_numa_init()
                numa_add_memblk()
                node_set(numa_nodes_parsed)

            Case 3
            dummy_numa_init()
                node_set(numa_nodes_parsed)
                numa_add_memblk()

            numa_register_memblks()
                numa_nodemask_from_meminfo()

From the code path analysis, we can see each time a memblk is added, the
proper bit is set in numa_nodes_parsed, which means it is not necessary to
set it again in numa_nodemask_from_meminfo() for a copy of
numa_nodes_parsed.

This patch removes numa_nodemask_from_meminfo().

Signed-off-by: Wei Yang <richard.weiyang@gmail.com>
---
 arch/x86/mm/numa.c | 21 +--------------------
 1 file changed, 1 insertion(+), 20 deletions(-)

diff --git a/arch/x86/mm/numa.c b/arch/x86/mm/numa.c
index ac632e5397aa..5ecc5a745c51 100644
--- a/arch/x86/mm/numa.c
+++ b/arch/x86/mm/numa.c
@@ -314,20 +314,6 @@ int __init numa_cleanup_meminfo(struct numa_meminfo *mi)
 	return 0;
 }
 
-/*
- * Set nodes, which have memory in @mi, in *@nodemask.
- */
-static void __init numa_nodemask_from_meminfo(nodemask_t *nodemask,
-					      const struct numa_meminfo *mi)
-{
-	int i;
-
-	for (i = 0; i < ARRAY_SIZE(mi->blk); i++)
-		if (mi->blk[i].start != mi->blk[i].end &&
-		    mi->blk[i].nid != NUMA_NO_NODE)
-			node_set(mi->blk[i].nid, *nodemask);
-}
-
 /**
  * numa_reset_distance - Reset NUMA distance table
  *
@@ -347,16 +333,12 @@ void __init numa_reset_distance(void)
 
 static int __init numa_alloc_distance(void)
 {
-	nodemask_t nodes_parsed;
 	size_t size;
 	int i, j, cnt = 0;
 	u64 phys;
 
 	/* size the new table and allocate it */
-	nodes_parsed = numa_nodes_parsed;
-	numa_nodemask_from_meminfo(&nodes_parsed, &numa_meminfo);
-
-	for_each_node_mask(i, nodes_parsed)
+	for_each_node_mask(i, numa_nodes_parsed)
 		cnt = i;
 	cnt++;
 	size = cnt * cnt * sizeof(numa_distance[0]);
@@ -535,7 +517,6 @@ static int __init numa_register_memblks(struct numa_meminfo *mi)
 
 	/* Account for nodes with cpus and no memory */
 	node_possible_map = numa_nodes_parsed;
-	numa_nodemask_from_meminfo(&node_possible_map, mi);
 	if (WARN_ON(nodes_empty(node_possible_map)))
 		return -EINVAL;
 
-- 
2.11.0

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web