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