Commit | Line | Data |
---|---|---|
1da177e4 LT |
1 | /* K8 NUMA support */ |
2 | /* Copyright 2002,2003 by Andi Kleen, SuSE Labs */ | |
3 | /* 2.5 Version loosely based on the NUMAQ Code by Pat Gaughen. */ | |
4 | #ifndef _ASM_X86_64_MMZONE_H | |
5 | #define _ASM_X86_64_MMZONE_H 1 | |
6 | ||
1da177e4 | 7 | |
2b97690f | 8 | #ifdef CONFIG_NUMA |
1da177e4 | 9 | |
60e9bfd1 | 10 | #define VIRTUAL_BUG_ON(x) |
1da177e4 LT |
11 | |
12 | #include <asm/smp.h> | |
13 | ||
1da177e4 | 14 | /* Simple perfect hash to map physical addresses to node numbers */ |
dcf36bfa ED |
15 | struct memnode { |
16 | int shift; | |
076422d2 | 17 | unsigned int mapsize; |
43238382 | 18 | s16 *map; |
60e9bfd1 | 19 | s16 embedded_map[64 - 8]; |
43238382 | 20 | } ____cacheline_aligned; /* total size = 128 bytes */ |
dcf36bfa ED |
21 | extern struct memnode memnode; |
22 | #define memnode_shift memnode.shift | |
23 | #define memnodemap memnode.map | |
076422d2 | 24 | #define memnodemapsize memnode.mapsize |
1da177e4 LT |
25 | |
26 | extern struct pglist_data *node_data[]; | |
27 | ||
60e9bfd1 JP |
28 | static inline __attribute__((pure)) int phys_to_nid(unsigned long addr) |
29 | { | |
30 | unsigned nid; | |
076422d2 AS |
31 | VIRTUAL_BUG_ON(!memnodemap); |
32 | VIRTUAL_BUG_ON((addr >> memnode_shift) >= memnodemapsize); | |
60e9bfd1 JP |
33 | nid = memnodemap[addr >> memnode_shift]; |
34 | VIRTUAL_BUG_ON(nid >= MAX_NUMNODES || !node_data[nid]); | |
35 | return nid; | |
36 | } | |
1da177e4 | 37 | |
1da177e4 LT |
38 | #define NODE_DATA(nid) (node_data[nid]) |
39 | ||
1da177e4 | 40 | #define node_start_pfn(nid) (NODE_DATA(nid)->node_start_pfn) |
60e9bfd1 | 41 | #define node_end_pfn(nid) (NODE_DATA(nid)->node_start_pfn + \ |
1da177e4 LT |
42 | NODE_DATA(nid)->node_spanned_pages) |
43 | ||
8a423ff0 TG |
44 | extern int early_pfn_to_nid(unsigned long pfn); |
45 | ||
53fee04f | 46 | #ifdef CONFIG_NUMA_EMU |
60e9bfd1 JP |
47 | #define FAKE_NODE_MIN_SIZE (64 * 1024 * 1024) |
48 | #define FAKE_NODE_MIN_HASH_MASK (~(FAKE_NODE_MIN_SIZE - 1UL)) | |
53fee04f RS |
49 | #endif |
50 | ||
2b97690f | 51 | #endif |
1da177e4 | 52 | #endif |