summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWei Yang <weiyang@linux.vnet.ibm.com>2015-09-09 00:59:48 +0300
committerLinus Torvalds <torvalds@linux-foundation.org>2015-09-09 01:35:28 +0300
commit904a9553d4fcdc0c7d5621f6178f0e07598701dc (patch)
tree2dd0acd4856e1365c3abb47ff7da700200e29279
parent52a2b53ffde6d6018dfc454fbde34383351fb896 (diff)
downloadlinux-904a9553d4fcdc0c7d5621f6178f0e07598701dc.tar.xz
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>
-rw-r--r--mm/page_alloc.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index 5b5240b7f642..809e27e77b3a 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