mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-27 19:29:37 +00:00
![Venkatesh Pallipadi](/assets/img/avatar_default.png)
The specifications that talk about E820 map doesn't have an upper limit on the number of e820 entries. But, today's kernel has a hard limit of 32. With increase in memory size, we are seeing the number of E820 entries reaching close to 32. Patch below bumps the number upto 128. The patch changes the location of EDDBUF in zero-page (as it comes after E820). As, EDDBUF is not used by boot loaders, this patch should not have any effect on bootloader-setup code interface. Patch covers both i386 and x86-64. Tested on: * grub booting bzImage * lilo booting bzImage with EDID info enabled * pxeboot of bzImage Side-effect: bss increases by ~ 2K and init.data increases by ~7.5K on all systems, due to increase in size of static arrays. Signed-off-by: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
40 lines
1.1 KiB
C
40 lines
1.1 KiB
C
/*
|
|
* structures and definitions for the int 15, ax=e820 memory map
|
|
* scheme.
|
|
*
|
|
* In a nutshell, arch/i386/boot/setup.S populates a scratch table
|
|
* in the empty_zero_block that contains a list of usable address/size
|
|
* duples. In arch/i386/kernel/setup.c, this information is
|
|
* transferred into the e820map, and in arch/i386/mm/init.c, that
|
|
* new information is used to mark pages reserved or not.
|
|
*
|
|
*/
|
|
#ifndef __E820_HEADER
|
|
#define __E820_HEADER
|
|
|
|
#define E820MAP 0x2d0 /* our map */
|
|
#define E820MAX 128 /* number of entries in E820MAP */
|
|
#define E820NR 0x1e8 /* # entries in E820MAP */
|
|
|
|
#define E820_RAM 1
|
|
#define E820_RESERVED 2
|
|
#define E820_ACPI 3 /* usable as RAM once ACPI tables have been read */
|
|
#define E820_NVS 4
|
|
|
|
#define HIGH_MEMORY (1024*1024)
|
|
|
|
#ifndef __ASSEMBLY__
|
|
|
|
struct e820map {
|
|
int nr_map;
|
|
struct e820entry {
|
|
unsigned long long addr; /* start of memory segment */
|
|
unsigned long long size; /* size of memory segment */
|
|
unsigned long type; /* type of memory segment */
|
|
} map[E820MAX];
|
|
};
|
|
|
|
extern struct e820map e820;
|
|
#endif/*!__ASSEMBLY__*/
|
|
|
|
#endif/*__E820_HEADER*/
|