2008-10-22 22:26:29 -07:00
# ifndef _ASM_X86_NUMA_64_H
# define _ASM_X86_NUMA_64_H
2005-04-16 15:20:36 -07:00
# include <linux/nodemask.h>
2006-03-25 16:29:12 +01:00
struct bootnode {
2008-03-23 01:02:55 -07:00
u64 start ;
u64 end ;
2005-04-16 15:20:36 -07:00
} ;
2008-03-25 10:14:35 -07:00
extern int compute_hash_shift ( struct bootnode * nodes , int numblks ,
int * nodeids ) ;
2005-04-16 15:20:36 -07:00
# define ZONE_ALIGN (1UL << (MAX_ORDER+PAGE_SHIFT))
extern int numa_off ;
2008-01-30 13:30:17 +01:00
extern unsigned long numa_free_all_bootmem ( void ) ;
extern void setup_node_bootmem ( int nodeid , unsigned long start ,
unsigned long end ) ;
2006-01-11 22:45:36 +01:00
# ifdef CONFIG_NUMA
2009-05-15 13:59:37 -07:00
/*
* Too small node sizes may confuse the VM badly . Usually they
* result from BIOS bugs . So dont recognize nodes as standalone
* NUMA entities that have less than this amount of RAM listed :
*/
# define NODE_MIN_SIZE (4*1024*1024)
2011-02-16 12:13:07 +01:00
extern nodemask_t cpu_nodes_parsed __initdata ;
extern nodemask_t mem_nodes_parsed __initdata ;
2011-02-16 12:13:07 +01:00
extern struct bootnode numa_nodes [ MAX_NUMNODES ] __initdata ;
2011-02-16 12:13:07 +01:00
2011-01-23 14:37:39 +01:00
extern int __cpuinit numa_cpu_node ( int cpu ) ;
2010-02-15 13:43:30 -08:00
# ifdef CONFIG_NUMA_EMU
2010-12-22 17:23:40 -08:00
# define FAKE_NODE_MIN_SIZE ((u64)32 << 20)
2010-02-15 13:43:30 -08:00
# define FAKE_NODE_MIN_HASH_MASK (~(FAKE_NODE_MIN_SIZE - 1UL))
2011-01-19 08:57:21 +00:00
void numa_emu_cmdline ( char * ) ;
2010-02-15 13:43:30 -08:00
# endif /* CONFIG_NUMA_EMU */
2006-01-11 22:45:36 +01:00
# else
2011-01-23 14:37:39 +01:00
static inline int numa_cpu_node ( int cpu ) { return NUMA_NO_NODE ; }
2006-01-11 22:45:36 +01:00
# endif
2005-09-12 18:49:24 +02:00
2008-10-22 22:26:29 -07:00
# endif /* _ASM_X86_NUMA_64_H */