From: Wei Yang <weiyang@linux.vnet.ibm.com>
Date: Tue, 8 Sep 2015 21:59:48 +0000 (-0700)
Subject: mm/page_alloc.c: refine the calculation of highest possible node id
X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=904a9553d4fcdc0c7d5621f6178f0e07598701dc;p=linux.git

mm/page_alloc.c: refine the calculation of highest possible node id

nr_node_ids records the highest possible node id, which is calculated by
scanning the bitmap node_states[N_POSSIBLE].  Current implementation
scan the bitmap from the beginning, which will scan the whole bitmap.

This patch reverses the order by scanning from the end with
find_last_bit().

Signed-off-by: Wei Yang <weiyang@linux.vnet.ibm.com>
Cc: Tejun Heo <tj@kernel.org>
Acked-by: David Rientjes <rientjes@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
---

diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index 5b5240b7f642d..809e27e77b3a3 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -5478,11 +5478,9 @@ void __paginginit free_area_init_node(int nid, unsigned long *zones_size,
  */
 void __init setup_nr_node_ids(void)
 {
-	unsigned int node;
-	unsigned int highest = 0;
+	unsigned int highest;
 
-	for_each_node_mask(node, node_possible_map)
-		highest = node;
+	highest = find_last_bit(node_possible_map.bits, MAX_NUMNODES);
 	nr_node_ids = highest + 1;
 }
 #endif