linux/arch/x86/include/asm/mmzone_32.h
<<
>>
Prefs
   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
  13extern 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
  32extern s8 physnode_map[];
  33
  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
  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