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

Commit 4ec37de8 authored by Tony Luck's avatar Tony Luck
Browse files

[IA64] Fix build breakage



In commit 0ac0c0d0
cpusets: randomize node rotor used in cpuset_mem_spread_node()

Jack Steiner fixed a problem with too many small tasks being
assigned to node 0. Copy his code to ia64 to avoid build error.

    arch/ia64/kernel/smpboot.c:641: error: ‘cpu_to_node_map’ undeclared (first use in this function)

In commit 3bccd996
numa: ia64: use generic percpu var numa_node_id() implementation

Lee Schermerhorn added some set_numa_node() calls - but these
only work on CONFIG_NUMA=y configurations. Surround the calls
with #ifdef CONFIG_NUMA

Signed-off-by: default avatarTony Luck <tony.luck@intel.com>
parent cc106eb3
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -390,11 +390,13 @@ smp_callin (void)

	fix_b0_for_bsp();

#ifdef CONFIG_NUMA
	/*
	 * numa_node_id() works after this.
	 */
	set_numa_node(cpu_to_node_map[cpuid]);
	set_numa_mem(local_memory_node(cpu_to_node_map[cpuid]));
#endif

	ipi_call_lock_irq();
	spin_lock(&vector_lock);
@@ -638,7 +640,9 @@ void __devinit smp_prepare_boot_cpu(void)
{
	cpu_set(smp_processor_id(), cpu_online_map);
	cpu_set(smp_processor_id(), cpu_callin_map);
#ifdef CONFIG_NUMA
	set_numa_node(cpu_to_node_map[smp_processor_id()]);
#endif
	per_cpu(cpu_state, smp_processor_id()) = CPU_ONLINE;
	paravirt_post_smp_prepare_boot_cpu();
}
+17 −0
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
#include <linux/init.h>
#include <linux/bootmem.h>
#include <linux/module.h>
#include <linux/random.h>
#include <asm/mmzone.h>
#include <asm/numa.h>

@@ -50,6 +51,22 @@ paddr_to_nid(unsigned long paddr)
	return (i < num_node_memblks) ? node_memblk[i].nid : (num_node_memblks ? -1 : 0);
}

/*
 * Return the bit number of a random bit set in the nodemask.
 *   (returns -1 if nodemask is empty)
 */
int __node_random(const nodemask_t *maskp)
{
	int w, bit = -1;

	w = nodes_weight(*maskp);
	if (w)
		bit = bitmap_ord_to_pos(maskp->bits,
			get_random_int() % w, MAX_NUMNODES);
	return bit;
}
EXPORT_SYMBOL(__node_random);

#if defined(CONFIG_SPARSEMEM) && defined(CONFIG_NUMA)
/*
 * Because of holes evaluate on section limits.