Commit | Line | Data |
---|---|---|
1da177e4 LT |
1 | /* |
2 | * Written by Pat Gaughen (gone@us.ibm.com) Mar 2002 | |
3 | * | |
4 | */ | |
5 | ||
1965aae3 PA |
6 | #ifndef _ASM_X86_MMZONE_32_H |
7 | #define _ASM_X86_MMZONE_32_H | |
1da177e4 LT |
8 | |
9 | #include <asm/smp.h> | |
10 | ||
8ff8b27b | 11 | #ifdef CONFIG_NUMA |
05b79bdc AW |
12 | extern struct pglist_data *node_data[]; |
13 | #define NODE_DATA(nid) (node_data[nid]) | |
1da177e4 | 14 | |
d49c4288 | 15 | #include <asm/numaq.h> |
1da177e4 | 16 | |
97a70e54 RW |
17 | extern void resume_map_numa_kva(pgd_t *pgd); |
18 | ||
8ff8b27b | 19 | #else /* !CONFIG_NUMA */ |
91023300 | 20 | |
97a70e54 RW |
21 | static inline void resume_map_numa_kva(pgd_t *pgd) {} |
22 | ||
05b79bdc AW |
23 | #endif /* CONFIG_NUMA */ |
24 | ||
25 | #ifdef CONFIG_DISCONTIGMEM | |
1da177e4 LT |
26 | |
27 | /* | |
28 | * generic node memory support, the following assumptions apply: | |
29 | * | |
af901ca1 | 30 | * 1) memory comes in 64Mb contiguous chunks which are either present or not |
1da177e4 LT |
31 | * 2) we will not have more than 64Gb in total |
32 | * | |
33 | * for now assume that 64Gb is max amount of RAM for whole system | |
34 | * 64Gb / 4096bytes/page = 16777216 pages | |
35 | */ | |
36 | #define MAX_NR_PAGES 16777216 | |
ba924c81 | 37 | #define MAX_ELEMENTS 1024 |
1da177e4 LT |
38 | #define PAGES_PER_ELEMENT (MAX_NR_PAGES/MAX_ELEMENTS) |
39 | ||
40 | extern s8 physnode_map[]; | |
41 | ||
42 | static inline int pfn_to_nid(unsigned long pfn) | |
43 | { | |
44 | #ifdef CONFIG_NUMA | |
45 | return((int) physnode_map[(pfn) / PAGES_PER_ELEMENT]); | |
46 | #else | |
47 | return 0; | |
48 | #endif | |
49 | } | |
50 | ||
1da177e4 LT |
51 | static inline int pfn_valid(int pfn) |
52 | { | |
53 | int nid = pfn_to_nid(pfn); | |
54 | ||
55 | if (nid >= 0) | |
56 | return (pfn < node_end_pfn(nid)); | |
57 | return 0; | |
58 | } | |
05b79bdc AW |
59 | |
60 | #endif /* CONFIG_DISCONTIGMEM */ | |
61 | ||
62 | #ifdef CONFIG_NEED_MULTIPLE_NODES | |
c1329375 | 63 | /* always use node 0 for bootmem on this numa platform */ |
d0c4f570 TH |
64 | #define bootmem_arch_preferred_node(__bdata, size, align, goal, limit) \ |
65 | (NODE_DATA(0)->bdata) | |
05b79bdc | 66 | #endif /* CONFIG_NEED_MULTIPLE_NODES */ |
b159d43f | 67 | |
1965aae3 | 68 | #endif /* _ASM_X86_MMZONE_32_H */ |