File: /Users/paulross/dev/linux/linux-3.13/arch/x86/include/uapi/asm/e820.h

Green shading in the line number column means the source is part of the translation unit, red means it is conditionally excluded. Highlighted line numbers link to the translation unit page. Highlighted macros link to the macro page.

       1: #ifndef _UAPI_ASM_X86_E820_H
       2: #define _UAPI_ASM_X86_E820_H
       3: #define E820MAP    0x2d0        /* our map */
       4: #define E820MAX    128        /* number of entries in E820MAP */
       5: 
       6: /*
       7:  * Legacy E820 BIOS limits us to 128 (E820MAX) nodes due to the
       8:  * constrained space in the zeropage.  If we have more nodes than
       9:  * that, and if we've booted off EFI firmware, then the EFI tables
      10:  * passed us from the EFI firmware can list more nodes.  Size our
      11:  * internal memory map tables to have room for these additional
      12:  * nodes, based on up to three entries per node for which the
      13:  * kernel was built: MAX_NUMNODES == (1 << CONFIG_NODES_SHIFT),
      14:  * plus E820MAX, allowing space for the possible duplicate E820
      15:  * entries that might need room in the same arrays, prior to the
      16:  * call to sanitize_e820_map() to remove duplicates.  The allowance
      17:  * of three memory map entries per node is "enough" entries for
      18:  * the initial hardware platform motivating this mechanism to make
      19:  * use of additional EFI map entries.  Future platforms may want
      20:  * to allow more than three entries per node or otherwise refine
      21:  * this size.
      22:  */
      23: 
      24: /*
      25:  * Odd: 'make headers_check' complains about numa.h if I try
      26:  * to collapse the next two #ifdef lines to a single line:
      27:  *    #if defined(__KERNEL__) && defined(CONFIG_EFI)
      28:  */
      29: #ifndef __KERNEL__
      30: #define E820_X_MAX E820MAX
      31: #endif
      32: 
      33: #define E820NR    0x1e8        /* # entries in E820MAP */
      34: 
      35: #define E820_RAM    1
      36: #define E820_RESERVED    2
      37: #define E820_ACPI    3
      38: #define E820_NVS    4
      39: #define E820_UNUSABLE    5
      40: 
      41: 
      42: /*
      43:  * reserved RAM used by kernel itself
      44:  * if CONFIG_INTEL_TXT is enabled, memory of this type will be
      45:  * included in the S3 integrity calculation and so should not include
      46:  * any memory that BIOS might alter over the S3 transition
      47:  */
      48: #define E820_RESERVED_KERN        128
      49: 
      50: #ifndef __ASSEMBLY__
      51: #include <linux/types.h>
      52: struct e820entry {
      53:     __u64 addr;    /* start of memory segment */
      54:     __u64 size;    /* size of memory segment */
      55:     __u32 type;    /* type of memory segment */
      56: } __attribute__((packed));
      57: 
      58: struct e820map {
      59:     __u32 nr_map;
      60:     struct e820entry map[E820_X_MAX];
      61: };
      62: 
      63: #define ISA_START_ADDRESS    0xa0000
      64: #define ISA_END_ADDRESS        0x100000
      65: 
      66: #define BIOS_BEGIN        0x000a0000
      67: #define BIOS_END        0x00100000
      68: 
      69: #define BIOS_ROM_BASE        0xffe00000
      70: #define BIOS_ROM_END        0xffffffff
      71: 
      72: #endif /* __ASSEMBLY__ */
      73: 
      74: 
      75: #endif /* _UAPI_ASM_X86_E820_H */
      76: