Blame view

kernel/linux-rt-4.4.41/arch/x86/include/asm/mmzone_32.h 1.12 KB
5113f6f70   김현기   kernel add
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
  /*
   * Written by Pat Gaughen (gone@us.ibm.com) Mar 2002
   *
   */
  
  #ifndef _ASM_X86_MMZONE_32_H
  #define _ASM_X86_MMZONE_32_H
  
  #include <asm/smp.h>
  
  #ifdef CONFIG_NUMA
  extern struct pglist_data *node_data[];
  #define NODE_DATA(nid)	(node_data[nid])
  #endif /* CONFIG_NUMA */
  
  #ifdef CONFIG_DISCONTIGMEM
  
  /*
   * generic node memory support, the following assumptions apply:
   *
   * 1) memory comes in 64Mb contiguous chunks which are either present or not
   * 2) we will not have more than 64Gb in total
   *
   * for now assume that 64Gb is max amount of RAM for whole system
   *    64Gb / 4096bytes/page = 16777216 pages
   */
  #define MAX_NR_PAGES 16777216
  #define MAX_SECTIONS 1024
  #define PAGES_PER_SECTION (MAX_NR_PAGES/MAX_SECTIONS)
  
  extern s8 physnode_map[];
  
  static inline int pfn_to_nid(unsigned long pfn)
  {
  #ifdef CONFIG_NUMA
  	return((int) physnode_map[(pfn) / PAGES_PER_SECTION]);
  #else
  	return 0;
  #endif
  }
  
  static inline int pfn_valid(int pfn)
  {
  	int nid = pfn_to_nid(pfn);
  
  	if (nid >= 0)
  		return (pfn < node_end_pfn(nid));
  	return 0;
  }
  
  #define early_pfn_valid(pfn)	pfn_valid((pfn))
  
  #endif /* CONFIG_DISCONTIGMEM */
  
  #endif /* _ASM_X86_MMZONE_32_H */