linux/arch/x86/include/asm/sparsemem.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2#ifndef _ASM_X86_SPARSEMEM_H
   3#define _ASM_X86_SPARSEMEM_H
   4
   5#ifdef CONFIG_SPARSEMEM
   6/*
   7 * generic non-linear memory support:
   8 *
   9 * 1) we will not split memory into more chunks than will fit into the flags
  10 *    field of the struct page
  11 *
  12 * SECTION_SIZE_BITS            2^n: size of each section
  13 * MAX_PHYSADDR_BITS            2^n: max size of physical address space
  14 * MAX_PHYSMEM_BITS             2^n: how much memory we can have in that space
  15 *
  16 */
  17
  18#ifdef CONFIG_X86_32
  19# ifdef CONFIG_X86_PAE
  20#  define SECTION_SIZE_BITS     29
  21#  define MAX_PHYSADDR_BITS     36
  22#  define MAX_PHYSMEM_BITS      36
  23# else
  24#  define SECTION_SIZE_BITS     26
  25#  define MAX_PHYSADDR_BITS     32
  26#  define MAX_PHYSMEM_BITS      32
  27# endif
  28#else /* CONFIG_X86_32 */
  29# define SECTION_SIZE_BITS      27 /* matt - 128 is convenient right now */
  30# ifdef CONFIG_X86_5LEVEL
  31#  define MAX_PHYSADDR_BITS     52
  32#  define MAX_PHYSMEM_BITS      52
  33# else
  34#  define MAX_PHYSADDR_BITS     44
  35#  define MAX_PHYSMEM_BITS      46
  36# endif
  37#endif
  38
  39#endif /* CONFIG_SPARSEMEM */
  40#endif /* _ASM_X86_SPARSEMEM_H */
  41