blob: 1ec990bd7dc0cf54bf9b5499d59175eb7f2dd620 [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001/*
2 * Written by Pat Gaughen (gone@us.ibm.com) Mar 2002
3 *
4 */
5
H. Peter Anvin1965aae2008-10-22 22:26:29 -07006#ifndef _ASM_X86_MMZONE_32_H
7#define _ASM_X86_MMZONE_32_H
Linus Torvalds1da177e2005-04-16 15:20:36 -07008
9#include <asm/smp.h>
10
Dave Jones8ff8b272005-07-07 17:56:39 -070011#ifdef CONFIG_NUMA
Andy Whitcroft05b79bd2005-06-23 00:07:57 -070012extern struct pglist_data *node_data[];
13#define NODE_DATA(nid) (node_data[nid])
Andy Whitcroft05b79bd2005-06-23 00:07:57 -070014#endif /* CONFIG_NUMA */
15
16#ifdef CONFIG_DISCONTIGMEM
Linus Torvalds1da177e2005-04-16 15:20:36 -070017
18/*
19 * generic node memory support, the following assumptions apply:
20 *
André Goddard Rosaaf901ca2009-11-14 13:09:05 -020021 * 1) memory comes in 64Mb contiguous chunks which are either present or not
Linus Torvalds1da177e2005-04-16 15:20:36 -070022 * 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
Tejun Heod0ead152011-07-12 09:44:22 +020028#define MAX_SECTIONS 1024
29#define PAGES_PER_SECTION (MAX_NR_PAGES/MAX_SECTIONS)
Linus Torvalds1da177e2005-04-16 15:20:36 -070030
31extern s8 physnode_map[];
32
33static inline int pfn_to_nid(unsigned long pfn)
34{
35#ifdef CONFIG_NUMA
Tejun Heod0ead152011-07-12 09:44:22 +020036 return((int) physnode_map[(pfn) / PAGES_PER_SECTION]);
Linus Torvalds1da177e2005-04-16 15:20:36 -070037#else
38 return 0;
39#endif
40}
41
Linus Torvalds1da177e2005-04-16 15:20:36 -070042static 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}
Linus Torvalds1da177e2005-04-16 15:20:36 -070050
Tejun Heoa26474e2011-06-28 11:41:07 +020051#define early_pfn_valid(pfn) pfn_valid((pfn))
52
Linus Torvalds1da177e2005-04-16 15:20:36 -070053#endif /* CONFIG_DISCONTIGMEM */
Andy Whitcroftb159d432005-06-23 00:07:52 -070054
H. Peter Anvin1965aae2008-10-22 22:26:29 -070055#endif /* _ASM_X86_MMZONE_32_H */