05b3cbd8bb
Patch enables early intialization of cpu_to_node. apicid_to_node is built by reading the SRAT table, from acpi_numa_init with ACPI_NUMA and k8_scan_nodes with K8_NUMA. x86_cpu_to_apicid is built by parsing the ACPI MADT table, from acpi_boot_init. We combine these two tables and setup cpu_to_node. Early intialization helps the static per_cpu_areas in getting pages from correct node. Change since last release: Do not initialize early init_cpu_to_node for faking node cases. Patch tested on TYAN dual core 4P board with K8 only, ACPI_NUMA. Tested on EM64T NUMA. Also tested with numa=off, numa=fake, and running a kernel compiled with NUMA on a regular EM64 2 way SMP. Signed-off-by: Alok N Kataria <alokk@calsoftinc.com> Signed-off-by: Ravikiran Thirumalai <kiran@scalex86.org> Signed-off-by: Shai Fultheim <shai@scalex86.org> Signed-off-by: Andi Kleen <ak@suse.de> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
32 lines
632 B
C
32 lines
632 B
C
#ifndef _ASM_X8664_NUMA_H
|
|
#define _ASM_X8664_NUMA_H 1
|
|
|
|
#include <linux/nodemask.h>
|
|
#include <asm/numnodes.h>
|
|
|
|
struct node {
|
|
u64 start,end;
|
|
};
|
|
|
|
extern int compute_hash_shift(struct node *nodes, int numnodes);
|
|
extern int pxm_to_node(int nid);
|
|
|
|
#define ZONE_ALIGN (1UL << (MAX_ORDER+PAGE_SHIFT))
|
|
|
|
extern void numa_add_cpu(int cpu);
|
|
extern void numa_init_array(void);
|
|
extern int numa_off;
|
|
|
|
extern void numa_set_node(int cpu, int node);
|
|
|
|
extern unsigned char apicid_to_node[256];
|
|
#ifdef CONFIG_NUMA
|
|
extern void __init init_cpu_to_node(void);
|
|
#else
|
|
#define init_cpu_to_node() do {} while (0)
|
|
#endif
|
|
|
|
#define NUMA_NO_NODE 0xff
|
|
|
|
#endif
|