[PATCH V2] mm: Replace all open encodings for NUMA_NO_NODE

Lubomir Rintel lkundrak at v3.sk
Wed Dec 5 08:26:37 AEDT 2018


On Mon, 2018-11-26 at 17:56 +0530, Anshuman Khandual wrote:
> At present there are multiple places where invalid node number is encoded
> as -1. Even though implicitly understood it is always better to have macros
> in there. Replace these open encodings for an invalid node number with the
> global macro NUMA_NO_NODE. This helps remove NUMA related assumptions like
> 'invalid node' from various places redirecting them to a common definition.
> 
> Signed-off-by: Anshuman Khandual <anshuman.khandual at arm.com>
> ---
> Changes in V2:
> 
> - Added inclusion of 'numa.h' header at various places per Andrew
> - Updated 'dev_to_node' to use NUMA_NO_NODE instead per Vinod
> 
> Changes in V1: (https://lkml.org/lkml/2018/11/23/485)
> 
> - Dropped OCFS2 changes per Joseph
> - Dropped media/video drivers changes per Hans
> 
> RFC - https://patchwork.kernel.org/patch/10678035/
> 
> Build tested this with multiple cross compiler options like alpha, sparc,
> arm64, x86, powerpc, powerpc64le etc with their default config which might
> not have compiled tested all driver related changes. I will appreciate
> folks giving this a test in their respective build environment.
> 
> All these places for replacement were found by running the following grep
> patterns on the entire kernel code. Please let me know if this might have
> missed some instances. This might also have replaced some false positives.
> I will appreciate suggestions, inputs and review.
> 
> 1. git grep "nid == -1"
> 2. git grep "node == -1"
> 3. git grep "nid = -1"
> 4. git grep "node = -1"
> 
>  arch/alpha/include/asm/topology.h             |  3 ++-
>  arch/ia64/kernel/numa.c                       |  2 +-
>  arch/ia64/mm/discontig.c                      |  6 +++---
>  arch/ia64/sn/kernel/io_common.c               |  3 ++-
>  arch/powerpc/include/asm/pci-bridge.h         |  3 ++-
>  arch/powerpc/kernel/paca.c                    |  3 ++-
>  arch/powerpc/kernel/pci-common.c              |  3 ++-
>  arch/powerpc/mm/numa.c                        | 14 +++++++-------
>  arch/powerpc/platforms/powernv/memtrace.c     |  5 +++--
>  arch/sparc/kernel/auxio_32.c                  |  3 ++-
>  arch/sparc/kernel/pci_fire.c                  |  3 ++-
>  arch/sparc/kernel/pci_schizo.c                |  3 ++-
>  arch/sparc/kernel/pcic.c                      |  7 ++++---
>  arch/sparc/kernel/psycho_common.c             |  3 ++-
>  arch/sparc/kernel/sbus.c                      |  3 ++-
>  arch/sparc/mm/init_64.c                       |  6 +++---
>  arch/sparc/prom/init_32.c                     |  3 ++-
>  arch/sparc/prom/init_64.c                     |  5 +++--
>  arch/sparc/prom/tree_32.c                     | 13 +++++++------
>  arch/sparc/prom/tree_64.c                     | 19 ++++++++++---------
>  arch/x86/include/asm/pci.h                    |  3 ++-
>  arch/x86/kernel/apic/x2apic_uv_x.c            |  7 ++++---
>  arch/x86/kernel/smpboot.c                     |  3 ++-
>  arch/x86/platform/olpc/olpc_dt.c              | 17 +++++++++--------
>  drivers/block/mtip32xx/mtip32xx.c             |  5 +++--
>  drivers/dma/dmaengine.c                       |  4 +++-
>  drivers/infiniband/hw/hfi1/affinity.c         |  3 ++-
>  drivers/infiniband/hw/hfi1/init.c             |  3 ++-
>  drivers/iommu/dmar.c                          |  5 +++--
>  drivers/iommu/intel-iommu.c                   |  3 ++-
>  drivers/misc/sgi-xp/xpc_uv.c                  |  3 ++-
>  drivers/net/ethernet/intel/ixgbe/ixgbe_main.c |  5 +++--
>  include/linux/device.h                        |  2 +-
>  init/init_task.c                              |  3 ++-
>  kernel/kthread.c                              |  3 ++-
>  kernel/sched/fair.c                           | 15 ++++++++-------
>  lib/cpumask.c                                 |  3 ++-
>  mm/huge_memory.c                              | 13 +++++++------
>  mm/hugetlb.c                                  |  3 ++-
>  mm/ksm.c                                      |  2 +-
>  mm/memory.c                                   |  7 ++++---
>  mm/memory_hotplug.c                           | 12 ++++++------
>  mm/mempolicy.c                                |  2 +-
>  mm/page_alloc.c                               |  4 ++--
>  mm/page_ext.c                                 |  2 +-
>  net/core/pktgen.c                             |  3 ++-
>  net/qrtr/qrtr.c                               |  3 ++-
>  tools/perf/bench/numa.c                       |  6 +++---
>  48 files changed, 146 insertions(+), 108 deletions(-)

Thanks for the patch. It seems to me that you've got a fairly large
amount of it wrong though -- perhaps relying just on "git grep" alone
is not the best idea.

The diffstat is not all that big, it is entirely plausible to just
review each hunk manually: just do a "git show -U20" to get some
context.

You get a NAK from me for the OLPC DT part, but I think at least the
sparc/prom part also deals with device tree nodes and not NUMA nodes.

More inline.

Lubo

> 
> diff --git a/arch/alpha/include/asm/topology.h b/arch/alpha/include/asm/topology.h
> index e6e13a8..5a77a40 100644
> --- a/arch/alpha/include/asm/topology.h
> +++ b/arch/alpha/include/asm/topology.h
> @@ -4,6 +4,7 @@
>  
>  #include <linux/smp.h>
>  #include <linux/threads.h>
> +#include <linux/numa.h>
>  #include <asm/machvec.h>
>  
>  #ifdef CONFIG_NUMA
> @@ -29,7 +30,7 @@ static const struct cpumask *cpumask_of_node(int node)
>  {
>  	int cpu;
>  
> -	if (node == -1)
> +	if (node == NUMA_NO_NODE)
>  		return cpu_all_mask;
>  
>  	cpumask_clear(&node_to_cpumask_map[node]);
> diff --git a/arch/ia64/kernel/numa.c b/arch/ia64/kernel/numa.c
> index 92c3762..1315da6 100644
> --- a/arch/ia64/kernel/numa.c
> +++ b/arch/ia64/kernel/numa.c
> @@ -74,7 +74,7 @@ void __init build_cpu_to_node_map(void)
>  		cpumask_clear(&node_to_cpu_mask[node]);
>  
>  	for_each_possible_early_cpu(cpu) {
> -		node = -1;
> +		node = NUMA_NO_NODE;
>  		for (i = 0; i < NR_CPUS; ++i)
>  			if (cpu_physical_id(cpu) == node_cpuid[i].phys_id) {
>  				node = node_cpuid[i].nid;
> diff --git a/arch/ia64/mm/discontig.c b/arch/ia64/mm/discontig.c
> index 8a96578..f9c3675 100644
> --- a/arch/ia64/mm/discontig.c
> +++ b/arch/ia64/mm/discontig.c
> @@ -227,7 +227,7 @@ void __init setup_per_cpu_areas(void)
>  	 * CPUs are put into groups according to node.  Walk cpu_map
>  	 * and create new groups at node boundaries.
>  	 */
> -	prev_node = -1;
> +	prev_node = NUMA_NO_NODE;
>  	ai->nr_groups = 0;
>  	for (unit = 0; unit < nr_units; unit++) {
>  		cpu = cpu_map[unit];
> @@ -435,7 +435,7 @@ static void __init *memory_less_node_alloc(int nid, unsigned long pernodesize)
>  {
>  	void *ptr = NULL;
>  	u8 best = 0xff;
> -	int bestnode = -1, node, anynode = 0;
> +	int bestnode = NUMA_NO_NODE, node, anynode = 0;
>  
>  	for_each_online_node(node) {
>  		if (node_isset(node, memory_less_mask))
> @@ -447,7 +447,7 @@ static void __init *memory_less_node_alloc(int nid, unsigned long pernodesize)
>  		anynode = node;
>  	}
>  
> -	if (bestnode == -1)
> +	if (bestnode == NUMA_NO_NODE)
>  		bestnode = anynode;
>  
>  	ptr = memblock_alloc_try_nid(pernodesize, PERCPU_PAGE_SIZE,
> diff --git a/arch/ia64/sn/kernel/io_common.c b/arch/ia64/sn/kernel/io_common.c
> index 8df13d0..221ede3 100644
> --- a/arch/ia64/sn/kernel/io_common.c
> +++ b/arch/ia64/sn/kernel/io_common.c
> @@ -9,6 +9,7 @@
>  #include <linux/memblock.h>
>  #include <linux/export.h>
>  #include <linux/slab.h>
> +#include <linux/numa.h>
>  #include <asm/sn/types.h>
>  #include <asm/sn/addrs.h>
>  #include <asm/sn/sn_feature_sets.h>
> @@ -344,7 +345,7 @@ sn_common_bus_fixup(struct pci_bus *bus,
>  		printk(KERN_WARNING "on node %d but only %d nodes online."
>  		       "Association set to undetermined.\n",
>  		       controller->node, num_online_nodes());
> -		controller->node = -1;
> +		controller->node = NUMA_NO_NODE;
>  	}
>  }
>  

Are you sure? This does not look like a NUMA node.

> diff --git a/arch/powerpc/include/asm/pci-bridge.h b/arch/powerpc/include/asm/pci-bridge.h
> index 94d4490..97bf4b1 100644
> --- a/arch/powerpc/include/asm/pci-bridge.h
> +++ b/arch/powerpc/include/asm/pci-bridge.h
> @@ -10,6 +10,7 @@
>  #include <linux/pci.h>
>  #include <linux/list.h>
>  #include <linux/ioport.h>
> +#include <linux/numa.h>
>  
>  struct device_node;
>  
> @@ -264,7 +265,7 @@ extern int pcibios_map_io_space(struct pci_bus *bus);
>  #ifdef CONFIG_NUMA
>  #define PHB_SET_NODE(PHB, NODE)		((PHB)->node = (NODE))
>  #else
> -#define PHB_SET_NODE(PHB, NODE)		((PHB)->node = -1)
> +#define PHB_SET_NODE(PHB, NODE)		((PHB)->node = NUMA_NO_NODE)
>  #endif
>  
>  #endif	/* CONFIG_PPC64 */
> diff --git a/arch/powerpc/kernel/paca.c b/arch/powerpc/kernel/paca.c
> index 913bfca..b848012 100644
> --- a/arch/powerpc/kernel/paca.c
> +++ b/arch/powerpc/kernel/paca.c
> @@ -11,6 +11,7 @@
>  #include <linux/export.h>
>  #include <linux/memblock.h>
>  #include <linux/sched/task.h>
> +#include <linux/numa.h>
>  
>  #include <asm/lppaca.h>
>  #include <asm/paca.h>
> @@ -36,7 +37,7 @@ static void *__init alloc_paca_data(unsigned long size, unsigned long align,
>  	 * which will put its paca in the right place.
>  	 */
>  	if (cpu == boot_cpuid) {
> -		nid = -1;
> +		nid = NUMA_NO_NODE;
>  		memblock_set_bottom_up(true);
>  	} else {
>  		nid = early_cpu_to_node(cpu);
> diff --git a/arch/powerpc/kernel/pci-common.c b/arch/powerpc/kernel/pci-common.c
> index 88e4f69..4538e8d 100644
> --- a/arch/powerpc/kernel/pci-common.c
> +++ b/arch/powerpc/kernel/pci-common.c
> @@ -32,6 +32,7 @@
>  #include <linux/vmalloc.h>
>  #include <linux/slab.h>
>  #include <linux/vgaarb.h>
> +#include <linux/numa.h>
>  
>  #include <asm/processor.h>
>  #include <asm/io.h>
> @@ -132,7 +133,7 @@ struct pci_controller *pcibios_alloc_controller(struct device_node *dev)
>  		int nid = of_node_to_nid(dev);
>  
>  		if (nid < 0 || !node_online(nid))
> -			nid = -1;
> +			nid = NUMA_NO_NODE;
>  
>  		PHB_SET_NODE(phb, nid);
>  	}
> diff --git a/arch/powerpc/mm/numa.c b/arch/powerpc/mm/numa.c
> index ce28ae5..84ad8c9 100644
> --- a/arch/powerpc/mm/numa.c
> +++ b/arch/powerpc/mm/numa.c
> @@ -215,7 +215,7 @@ static void initialize_distance_lookup_table(int nid,
>   */
>  static int associativity_to_nid(const __be32 *associativity)
>  {
> -	int nid = -1;
> +	int nid = NUMA_NO_NODE;
>  
>  	if (min_common_depth == -1)
>  		goto out;
> @@ -225,7 +225,7 @@ static int associativity_to_nid(const __be32 *associativity)
>  
>  	/* POWER4 LPAR uses 0xffff as invalid node */
>  	if (nid == 0xffff || nid >= MAX_NUMNODES)
> -		nid = -1;
> +		nid = NUMA_NO_NODE;
>  
>  	if (nid > 0 &&
>  		of_read_number(associativity, 1) >= distance_ref_points_depth) {
> @@ -244,7 +244,7 @@ static int associativity_to_nid(const __be32 *associativity)
>   */
>  static int of_node_to_nid_single(struct device_node *device)
>  {
> -	int nid = -1;
> +	int nid = NUMA_NO_NODE;
>  	const __be32 *tmp;
>  
>  	tmp = of_get_associativity(device);
> @@ -256,7 +256,7 @@ static int of_node_to_nid_single(struct device_node *device)
>  /* Walk the device tree upwards, looking for an associativity id */
>  int of_node_to_nid(struct device_node *device)
>  {
> -	int nid = -1;
> +	int nid = NUMA_NO_NODE;
>  
>  	of_node_get(device);
>  	while (device) {
> @@ -454,7 +454,7 @@ static int of_drconf_to_nid_single(struct drmem_lmb *lmb)
>   */
>  static int numa_setup_cpu(unsigned long lcpu)
>  {
> -	int nid = -1;
> +	int nid = NUMA_NO_NODE;
>  	struct device_node *cpu;
>  
>  	/*
> @@ -930,7 +930,7 @@ static int hot_add_drconf_scn_to_nid(unsigned long scn_addr)
>  {
>  	struct drmem_lmb *lmb;
>  	unsigned long lmb_size;
> -	int nid = -1;
> +	int nid = NUMA_NO_NODE;
>  
>  	lmb_size = drmem_lmb_size();
>  
> @@ -960,7 +960,7 @@ static int hot_add_drconf_scn_to_nid(unsigned long scn_addr)
>  static int hot_add_node_scn_to_nid(unsigned long scn_addr)
>  {
>  	struct device_node *memory;
> -	int nid = -1;
> +	int nid = NUMA_NO_NODE;
>  
>  	for_each_node_by_type(memory, "memory") {
>  		unsigned long start, size;
> diff --git a/arch/powerpc/platforms/powernv/memtrace.c b/arch/powerpc/platforms/powernv/memtrace.c
> index 84d038e..248a38a 100644
> --- a/arch/powerpc/platforms/powernv/memtrace.c
> +++ b/arch/powerpc/platforms/powernv/memtrace.c
> @@ -20,6 +20,7 @@
>  #include <linux/slab.h>
>  #include <linux/memory.h>
>  #include <linux/memory_hotplug.h>
> +#include <linux/numa.h>
>  #include <asm/machdep.h>
>  #include <asm/debugfs.h>
>  
> @@ -223,7 +224,7 @@ static int memtrace_online(void)
>  		ent = &memtrace_array[i];
>  
>  		/* We have onlined this chunk previously */
> -		if (ent->nid == -1)
> +		if (ent->nid == NUMA_NO_NODE)
>  			continue;
>  
>  		/* Remove from io mappings */
> @@ -257,7 +258,7 @@ static int memtrace_online(void)
>  		 */
>  		debugfs_remove_recursive(ent->dir);
>  		pr_info("Added trace memory back to node %d\n", ent->nid);
> -		ent->size = ent->start = ent->nid = -1;
> +		ent->size = ent->start = ent->nid = NUMA_NO_NODE;
>  	}
>  	if (ret)
>  		return ret;
> diff --git a/arch/sparc/kernel/auxio_32.c b/arch/sparc/kernel/auxio_32.c
> index a32d588..276b4ec 100644
> --- a/arch/sparc/kernel/auxio_32.c
> +++ b/arch/sparc/kernel/auxio_32.c
> @@ -10,6 +10,7 @@
>  #include <linux/of.h>
>  #include <linux/of_device.h>
>  #include <linux/export.h>
> +#include <linux/numa.h>
>  
>  #include <asm/oplib.h>
>  #include <asm/io.h>
> @@ -120,7 +121,7 @@ void __init auxio_power_probe(void)
>  	node = prom_searchsiblings(node, "obio");
>  	node = prom_getchild(node);
>  	node = prom_searchsiblings(node, "power");
> -	if (node == 0 || (s32)node == -1)
> +	if (node == 0 || (s32)node == NUMA_NO_NODE)

This does not look like a NUMA node.

>  		return;
>  
>  	/* Map the power control register. */
> diff --git a/arch/sparc/kernel/pci_fire.c b/arch/sparc/kernel/pci_fire.c
> index be71ae0..0ca08d4 100644
> --- a/arch/sparc/kernel/pci_fire.c
> +++ b/arch/sparc/kernel/pci_fire.c
> @@ -11,6 +11,7 @@
>  #include <linux/export.h>
>  #include <linux/irq.h>
>  #include <linux/of_device.h>
> +#include <linux/numa.h>
>  
>  #include <asm/prom.h>
>  #include <asm/irq.h>
> @@ -416,7 +417,7 @@ static int pci_fire_pbm_init(struct pci_pbm_info *pbm,
>  	struct device_node *dp = op->dev.of_node;
>  	int err;
>  
> -	pbm->numa_node = -1;
> +	pbm->numa_node = NUMA_NO_NODE;
>  
>  	pbm->pci_ops = &sun4u_pci_ops;
>  	pbm->config_space_reg_bits = 12;
> diff --git a/arch/sparc/kernel/pci_schizo.c b/arch/sparc/kernel/pci_schizo.c
> index 934b97c..421aba0 100644
> --- a/arch/sparc/kernel/pci_schizo.c
> +++ b/arch/sparc/kernel/pci_schizo.c
> @@ -12,6 +12,7 @@
>  #include <linux/export.h>
>  #include <linux/interrupt.h>
>  #include <linux/of_device.h>
> +#include <linux/numa.h>
>  
>  #include <asm/iommu.h>
>  #include <asm/irq.h>
> @@ -1347,7 +1348,7 @@ static int schizo_pbm_init(struct pci_pbm_info *pbm,
>  	pbm->next = pci_pbm_root;
>  	pci_pbm_root = pbm;
>  
> -	pbm->numa_node = -1;
> +	pbm->numa_node = NUMA_NO_NODE;
>  
>  	pbm->pci_ops = &sun4u_pci_ops;
>  	pbm->config_space_reg_bits = 8;
> diff --git a/arch/sparc/kernel/pcic.c b/arch/sparc/kernel/pcic.c
> index ee4c9a9..190f934 100644
> --- a/arch/sparc/kernel/pcic.c
> +++ b/arch/sparc/kernel/pcic.c
> @@ -17,6 +17,7 @@
>  #include <linux/mm.h>
>  #include <linux/slab.h>
>  #include <linux/jiffies.h>
> +#include <linux/numa.h>
>  
>  #include <asm/swift.h> /* for cache flushing. */
>  #include <asm/io.h>
> @@ -476,7 +477,7 @@ static void pcic_map_pci_device(struct linux_pcic *pcic,
>  	unsigned long flags;
>  	int j;
>  
> -	if (node == 0 || node == -1) {
> +	if (node == 0 || node == NUMA_NO_NODE) {

I think this is a DT phandle, not a NUMA node.

>  		strcpy(namebuf, "???");
>  	} else {
>  		prom_getstring(node, "name", namebuf, 63); namebuf[63] = 0;
> @@ -535,7 +536,7 @@ pcic_fill_irq(struct linux_pcic *pcic, struct pci_dev *dev, int node)
>  	int i, ivec;
>  	char namebuf[64];
>  
> -	if (node == 0 || node == -1) {
> +	if (node == 0 || node == NUMA_NO_NODE) {

Ditto.

>  		strcpy(namebuf, "???");
>  	} else {
>  		prom_getstring(node, "name", namebuf, sizeof(namebuf));
> @@ -625,7 +626,7 @@ void pcibios_fixup_bus(struct pci_bus *bus)
>  	list_for_each_entry(dev, &bus->devices, bus_list) {
>  		node = pdev_to_pnode(&pcic->pbm, dev);
>  		if(node == 0)
> -			node = -1;
> +			node = NUMA_NO_NODE;

Ditto.

>  
>  		/* cookies */
>  		pcp = pci_devcookie_alloc();
> diff --git a/arch/sparc/kernel/psycho_common.c b/arch/sparc/kernel/psycho_common.c
> index 81aa91e..e90bcb6 100644
> --- a/arch/sparc/kernel/psycho_common.c
> +++ b/arch/sparc/kernel/psycho_common.c
> @@ -5,6 +5,7 @@
>   */
>  #include <linux/kernel.h>
>  #include <linux/interrupt.h>
> +#include <linux/numa.h>
>  
>  #include <asm/upa.h>
>  
> @@ -454,7 +455,7 @@ void psycho_pbm_init_common(struct pci_pbm_info *pbm, struct platform_device *op
>  	struct device_node *dp = op->dev.of_node;
>  
>  	pbm->name = dp->full_name;
> -	pbm->numa_node = -1;
> +	pbm->numa_node = NUMA_NO_NODE;
>  	pbm->chip_type = chip_type;
>  	pbm->chip_version = of_getintprop_default(dp, "version#", 0);
>  	pbm->chip_revision = of_getintprop_default(dp, "module-revision#", 0);
> diff --git a/arch/sparc/kernel/sbus.c b/arch/sparc/kernel/sbus.c
> index c133dfc..e6fd924 100644
> --- a/arch/sparc/kernel/sbus.c
> +++ b/arch/sparc/kernel/sbus.c
> @@ -15,6 +15,7 @@
>  #include <linux/interrupt.h>
>  #include <linux/of.h>
>  #include <linux/of_device.h>
> +#include <linux/numa.h>
>  
>  #include <asm/page.h>
>  #include <asm/io.h>
> @@ -561,7 +562,7 @@ static void __init sbus_iommu_init(struct platform_device *op)
>  
>  	op->dev.archdata.iommu = iommu;
>  	op->dev.archdata.stc = strbuf;
> -	op->dev.archdata.numa_node = -1;
> +	op->dev.archdata.numa_node = NUMA_NO_NODE;
>  
>  	reg_base = regs + SYSIO_IOMMUREG_BASE;
>  	iommu->iommu_control = reg_base + IOMMU_CONTROL;
> diff --git a/arch/sparc/mm/init_64.c b/arch/sparc/mm/init_64.c
> index 3c8aac2..cb1bed1 100644
> --- a/arch/sparc/mm/init_64.c
> +++ b/arch/sparc/mm/init_64.c
> @@ -976,13 +976,13 @@ static u64 __init memblock_nid_range_sun4u(u64 start, u64 end, int *nid)
>  {
>  	int prev_nid, new_nid;
>  
> -	prev_nid = -1;
> +	prev_nid = NUMA_NO_NODE;
>  	for ( ; start < end; start += PAGE_SIZE) {
>  		for (new_nid = 0; new_nid < num_node_masks; new_nid++) {
>  			struct node_mem_mask *p = &node_masks[new_nid];
>  
>  			if ((start & p->mask) == p->match) {
> -				if (prev_nid == -1)
> +				if (prev_nid == NUMA_NO_NODE)
>  					prev_nid = new_nid;
>  				break;
>  			}
> @@ -1208,7 +1208,7 @@ int of_node_to_nid(struct device_node *dp)
>  	md = mdesc_grab();
>  
>  	count = 0;
> -	nid = -1;
> +	nid = NUMA_NO_NODE;
>  	mdesc_for_each_node_by_name(md, grp, "group") {
>  		if (!scan_arcs_for_cfg_handle(md, grp, cfg_handle)) {
>  			nid = count;
> diff --git a/arch/sparc/prom/init_32.c b/arch/sparc/prom/init_32.c
> index d204701..7c0750a 100644
> --- a/arch/sparc/prom/init_32.c
> +++ b/arch/sparc/prom/init_32.c
> @@ -10,6 +10,7 @@
>  #include <linux/kernel.h>
>  #include <linux/init.h>
>  #include <linux/module.h>
> +#include <linux/numa.h>
>  
>  #include <asm/openprom.h>
>  #include <asm/oplib.h>
> @@ -58,7 +59,7 @@ void __init prom_init(struct linux_romvec *rp)
>  	prom_nodeops = romvec->pv_nodeops;
>  
>  	prom_root_node = prom_getsibling(0);
> -	if ((prom_root_node == 0) || ((s32)prom_root_node == -1))
> +	if ((prom_root_node == 0) || ((s32)prom_root_node == NUMA_NO_NODE))

This looks like a phandle too.

>  		prom_halt();
>  
>  	if((((unsigned long) prom_nodeops) == 0) || 
> diff --git a/arch/sparc/prom/init_64.c b/arch/sparc/prom/init_64.c
> index 103aa91..196133d 100644
> --- a/arch/sparc/prom/init_64.c
> +++ b/arch/sparc/prom/init_64.c
> @@ -11,6 +11,7 @@
>  #include <linux/init.h>
>  #include <linux/string.h>
>  #include <linux/ctype.h>
> +#include <linux/numa.h>
>  
>  #include <asm/openprom.h>
>  #include <asm/oplib.h>
> @@ -36,13 +37,13 @@ void __init prom_init(void *cif_handler)
>  	prom_cif_init(cif_handler);
>  
>  	prom_chosen_node = prom_finddevice(prom_chosen_path);
> -	if (!prom_chosen_node || (s32)prom_chosen_node == -1)
> +	if (!prom_chosen_node || (s32)prom_chosen_node == NUMA_NO_NODE)

Ditto.

>  		prom_halt();
>  
>  	prom_stdout = prom_getint(prom_chosen_node, "stdout");
>  
>  	node = prom_finddevice("/openprom");
> -	if (!node || (s32)node == -1)
> +	if (!node || (s32)node == NUMA_NO_NODE)

Ditto...

>  		prom_halt();
>  
>  	prom_getstring(node, "version", prom_version, sizeof(prom_version));
> diff --git a/arch/sparc/prom/tree_32.c b/arch/sparc/prom/tree_32.c
> index 0fed893..36b9be5 100644
> --- a/arch/sparc/prom/tree_32.c
> +++ b/arch/sparc/prom/tree_32.c
> @@ -12,6 +12,7 @@
>  #include <linux/sched.h>
>  #include <linux/ctype.h>
>  #include <linux/module.h>
> +#include <linux/numa.h>
>  
>  #include <asm/openprom.h>
>  #include <asm/oplib.h>
> @@ -41,11 +42,11 @@ phandle prom_getchild(phandle node)
>  {
>  	phandle cnode;
>  
> -	if ((s32)node == -1)
> +	if ((s32)node == NUMA_NO_NODE)

Ditto...

>  		return 0;
>  
>  	cnode = __prom_getchild(node);
> -	if (cnode == 0 || (s32)cnode == -1)
> +	if (cnode == 0 || (s32)cnode == NUMA_NO_NODE)
>  		return 0;
>  
>  	return cnode;
> @@ -73,11 +74,11 @@ phandle prom_getsibling(phandle node)
>  {
>  	phandle sibnode;
>  
> -	if ((s32)node == -1)
> +	if ((s32)node == NUMA_NO_NODE)

Ditto...

>  		return 0;
>  
>  	sibnode = __prom_getsibling(node);
> -	if (sibnode == 0 || (s32)sibnode == -1)
> +	if (sibnode == 0 || (s32)sibnode == NUMA_NO_NODE)
>  		return 0;
>  
>  	return sibnode;
> @@ -220,7 +221,7 @@ static char *__prom_nextprop(phandle node, char * oprop)
>   */
>  char *prom_nextprop(phandle node, char *oprop, char *buffer)
>  {
> -	if (node == 0 || (s32)node == -1)
> +	if (node == 0 || (s32)node == NUMA_NO_NODE)

Ditto...

>  		return "";
>  
>  	return __prom_nextprop(node, oprop);
> @@ -304,7 +305,7 @@ phandle prom_inst2pkg(int inst)
>  	node = (*romvec->pv_v2devops.v2_inst2pkg)(inst);
>  	restore_current();
>  	spin_unlock_irqrestore(&prom_lock, flags);
> -	if ((s32)node == -1)
> +	if ((s32)node == NUMA_NO_NODE)

Ditto...

>  		return 0;
>  	return node;
>  }
> diff --git a/arch/sparc/prom/tree_64.c b/arch/sparc/prom/tree_64.c
> index 989e799..4634620 100644
> --- a/arch/sparc/prom/tree_64.c
> +++ b/arch/sparc/prom/tree_64.c
> @@ -12,6 +12,7 @@
>  #include <linux/kernel.h>
>  #include <linux/sched.h>
>  #include <linux/module.h>
> +#include <linux/numa.h>
>  
>  #include <asm/openprom.h>
>  #include <asm/oplib.h>
> @@ -44,10 +45,10 @@ phandle prom_getchild(phandle node)
>  {
>  	phandle cnode;
>  
> -	if ((s32)node == -1)
> +	if ((s32)node == NUMA_NO_NODE)

A DT node.

>  		return 0;
>  	cnode = __prom_getchild(node);
> -	if ((s32)cnode == -1)
> +	if ((s32)cnode == NUMA_NO_NODE)

A DT node.

>  		return 0;
>  	return cnode;
>  }
> @@ -57,10 +58,10 @@ inline phandle prom_getparent(phandle node)
>  {
>  	phandle cnode;
>  
> -	if ((s32)node == -1)
> +	if ((s32)node == NUMA_NO_NODE)

Ditto...

>  		return 0;
>  	cnode = prom_node_to_node("parent", node);
> -	if ((s32)cnode == -1)
> +	if ((s32)cnode == NUMA_NO_NODE)
>  		return 0;
>  	return cnode;
>  }
> @@ -77,10 +78,10 @@ phandle prom_getsibling(phandle node)
>  {
>  	phandle sibnode;
>  
> -	if ((s32)node == -1)
> +	if ((s32)node == NUMA_NO_NODE)

Ditto...

>  		return 0;
>  	sibnode = __prom_getsibling(node);
> -	if ((s32)sibnode == -1)
> +	if ((s32)sibnode == NUMA_NO_NODE)

Ditto...

>  		return 0;
>  
>  	return sibnode;
> @@ -241,7 +242,7 @@ char *prom_firstprop(phandle node, char *buffer)
>  	unsigned long args[7];
>  
>  	*buffer = 0;
> -	if ((s32)node == -1)
> +	if ((s32)node == NUMA_NO_NODE)

Sigh...

>  		return buffer;
>  
>  	args[0] = (unsigned long) prom_nextprop_name;
> @@ -267,7 +268,7 @@ char *prom_nextprop(phandle node, const char *oprop, char *buffer)
>  	unsigned long args[7];
>  	char buf[32];
>  
> -	if ((s32)node == -1) {
> +	if ((s32)node == NUMA_NO_NODE) {

Ditto...

>  		*buffer = 0;
>  		return buffer;
>  	}
> @@ -370,7 +371,7 @@ inline phandle prom_inst2pkg(int inst)
>  	p1275_cmd_direct(args);
>  
>  	node = (int) args[4];
> -	if ((s32)node == -1)
> +	if ((s32)node == NUMA_NO_NODE)

Ditto...

>  		return 0;
>  	return node;
>  }
> diff --git a/arch/x86/include/asm/pci.h b/arch/x86/include/asm/pci.h
> index 6629636..e662f98 100644
> --- a/arch/x86/include/asm/pci.h
> +++ b/arch/x86/include/asm/pci.h
> @@ -7,6 +7,7 @@
>  #include <linux/slab.h>
>  #include <linux/string.h>
>  #include <linux/scatterlist.h>
> +#include <linux/numa.h>
>  #include <asm/io.h>
>  #include <asm/pat.h>
>  #include <asm/x86_init.h>
> @@ -141,7 +142,7 @@ cpumask_of_pcibus(const struct pci_bus *bus)
>  	int node;
>  
>  	node = __pcibus_to_node(bus);
> -	return (node == -1) ? cpu_online_mask :
> +	return (node == NUMA_NO_NODE) ? cpu_online_mask :
>  			      cpumask_of_node(node);
>  }
>  #endif
> diff --git a/arch/x86/kernel/apic/x2apic_uv_x.c b/arch/x86/kernel/apic/x2apic_uv_x.c
> index 391f358..1ff658f 100644
> --- a/arch/x86/kernel/apic/x2apic_uv_x.c
> +++ b/arch/x86/kernel/apic/x2apic_uv_x.c
> @@ -27,6 +27,7 @@
>  #include <linux/crash_dump.h>
>  #include <linux/reboot.h>
>  #include <linux/memory.h>
> +#include <linux/numa.h>
>  
>  #include <asm/uv/uv_mmrs.h>
>  #include <asm/uv/uv_hub.h>
> @@ -1390,7 +1391,7 @@ static void __init build_socket_tables(void)
>  	}
>  
>  	/* Set socket -> node values: */
> -	lnid = -1;
> +	lnid = NUMA_NO_NODE;
>  	for_each_present_cpu(cpu) {
>  		int nid = cpu_to_node(cpu);
>  		int apicid, sockid;
> @@ -1521,7 +1522,7 @@ static void __init uv_system_init_hub(void)
>  			new_hub->pnode = 0xffff;
>  
>  		new_hub->numa_blade_id = uv_node_to_blade_id(nodeid);
> -		new_hub->memory_nid = -1;
> +		new_hub->memory_nid = NUMA_NO_NODE;
>  		new_hub->nr_possible_cpus = 0;
>  		new_hub->nr_online_cpus = 0;
>  	}
> @@ -1538,7 +1539,7 @@ static void __init uv_system_init_hub(void)
>  
>  		uv_cpu_info_per(cpu)->p_uv_hub_info = uv_hub_info_list(nodeid);
>  		uv_cpu_info_per(cpu)->blade_cpu_id = uv_cpu_hub_info(cpu)->nr_possible_cpus++;
> -		if (uv_cpu_hub_info(cpu)->memory_nid == -1)
> +		if (uv_cpu_hub_info(cpu)->memory_nid == NUMA_NO_NODE)
>  			uv_cpu_hub_info(cpu)->memory_nid = cpu_to_node(cpu);
>  
>  		/* Init memoryless node: */
> diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c
> index a9134d1..0e1ff8f 100644
> --- a/arch/x86/kernel/smpboot.c
> +++ b/arch/x86/kernel/smpboot.c
> @@ -56,6 +56,7 @@
>  #include <linux/stackprotector.h>
>  #include <linux/gfp.h>
>  #include <linux/cpuidle.h>
> +#include <linux/numa.h>
>  
>  #include <asm/acpi.h>
>  #include <asm/desc.h>
> @@ -841,7 +842,7 @@ wakeup_secondary_cpu_via_init(int phys_apicid, unsigned long start_eip)
>  /* reduce the number of lines printed when booting a large cpu count system */
>  static void announce_cpu(int cpu, int apicid)
>  {
> -	static int current_node = -1;
> +	static int current_node = NUMA_NO_NODE;
>  	int node = early_cpu_to_node(cpu);
>  	static int width, node_width;
>  
> diff --git a/arch/x86/platform/olpc/olpc_dt.c b/arch/x86/platform/olpc/olpc_dt.c
> index 24d2175..7976ec2 100644
> --- a/arch/x86/platform/olpc/olpc_dt.c
> +++ b/arch/x86/platform/olpc/olpc_dt.c
> @@ -21,6 +21,7 @@
>  #include <linux/of.h>
>  #include <linux/of_platform.h>
>  #include <linux/of_pdt.h>
> +#include <linux/numa.h>
>  #include <asm/olpc.h>
>  #include <asm/olpc_ofw.h>
>  
> @@ -29,10 +30,10 @@ static phandle __init olpc_dt_getsibling(phandle node)
>  	const void *args[] = { (void *)node };
>  	void *res[] = { &node };
>  
> -	if ((s32)node == -1)
> +	if ((s32)node == NUMA_NO_NODE)

A DT node.

>  		return 0;
>  
> -	if (olpc_ofw("peer", args, res) || (s32)node == -1)
> +	if (olpc_ofw("peer", args, res) || (s32)node == NUMA_NO_NODE)

A DT node.

>  		return 0;
>  
>  	return node;
> @@ -43,10 +44,10 @@ static phandle __init olpc_dt_getchild(phandle node)
>  	const void *args[] = { (void *)node };
>  	void *res[] = { &node };
>  
> -	if ((s32)node == -1)
> +	if ((s32)node == NUMA_NO_NODE)

A DT node.

>  		return 0;
>  
> -	if (olpc_ofw("child", args, res) || (s32)node == -1) {
> +	if (olpc_ofw("child", args, res) || (s32)node == NUMA_NO_NODE) {

A DT node.

>  		pr_err("PROM: %s: fetching child failed!\n", __func__);
>  		return 0;
>  	}
> @@ -60,7 +61,7 @@ static int __init olpc_dt_getproplen(phandle node, const char *prop)
>  	int len;
>  	void *res[] = { &len };
>  
> -	if ((s32)node == -1)
> +	if ((s32)node == NUMA_NO_NODE)

A DT node.

>  		return -1;
>  
>  	if (olpc_ofw("getproplen", args, res)) {
> @@ -100,7 +101,7 @@ static int __init olpc_dt_nextprop(phandle node, char *prev, char *buf)
>  
>  	buf[0] = '\0';
>  
> -	if ((s32)node == -1)
> +	if ((s32)node == NUMA_NO_NODE)

A DT node.

>  		return -1;
>  
>  	if (olpc_ofw("nextprop", args, res) || success != 1)
> @@ -115,7 +116,7 @@ static int __init olpc_dt_pkg2path(phandle node, char *buf,
>  	const void *args[] = { (void *)node, buf, (void *)buflen };
>  	void *res[] = { len };
>  
> -	if ((s32)node == -1)
> +	if ((s32)node == NUMA_NO_NODE)

A DT node.

>  		return -1;
>  
>  	if (olpc_ofw("package-to-path", args, res) || *len < 1)
> @@ -176,7 +177,7 @@ static phandle __init olpc_dt_finddevice(const char *path)
>  		return 0;
>  	}
>  
> -	if ((s32) node == -1)
> +	if ((s32) node == NUMA_NO_NODE)

A DT node.

>  		return 0;
>  
>  	return node;
> diff --git a/drivers/block/mtip32xx/mtip32xx.c b/drivers/block/mtip32xx/mtip32xx.c
> index a7daa8a..bbe3871 100644
> --- a/drivers/block/mtip32xx/mtip32xx.c
> +++ b/drivers/block/mtip32xx/mtip32xx.c
> @@ -40,6 +40,7 @@
>  #include <linux/export.h>
>  #include <linux/debugfs.h>
>  #include <linux/prefetch.h>
> +#include <linux/numa.h>
>  #include "mtip32xx.h"
>  
>  #define HW_CMD_SLOT_SZ		(MTIP_MAX_COMMAND_SLOTS * 32)
> @@ -4084,9 +4085,9 @@ static int get_least_used_cpu_on_node(int node)
>  /* Helper for selecting a node in round robin mode */
>  static inline int mtip_get_next_rr_node(void)
>  {
> -	static int next_node = -1;
> +	static int next_node = NUMA_NO_NODE;
>  
> -	if (next_node == -1) {
> +	if (next_node == NUMA_NO_NODE) {
>  		next_node = first_online_node;
>  		return next_node;
>  	}
> diff --git a/drivers/dma/dmaengine.c b/drivers/dma/dmaengine.c
> index f1a441ab..3a11b10 100644
> --- a/drivers/dma/dmaengine.c
> +++ b/drivers/dma/dmaengine.c
> @@ -63,6 +63,7 @@
>  #include <linux/acpi_dma.h>
>  #include <linux/of_dma.h>
>  #include <linux/mempool.h>
> +#include <linux/numa.h>
>  
>  static DEFINE_MUTEX(dma_list_mutex);
>  static DEFINE_IDA(dma_ida);
> @@ -386,7 +387,8 @@ EXPORT_SYMBOL(dma_issue_pending_all);
>  static bool dma_chan_is_local(struct dma_chan *chan, int cpu)
>  {
>  	int node = dev_to_node(chan->device->dev);
> -	return node == -1 || cpumask_test_cpu(cpu, cpumask_of_node(node));
> +	return node == NUMA_NO_NODE ||
> +		cpumask_test_cpu(cpu, cpumask_of_node(node));
>  }
>  
>  /**
> diff --git a/drivers/infiniband/hw/hfi1/affinity.c b/drivers/infiniband/hw/hfi1/affinity.c
> index 2baf38c..4fe662c 100644
> --- a/drivers/infiniband/hw/hfi1/affinity.c
> +++ b/drivers/infiniband/hw/hfi1/affinity.c
> @@ -48,6 +48,7 @@
>  #include <linux/cpumask.h>
>  #include <linux/module.h>
>  #include <linux/interrupt.h>
> +#include <linux/numa.h>
>  
>  #include "hfi.h"
>  #include "affinity.h"
> @@ -777,7 +778,7 @@ void hfi1_dev_affinity_clean_up(struct hfi1_devdata *dd)
>  	_dev_comp_vect_cpu_mask_clean_up(dd, entry);
>  unlock:
>  	mutex_unlock(&node_affinity.lock);
> -	dd->node = -1;
> +	dd->node = NUMA_NO_NODE;
>  }
>  
>  /*
> diff --git a/drivers/infiniband/hw/hfi1/init.c b/drivers/infiniband/hw/hfi1/init.c
> index 0904490..c25c402 100644
> --- a/drivers/infiniband/hw/hfi1/init.c
> +++ b/drivers/infiniband/hw/hfi1/init.c
> @@ -54,6 +54,7 @@
>  #include <linux/printk.h>
>  #include <linux/hrtimer.h>
>  #include <linux/bitmap.h>
> +#include <linux/numa.h>
>  #include <rdma/rdma_vt.h>
>  
>  #include "hfi.h"
> @@ -1303,7 +1304,7 @@ static struct hfi1_devdata *hfi1_alloc_devdata(struct pci_dev *pdev,
>  		dd->unit = ret;
>  		list_add(&dd->list, &hfi1_dev_list);
>  	}
> -	dd->node = -1;
> +	dd->node = NUMA_NO_NODE;
>  
>  	spin_unlock_irqrestore(&hfi1_devs_lock, flags);
>  	idr_preload_end();
> diff --git a/drivers/iommu/dmar.c b/drivers/iommu/dmar.c
> index d9c748b..01b967a 100644
> --- a/drivers/iommu/dmar.c
> +++ b/drivers/iommu/dmar.c
> @@ -39,6 +39,7 @@
>  #include <linux/dmi.h>
>  #include <linux/slab.h>
>  #include <linux/iommu.h>
> +#include <linux/numa.h>
>  #include <asm/irq_remapping.h>
>  #include <asm/iommu_table.h>
>  
> @@ -477,7 +478,7 @@ static int dmar_parse_one_rhsa(struct acpi_dmar_header *header, void *arg)
>  			int node = acpi_map_pxm_to_node(rhsa->proximity_domain);
>  
>  			if (!node_online(node))
> -				node = -1;
> +				node = NUMA_NO_NODE;
>  			drhd->iommu->node = node;
>  			return 0;
>  		}
> @@ -1062,7 +1063,7 @@ static int alloc_iommu(struct dmar_drhd_unit *drhd)
>  	iommu->msagaw = msagaw;
>  	iommu->segment = drhd->segment;
>  
> -	iommu->node = -1;
> +	iommu->node = NUMA_NO_NODE;
>  
>  	ver = readl(iommu->reg + DMAR_VER_REG);
>  	pr_info("%s: reg_base_addr %llx ver %d:%d cap %llx ecap %llx\n",
> diff --git a/drivers/iommu/intel-iommu.c b/drivers/iommu/intel-iommu.c
> index 41a4b88..9ca9794 100644
> --- a/drivers/iommu/intel-iommu.c
> +++ b/drivers/iommu/intel-iommu.c
> @@ -47,6 +47,7 @@
>  #include <linux/dma-contiguous.h>
>  #include <linux/dma-direct.h>
>  #include <linux/crash_dump.h>
> +#include <linux/numa.h>
>  #include <asm/irq_remapping.h>
>  #include <asm/cacheflush.h>
>  #include <asm/iommu.h>
> @@ -1772,7 +1773,7 @@ static struct dmar_domain *alloc_domain(int flags)
>  		return NULL;
>  
>  	memset(domain, 0, sizeof(*domain));
> -	domain->nid = -1;
> +	domain->nid = NUMA_NO_NODE;
>  	domain->flags = flags;
>  	domain->has_iotlb_device = false;
>  	INIT_LIST_HEAD(&domain->devices);
> diff --git a/drivers/misc/sgi-xp/xpc_uv.c b/drivers/misc/sgi-xp/xpc_uv.c
> index 0441abe..9e443df 100644
> --- a/drivers/misc/sgi-xp/xpc_uv.c
> +++ b/drivers/misc/sgi-xp/xpc_uv.c
> @@ -22,6 +22,7 @@
>  #include <linux/module.h>
>  #include <linux/err.h>
>  #include <linux/slab.h>
> +#include <linux/numa.h>
>  #include <asm/uv/uv_hub.h>
>  #if defined CONFIG_X86_64
>  #include <asm/uv/bios.h>
> @@ -61,7 +62,7 @@ static struct xpc_heartbeat_uv *xpc_heartbeat_uv;
>  					 XPC_NOTIFY_MSG_SIZE_UV)
>  #define XPC_NOTIFY_IRQ_NAME		"xpc_notify"
>  
> -static int xpc_mq_node = -1;
> +static int xpc_mq_node = NUMA_NO_NODE;
>  
>  static struct xpc_gru_mq_uv *xpc_activate_mq_uv;
>  static struct xpc_gru_mq_uv *xpc_notify_mq_uv;
> diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
> index 113b38e..e33928c 100644
> --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
> +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
> @@ -27,6 +27,7 @@
>  #include <linux/bpf.h>
>  #include <linux/bpf_trace.h>
>  #include <linux/atomic.h>
> +#include <linux/numa.h>
>  #include <scsi/fc/fc_fcoe.h>
>  #include <net/udp_tunnel.h>
>  #include <net/pkt_cls.h>
> @@ -6414,7 +6415,7 @@ int ixgbe_setup_tx_resources(struct ixgbe_ring *tx_ring)
>  {
>  	struct device *dev = tx_ring->dev;
>  	int orig_node = dev_to_node(dev);
> -	int ring_node = -1;
> +	int ring_node = NUMA_NO_NODE;
>  	int size;
>  
>  	size = sizeof(struct ixgbe_tx_buffer) * tx_ring->count;
> @@ -6508,7 +6509,7 @@ int ixgbe_setup_rx_resources(struct ixgbe_adapter *adapter,
>  {
>  	struct device *dev = rx_ring->dev;
>  	int orig_node = dev_to_node(dev);
> -	int ring_node = -1;
> +	int ring_node = NUMA_NO_NODE;
>  	int size;
>  
>  	size = sizeof(struct ixgbe_rx_buffer) * rx_ring->count;
> diff --git a/include/linux/device.h b/include/linux/device.h
> index 1b25c7a..4921a61 100644
> --- a/include/linux/device.h
> +++ b/include/linux/device.h
> @@ -1085,7 +1085,7 @@ static inline void set_dev_node(struct device *dev, int node)
>  #else
>  static inline int dev_to_node(struct device *dev)
>  {
> -	return -1;
> +	return NUMA_NO_NODE;
>  }
>  static inline void set_dev_node(struct device *dev, int node)
>  {
> diff --git a/init/init_task.c b/init/init_task.c
> index 5aebe3b..26131e7 100644
> --- a/init/init_task.c
> +++ b/init/init_task.c
> @@ -10,6 +10,7 @@
>  #include <linux/fs.h>
>  #include <linux/mm.h>
>  #include <linux/audit.h>
> +#include <linux/numa.h>
>  
>  #include <asm/pgtable.h>
>  #include <linux/uaccess.h>
> @@ -154,7 +155,7 @@ struct task_struct init_task
>  	.vtime.state	= VTIME_SYS,
>  #endif
>  #ifdef CONFIG_NUMA_BALANCING
> -	.numa_preferred_nid = -1,
> +	.numa_preferred_nid = NUMA_NO_NODE,
>  	.numa_group	= NULL,
>  	.numa_faults	= NULL,
>  #endif
> diff --git a/kernel/kthread.c b/kernel/kthread.c
> index 087d18d..ebebbcf 100644
> --- a/kernel/kthread.c
> +++ b/kernel/kthread.c
> @@ -20,6 +20,7 @@
>  #include <linux/freezer.h>
>  #include <linux/ptrace.h>
>  #include <linux/uaccess.h>
> +#include <linux/numa.h>
>  #include <trace/events/sched.h>
>  
>  static DEFINE_SPINLOCK(kthread_create_lock);
> @@ -675,7 +676,7 @@ __kthread_create_worker(int cpu, unsigned int flags,
>  {
>  	struct kthread_worker *worker;
>  	struct task_struct *task;
> -	int node = -1;
> +	int node = NUMA_NO_NODE;
>  
>  	worker = kzalloc(sizeof(*worker), GFP_KERNEL);
>  	if (!worker)
> diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
> index ac855b2..2ef0db2 100644
> --- a/kernel/sched/fair.c
> +++ b/kernel/sched/fair.c
> @@ -1161,7 +1161,7 @@ void init_numa_balancing(unsigned long clone_flags, struct task_struct *p)
>  
>  	/* New address space, reset the preferred nid */
>  	if (!(clone_flags & CLONE_VM)) {
> -		p->numa_preferred_nid = -1;
> +		p->numa_preferred_nid = NUMA_NO_NODE;
>  		return;
>  	}
>  
> @@ -1181,13 +1181,13 @@ void init_numa_balancing(unsigned long clone_flags, struct task_struct *p)
>  
>  static void account_numa_enqueue(struct rq *rq, struct task_struct *p)
>  {
> -	rq->nr_numa_running += (p->numa_preferred_nid != -1);
> +	rq->nr_numa_running += (p->numa_preferred_nid != NUMA_NO_NODE);
>  	rq->nr_preferred_running += (p->numa_preferred_nid == task_node(p));
>  }
>  
>  static void account_numa_dequeue(struct rq *rq, struct task_struct *p)
>  {
> -	rq->nr_numa_running -= (p->numa_preferred_nid != -1);
> +	rq->nr_numa_running -= (p->numa_preferred_nid != NUMA_NO_NODE);
>  	rq->nr_preferred_running -= (p->numa_preferred_nid == task_node(p));
>  }
>  
> @@ -1401,7 +1401,7 @@ bool should_numa_migrate_memory(struct task_struct *p, struct page * page,
>  	 * two full passes of the "multi-stage node selection" test that is
>  	 * executed below.
>  	 */
> -	if ((p->numa_preferred_nid == -1 || p->numa_scan_seq <= 4) &&
> +	if ((p->numa_preferred_nid == NUMA_NO_NODE || p->numa_scan_seq <= 4) &&
>  	    (cpupid_pid_unset(last_cpupid) || cpupid_match_pid(p, last_cpupid)))
>  		return true;
>  
> @@ -1849,7 +1849,7 @@ static void numa_migrate_preferred(struct task_struct *p)
>  	unsigned long interval = HZ;
>  
>  	/* This task has no NUMA fault statistics yet */
> -	if (unlikely(p->numa_preferred_nid == -1 || !p->numa_faults))
> +	if (unlikely(p->numa_preferred_nid == NUMA_NO_NODE || !p->numa_faults))
>  		return;
>  
>  	/* Periodically retry migrating the task to the preferred node */
> @@ -2096,7 +2096,7 @@ static int preferred_group_nid(struct task_struct *p, int nid)
>  
>  static void task_numa_placement(struct task_struct *p)
>  {
> -	int seq, nid, max_nid = -1;
> +	int seq, nid, max_nid = NUMA_NO_NODE;
>  	unsigned long max_faults = 0;
>  	unsigned long fault_types[2] = { 0, 0 };
>  	unsigned long total_faults;
> @@ -2639,7 +2639,8 @@ static void update_scan_period(struct task_struct *p, int new_cpu)
>  		 * the preferred node.
>  		 */
>  		if (dst_nid == p->numa_preferred_nid ||
> -		    (p->numa_preferred_nid != -1 && src_nid != p->numa_preferred_nid))
> +		    (p->numa_preferred_nid != NUMA_NO_NODE &&
> +			src_nid != p->numa_preferred_nid))
>  			return;
>  	}
>  
> diff --git a/lib/cpumask.c b/lib/cpumask.c
> index 8d666ab..087a3e9 100644
> --- a/lib/cpumask.c
> +++ b/lib/cpumask.c
> @@ -5,6 +5,7 @@
>  #include <linux/cpumask.h>
>  #include <linux/export.h>
>  #include <linux/memblock.h>
> +#include <linux/numa.h>
>  
>  /**
>   * cpumask_next - get the next cpu in a cpumask
> @@ -206,7 +207,7 @@ unsigned int cpumask_local_spread(unsigned int i, int node)
>  	/* Wrap: we always want a cpu. */
>  	i %= num_online_cpus();
>  
> -	if (node == -1) {
> +	if (node == NUMA_NO_NODE) {
>  		for_each_cpu(cpu, cpu_online_mask)
>  			if (i-- == 0)
>  				return cpu;
> diff --git a/mm/huge_memory.c b/mm/huge_memory.c
> index 55478ab..84bd7bf 100644
> --- a/mm/huge_memory.c
> +++ b/mm/huge_memory.c
> @@ -33,6 +33,7 @@
>  #include <linux/page_idle.h>
>  #include <linux/shmem_fs.h>
>  #include <linux/oom.h>
> +#include <linux/numa.h>
>  
>  #include <asm/tlb.h>
>  #include <asm/pgalloc.h>
> @@ -1480,7 +1481,7 @@ vm_fault_t do_huge_pmd_numa_page(struct vm_fault *vmf, pmd_t pmd)
>  	struct anon_vma *anon_vma = NULL;
>  	struct page *page;
>  	unsigned long haddr = vmf->address & HPAGE_PMD_MASK;
> -	int page_nid = -1, this_nid = numa_node_id();
> +	int page_nid = NUMA_NO_NODE, this_nid = numa_node_id();
>  	int target_nid, last_cpupid = -1;
>  	bool page_locked;
>  	bool migrated = false;
> @@ -1526,7 +1527,7 @@ vm_fault_t do_huge_pmd_numa_page(struct vm_fault *vmf, pmd_t pmd)
>  	 */
>  	page_locked = trylock_page(page);
>  	target_nid = mpol_misplaced(page, vma, haddr);
> -	if (target_nid == -1) {
> +	if (target_nid == NUMA_NO_NODE) {
>  		/* If the page was locked, there are no parallel migrations */
>  		if (page_locked)
>  			goto clear_pmdnuma;
> @@ -1534,7 +1535,7 @@ vm_fault_t do_huge_pmd_numa_page(struct vm_fault *vmf, pmd_t pmd)
>  
>  	/* Migration could have started since the pmd_trans_migrating check */
>  	if (!page_locked) {
> -		page_nid = -1;
> +		page_nid = NUMA_NO_NODE;
>  		if (!get_page_unless_zero(page))
>  			goto out_unlock;
>  		spin_unlock(vmf->ptl);
> @@ -1556,14 +1557,14 @@ vm_fault_t do_huge_pmd_numa_page(struct vm_fault *vmf, pmd_t pmd)
>  	if (unlikely(!pmd_same(pmd, *vmf->pmd))) {
>  		unlock_page(page);
>  		put_page(page);
> -		page_nid = -1;
> +		page_nid = NUMA_NO_NODE;
>  		goto out_unlock;
>  	}
>  
>  	/* Bail if we fail to protect against THP splits for any reason */
>  	if (unlikely(!anon_vma)) {
>  		put_page(page);
> -		page_nid = -1;
> +		page_nid = NUMA_NO_NODE;
>  		goto clear_pmdnuma;
>  	}
>  
> @@ -1625,7 +1626,7 @@ vm_fault_t do_huge_pmd_numa_page(struct vm_fault *vmf, pmd_t pmd)
>  	if (anon_vma)
>  		page_unlock_anon_vma_read(anon_vma);
>  
> -	if (page_nid != -1)
> +	if (page_nid != NUMA_NO_NODE)
>  		task_numa_fault(last_cpupid, page_nid, HPAGE_PMD_NR,
>  				flags);
>  
> diff --git a/mm/hugetlb.c b/mm/hugetlb.c
> index 7f2a28a..626c771 100644
> --- a/mm/hugetlb.c
> +++ b/mm/hugetlb.c
> @@ -25,6 +25,7 @@
>  #include <linux/swap.h>
>  #include <linux/swapops.h>
>  #include <linux/jhash.h>
> +#include <linux/numa.h>
>  
>  #include <asm/page.h>
>  #include <asm/pgtable.h>
> @@ -887,7 +888,7 @@ static struct page *dequeue_huge_page_nodemask(struct hstate *h, gfp_t gfp_mask,
>  	struct zonelist *zonelist;
>  	struct zone *zone;
>  	struct zoneref *z;
> -	int node = -1;
> +	int node = NUMA_NO_NODE;
>  
>  	zonelist = node_zonelist(nid, gfp_mask);
>  
> diff --git a/mm/ksm.c b/mm/ksm.c
> index 5b0894b..d5f8834 100644
> --- a/mm/ksm.c
> +++ b/mm/ksm.c
> @@ -597,7 +597,7 @@ static struct stable_node *alloc_stable_node_chain(struct stable_node *dup,
>  		chain->chain_prune_time = jiffies;
>  		chain->rmap_hlist_len = STABLE_NODE_CHAIN;
>  #if defined (CONFIG_DEBUG_VM) && defined(CONFIG_NUMA)
> -		chain->nid = -1; /* debug */
> +		chain->nid = NUMA_NO_NODE; /* debug */
>  #endif
>  		ksm_stable_node_chains++;
>  
> diff --git a/mm/memory.c b/mm/memory.c
> index 4ad2d29..ed324f8 100644
> --- a/mm/memory.c
> +++ b/mm/memory.c
> @@ -69,6 +69,7 @@
>  #include <linux/userfaultfd_k.h>
>  #include <linux/dax.h>
>  #include <linux/oom.h>
> +#include <linux/numa.h>
>  
>  #include <asm/io.h>
>  #include <asm/mmu_context.h>
> @@ -3564,7 +3565,7 @@ static vm_fault_t do_numa_page(struct vm_fault *vmf)
>  {
>  	struct vm_area_struct *vma = vmf->vma;
>  	struct page *page = NULL;
> -	int page_nid = -1;
> +	int page_nid = NUMA_NO_NODE;
>  	int last_cpupid;
>  	int target_nid;
>  	bool migrated = false;
> @@ -3631,7 +3632,7 @@ static vm_fault_t do_numa_page(struct vm_fault *vmf)
>  	target_nid = numa_migrate_prep(page, vma, vmf->address, page_nid,
>  			&flags);
>  	pte_unmap_unlock(vmf->pte, vmf->ptl);
> -	if (target_nid == -1) {
> +	if (target_nid == NUMA_NO_NODE) {
>  		put_page(page);
>  		goto out;
>  	}
> @@ -3645,7 +3646,7 @@ static vm_fault_t do_numa_page(struct vm_fault *vmf)
>  		flags |= TNF_MIGRATE_FAIL;
>  
>  out:
> -	if (page_nid != -1)
> +	if (page_nid != NUMA_NO_NODE)
>  		task_numa_fault(last_cpupid, page_nid, 1, flags);
>  	return 0;
>  }
> diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c
> index 2b2b3cc..70e02f8 100644
> --- a/mm/memory_hotplug.c
> +++ b/mm/memory_hotplug.c
> @@ -688,9 +688,9 @@ static void node_states_check_changes_online(unsigned long nr_pages,
>  {
>  	int nid = zone_to_nid(zone);
>  
> -	arg->status_change_nid = -1;
> -	arg->status_change_nid_normal = -1;
> -	arg->status_change_nid_high = -1;
> +	arg->status_change_nid = NUMA_NO_NODE;
> +	arg->status_change_nid_normal = NUMA_NO_NODE;
> +	arg->status_change_nid_high = NUMA_NO_NODE;
>  
>  	if (!node_state(nid, N_MEMORY))
>  		arg->status_change_nid = nid;
> @@ -1484,9 +1484,9 @@ static void node_states_check_changes_offline(unsigned long nr_pages,
>  	unsigned long present_pages = 0;
>  	enum zone_type zt;
>  
> -	arg->status_change_nid = -1;
> -	arg->status_change_nid_normal = -1;
> -	arg->status_change_nid_high = -1;
> +	arg->status_change_nid = NUMA_NO_NODE;
> +	arg->status_change_nid_normal = NUMA_NO_NODE;
> +	arg->status_change_nid_high = NUMA_NO_NODE;
>  
>  	/*
>  	 * Check whether node_states[N_NORMAL_MEMORY] will be changed.
> diff --git a/mm/mempolicy.c b/mm/mempolicy.c
> index 5837a06..e4f8248 100644
> --- a/mm/mempolicy.c
> +++ b/mm/mempolicy.c
> @@ -2278,7 +2278,7 @@ int mpol_misplaced(struct page *page, struct vm_area_struct *vma, unsigned long
>  	unsigned long pgoff;
>  	int thiscpu = raw_smp_processor_id();
>  	int thisnid = cpu_to_node(thiscpu);
> -	int polnid = -1;
> +	int polnid = NUMA_NO_NODE;
>  	int ret = -1;
>  
>  	pol = get_vma_policy(vma, addr);
> diff --git a/mm/page_alloc.c b/mm/page_alloc.c
> index 6847177..73cf534 100644
> --- a/mm/page_alloc.c
> +++ b/mm/page_alloc.c
> @@ -5844,7 +5844,7 @@ int __meminit __early_pfn_to_nid(unsigned long pfn,
>  		return state->last_nid;
>  
>  	nid = memblock_search_pfn_nid(pfn, &start_pfn, &end_pfn);
> -	if (nid != -1) {
> +	if (nid != NUMA_NO_NODE) {
>  		state->last_start = start_pfn;
>  		state->last_end = end_pfn;
>  		state->last_nid = nid;
> @@ -6605,7 +6605,7 @@ unsigned long __init node_map_pfn_alignment(void)
>  {
>  	unsigned long accl_mask = 0, last_end = 0;
>  	unsigned long start, end, mask;
> -	int last_nid = -1;
> +	int last_nid = NUMA_NO_NODE;
>  	int i, nid;
>  
>  	for_each_mem_pfn_range(i, MAX_NUMNODES, &start, &end, &nid) {
> diff --git a/mm/page_ext.c b/mm/page_ext.c
> index ae44f7a..dfb0206 100644
> --- a/mm/page_ext.c
> +++ b/mm/page_ext.c
> @@ -300,7 +300,7 @@ static int __meminit online_page_ext(unsigned long start_pfn,
>  	start = SECTION_ALIGN_DOWN(start_pfn);
>  	end = SECTION_ALIGN_UP(start_pfn + nr_pages);
>  
> -	if (nid == -1) {
> +	if (nid == NUMA_NO_NODE) {
>  		/*
>  		 * In this case, "nid" already exists and contains valid memory.
>  		 * "start_pfn" passed to us is a pfn which is an arg for
> diff --git a/net/core/pktgen.c b/net/core/pktgen.c
> index 6ac9198..f3f5a78 100644
> --- a/net/core/pktgen.c
> +++ b/net/core/pktgen.c
> @@ -158,6 +158,7 @@
>  #include <linux/etherdevice.h>
>  #include <linux/kthread.h>
>  #include <linux/prefetch.h>
> +#include <linux/mmzone.h>
>  #include <net/net_namespace.h>
>  #include <net/checksum.h>
>  #include <net/ipv6.h>
> @@ -3625,7 +3626,7 @@ static int pktgen_add_device(struct pktgen_thread *t, const char *ifname)
>  	pkt_dev->svlan_cfi = 0;
>  	pkt_dev->svlan_id = 0xffff;
>  	pkt_dev->burst = 1;
> -	pkt_dev->node = -1;
> +	pkt_dev->node = NUMA_NO_NODE;
>  
>  	err = pktgen_setup_dev(t->net, pkt_dev, ifname);
>  	if (err)
> diff --git a/net/qrtr/qrtr.c b/net/qrtr/qrtr.c
> index 86e1e37..b37e6e0 100644
> --- a/net/qrtr/qrtr.c
> +++ b/net/qrtr/qrtr.c
> @@ -15,6 +15,7 @@
>  #include <linux/netlink.h>
>  #include <linux/qrtr.h>
>  #include <linux/termios.h>	/* For TIOCINQ/OUTQ */
> +#include <linux/numa.h>
>  
>  #include <net/sock.h>
>  
> @@ -101,7 +102,7 @@ static inline struct qrtr_sock *qrtr_sk(struct sock *sk)
>  	return container_of(sk, struct qrtr_sock, sk);
>  }
>  
> -static unsigned int qrtr_local_nid = -1;
> +static unsigned int qrtr_local_nid = NUMA_NO_NODE;
>  
>  /* for node ids */
>  static RADIX_TREE(qrtr_nodes, GFP_KERNEL);
> diff --git a/tools/perf/bench/numa.c b/tools/perf/bench/numa.c
> index 4419551..e0ad5f1 100644
> --- a/tools/perf/bench/numa.c
> +++ b/tools/perf/bench/numa.c
> @@ -298,7 +298,7 @@ static cpu_set_t bind_to_node(int target_node)
>  
>  	CPU_ZERO(&mask);
>  
> -	if (target_node == -1) {
> +	if (target_node == NUMA_NO_NODE) {
>  		for (cpu = 0; cpu < g->p.nr_cpus; cpu++)
>  			CPU_SET(cpu, &mask);
>  	} else {
> @@ -339,7 +339,7 @@ static void bind_to_memnode(int node)
>  	unsigned long nodemask;
>  	int ret;
>  
> -	if (node == -1)
> +	if (node == NUMA_NO_NODE)
>  		return;
>  
>  	BUG_ON(g->p.nr_nodes > (int)sizeof(nodemask)*8);
> @@ -1363,7 +1363,7 @@ static void init_thread_data(void)
>  		int cpu;
>  
>  		/* Allow all nodes by default: */
> -		td->bind_node = -1;
> +		td->bind_node = NUMA_NO_NODE;
>  
>  		/* Allow all CPUs by default: */
>  		CPU_ZERO(&td->bind_cpumask);



More information about the Linuxppc-dev mailing list