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]) | |
05b79bdc AW |
14 | #endif /* CONFIG_NUMA */ |
15 | ||
16 | #ifdef CONFIG_DISCONTIGMEM | |
1da177e4 LT |
17 | |
18 | /* | |
19 | * generic node memory support, the following assumptions apply: | |
20 | * | |
af901ca1 | 21 | * 1) memory comes in 64Mb contiguous chunks which are either present or not |
1da177e4 LT |
22 | * 2) we will not have more than 64Gb in total |
23 | * | |
24 | * for now assume that 64Gb is max amount of RAM for whole system | |
25 | * 64Gb / 4096bytes/page = 16777216 pages | |
26 | */ | |
27 | #define MAX_NR_PAGES 16777216 | |
d0ead157 TH |
28 | #define MAX_SECTIONS 1024 |
29 | #define PAGES_PER_SECTION (MAX_NR_PAGES/MAX_SECTIONS) | |
1da177e4 LT |
30 | |
31 | extern s8 physnode_map[]; | |
32 | ||
33 | static inline int pfn_to_nid(unsigned long pfn) | |
34 | { | |
35 | #ifdef CONFIG_NUMA | |
d0ead157 | 36 | return((int) physnode_map[(pfn) / PAGES_PER_SECTION]); |
1da177e4 LT |
37 | #else |
38 | return 0; | |
39 | #endif | |
40 | } | |
41 | ||
1da177e4 LT |
42 | static inline int pfn_valid(int pfn) |
43 | { | |
44 | int nid = pfn_to_nid(pfn); | |
45 | ||
46 | if (nid >= 0) | |
47 | return (pfn < node_end_pfn(nid)); | |
48 | return 0; | |
49 | } | |
05b79bdc | 50 | |
a26474e8 TH |
51 | #define early_pfn_valid(pfn) pfn_valid((pfn)) |
52 | ||
05b79bdc AW |
53 | #endif /* CONFIG_DISCONTIGMEM */ |
54 | ||
1965aae3 | 55 | #endif /* _ASM_X86_MMZONE_32_H */ |