1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
- #ifndef _ASM_X86_E820_H
- #define _ASM_X86_E820_H
- #define E820MAP 0x2d0 /* our map */
- #define E820MAX 128 /* number of entries in E820MAP */
- /*
- * Legacy E820 BIOS limits us to 128 (E820MAX) nodes due to the
- * constrained space in the zeropage. If we have more nodes than
- * that, and if we've booted off EFI firmware, then the EFI tables
- * passed us from the EFI firmware can list more nodes. Size our
- * internal memory map tables to have room for these additional
- * nodes, based on up to three entries per node for which the
- * kernel was built: MAX_NUMNODES == (1 << CONFIG_NODES_SHIFT),
- * plus E820MAX, allowing space for the possible duplicate E820
- * entries that might need room in the same arrays, prior to the
- * call to sanitize_e820_map() to remove duplicates. The allowance
- * of three memory map entries per node is "enough" entries for
- * the initial hardware platform motivating this mechanism to make
- * use of additional EFI map entries. Future platforms may want
- * to allow more than three entries per node or otherwise refine
- * this size.
- */
- #define E820_X_MAX E820MAX
- #define E820NR 0x1e8 /* # entries in E820MAP */
- #define E820_RAM 1
- #define E820_RESERVED 2
- #define E820_ACPI 3
- #define E820_NVS 4
- #define E820_UNUSABLE 5
- #define E820_PMEM 7
- /*
- * This is a non-standardized way to represent ADR or NVDIMM regions that
- * persist over a reboot. The kernel will ignore their special capabilities
- * unless the CONFIG_X86_PMEM_LEGACY option is set.
- *
- * ( Note that older platforms also used 6 for the same type of memory,
- * but newer versions switched to 12 as 6 was assigned differently. Some
- * time they will learn... )
- */
- #define E820_PRAM 12
- /*
- * reserved RAM used by kernel itself
- * if CONFIG_INTEL_TXT is enabled, memory of this type will be
- * included in the S3 integrity calculation and so should not include
- * any memory that BIOS might alter over the S3 transition
- */
- #define E820_RESERVED_KERN 128
- #ifndef __ASSEMBLY__
- #include <linux/types.h>
- struct e820entry {
- __u64 addr; /* start of memory segment */
- __u64 size; /* size of memory segment */
- __u32 type; /* type of memory segment */
- } __attribute__((packed));
- struct e820map {
- __u32 nr_map;
- struct e820entry map[E820_X_MAX];
- };
- #define ISA_START_ADDRESS 0xa0000
- #define ISA_END_ADDRESS 0x100000
- #define BIOS_BEGIN 0x000a0000
- #define BIOS_END 0x00100000
- #define BIOS_ROM_BASE 0xffe00000
- #define BIOS_ROM_END 0xffffffff
- #endif /* __ASSEMBLY__ */
- #endif /* _ASM_X86_E820_H */
|