2005-04-17 02:20:36 +04:00
/* K8 NUMA support */
/* Copyright 2002,2003 by Andi Kleen, SuSE Labs */
/* 2.5 Version loosely based on the NUMAQ Code by Pat Gaughen. */
# ifndef _ASM_X86_64_MMZONE_H
# define _ASM_X86_64_MMZONE_H 1
2005-06-23 11:08:06 +04:00
# ifdef CONFIG_NUMA
2005-04-17 02:20:36 +04:00
2008-03-23 11:02:47 +03:00
# define VIRTUAL_BUG_ON(x)
2005-04-17 02:20:36 +04:00
# include <asm/smp.h>
/* Simple perfect hash to map physical addresses to node numbers */
2006-03-25 18:31:46 +03:00
struct memnode {
int shift ;
2007-02-13 15:26:19 +03:00
unsigned int mapsize ;
2008-01-30 15:33:25 +03:00
s16 * map ;
2008-03-23 11:02:47 +03:00
s16 embedded_map [ 64 - 8 ] ;
2008-01-30 15:33:25 +03:00
} ____cacheline_aligned ; /* total size = 128 bytes */
2006-03-25 18:31:46 +03:00
extern struct memnode memnode ;
# define memnode_shift memnode.shift
# define memnodemap memnode.map
2007-02-13 15:26:19 +03:00
# define memnodemapsize memnode.mapsize
2005-04-17 02:20:36 +04:00
extern struct pglist_data * node_data [ ] ;
2008-03-23 11:02:47 +03:00
static inline __attribute__ ( ( pure ) ) int phys_to_nid ( unsigned long addr )
{
unsigned nid ;
2007-02-13 15:26:19 +03:00
VIRTUAL_BUG_ON ( ! memnodemap ) ;
VIRTUAL_BUG_ON ( ( addr > > memnode_shift ) > = memnodemapsize ) ;
2008-03-23 11:02:47 +03:00
nid = memnodemap [ addr > > memnode_shift ] ;
VIRTUAL_BUG_ON ( nid > = MAX_NUMNODES | | ! node_data [ nid ] ) ;
return nid ;
}
2005-04-17 02:20:36 +04:00
# define NODE_DATA(nid) (node_data[nid])
# define node_start_pfn(nid) (NODE_DATA(nid)->node_start_pfn)
2008-03-23 11:02:47 +03:00
# define node_end_pfn(nid) (NODE_DATA(nid)->node_start_pfn + \
2005-04-17 02:20:36 +04:00
NODE_DATA ( nid ) - > node_spanned_pages )
2008-01-30 15:30:37 +03:00
extern int early_pfn_to_nid ( unsigned long pfn ) ;
2007-02-13 15:26:22 +03:00
# ifdef CONFIG_NUMA_EMU
2008-03-23 11:02:47 +03:00
# define FAKE_NODE_MIN_SIZE (64 * 1024 * 1024)
# define FAKE_NODE_MIN_HASH_MASK (~(FAKE_NODE_MIN_SIZE - 1UL))
2007-02-13 15:26:22 +03:00
# endif
2005-06-23 11:08:06 +04:00
# endif
2005-04-17 02:20:36 +04:00
# endif