Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0edaf86c authored by Andrew Morton's avatar Andrew Morton Committed by Linus Torvalds
Browse files

include/linux/nodemask.h: create next_node_in() helper



Lots of code does

	node = next_node(node, XXX);
	if (node == MAX_NUMNODES)
		node = first_node(XXX);

so create next_node_in() to do this and use it in various places.

[mhocko@suse.com: use next_node_in() helper]
Acked-by: default avatarVlastimil Babka <vbabka@suse.cz>
Acked-by: default avatarMichal Hocko <mhocko@kernel.org>
Signed-off-by: default avatarMichal Hocko <mhocko@suse.com>
Cc: Xishi Qiu <qiuxishi@huawei.com>
Cc: Joonsoo Kim <js1304@gmail.com>
Cc: David Rientjes <rientjes@google.com>
Cc: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
Cc: Laura Abbott <lauraa@codeaurora.org>
Cc: Hui Zhu <zhuhui@xiaomi.com>
Cc: Wang Xiaoqiang <wangxq10@lzu.edu.cn>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 48a27055
Loading
Loading
Loading
Loading
+1 −3
Original line number Original line Diff line number Diff line
@@ -962,9 +962,7 @@ static void __init setup_numa_mapping(void)
		cpumask_set_cpu(best_cpu, &node_2_cpu_mask[node]);
		cpumask_set_cpu(best_cpu, &node_2_cpu_mask[node]);
		cpu_2_node[best_cpu] = node;
		cpu_2_node[best_cpu] = node;
		cpumask_clear_cpu(best_cpu, &unbound_cpus);
		cpumask_clear_cpu(best_cpu, &unbound_cpus);
		node = next_node(node, default_nodes);
		node = next_node_in(node, default_nodes);
		if (node == MAX_NUMNODES)
			node = first_node(default_nodes);
	}
	}


	/* Print out node assignments and set defaults for disabled cpus */
	/* Print out node assignments and set defaults for disabled cpus */
+1 −3
Original line number Original line Diff line number Diff line
@@ -617,9 +617,7 @@ static void __init numa_init_array(void)
		if (early_cpu_to_node(i) != NUMA_NO_NODE)
		if (early_cpu_to_node(i) != NUMA_NO_NODE)
			continue;
			continue;
		numa_set_node(i, rr);
		numa_set_node(i, rr);
		rr = next_node(rr, node_online_map);
		rr = next_node_in(rr, node_online_map);
		if (rr == MAX_NUMNODES)
			rr = first_node(node_online_map);
	}
	}
}
}


+10 −1
Original line number Original line Diff line number Diff line
@@ -43,8 +43,10 @@
 *
 *
 * int first_node(mask)			Number lowest set bit, or MAX_NUMNODES
 * int first_node(mask)			Number lowest set bit, or MAX_NUMNODES
 * int next_node(node, mask)		Next node past 'node', or MAX_NUMNODES
 * int next_node(node, mask)		Next node past 'node', or MAX_NUMNODES
 * int next_node_in(node, mask)		Next node past 'node', or wrap to first,
 *					or MAX_NUMNODES
 * int first_unset_node(mask)		First node not set in mask, or 
 * int first_unset_node(mask)		First node not set in mask, or 
 *					MAX_NUMNODES.
 *					MAX_NUMNODES
 *
 *
 * nodemask_t nodemask_of_node(node)	Return nodemask with bit 'node' set
 * nodemask_t nodemask_of_node(node)	Return nodemask with bit 'node' set
 * NODE_MASK_ALL			Initializer - all bits set
 * NODE_MASK_ALL			Initializer - all bits set
@@ -259,6 +261,13 @@ static inline int __next_node(int n, const nodemask_t *srcp)
	return min_t(int,MAX_NUMNODES,find_next_bit(srcp->bits, MAX_NUMNODES, n+1));
	return min_t(int,MAX_NUMNODES,find_next_bit(srcp->bits, MAX_NUMNODES, n+1));
}
}


/*
 * Find the next present node in src, starting after node n, wrapping around to
 * the first node in src if needed.  Returns MAX_NUMNODES if src is empty.
 */
#define next_node_in(n, src) __next_node_in((n), &(src))
int __next_node_in(int node, const nodemask_t *srcp);

static inline void init_nodemask_of_node(nodemask_t *mask, int node)
static inline void init_nodemask_of_node(nodemask_t *mask, int node)
{
{
	nodes_clear(*mask);
	nodes_clear(*mask);
+1 −7
Original line number Original line Diff line number Diff line
@@ -2591,13 +2591,7 @@ int __cpuset_node_allowed(int node, gfp_t gfp_mask)


static int cpuset_spread_node(int *rotor)
static int cpuset_spread_node(int *rotor)
{
{
	int node;
	return *rotor = next_node_in(*rotor, current->mems_allowed);

	node = next_node(*rotor, current->mems_allowed);
	if (node == MAX_NUMNODES)
		node = first_node(current->mems_allowed);
	*rotor = node;
	return node;
}
}


int cpuset_mem_spread_node(void)
int cpuset_mem_spread_node(void)
+1 −1
Original line number Original line Diff line number Diff line
@@ -25,7 +25,7 @@ lib-y := ctype.o string.o vsprintf.o cmdline.o \
	 sha1.o md5.o irq_regs.o argv_split.o \
	 sha1.o md5.o irq_regs.o argv_split.o \
	 flex_proportions.o ratelimit.o show_mem.o \
	 flex_proportions.o ratelimit.o show_mem.o \
	 is_single_threaded.o plist.o decompress.o kobject_uevent.o \
	 is_single_threaded.o plist.o decompress.o kobject_uevent.o \
	 earlycpio.o seq_buf.o nmi_backtrace.o
	 earlycpio.o seq_buf.o nmi_backtrace.o nodemask.o


obj-$(CONFIG_ARCH_HAS_DEBUG_STRICT_USER_COPY_CHECKS) += usercopy.o
obj-$(CONFIG_ARCH_HAS_DEBUG_STRICT_USER_COPY_CHECKS) += usercopy.o
lib-$(CONFIG_MMU) += ioremap.o
lib-$(CONFIG_MMU) += ioremap.o
Loading