Bug: EDID_INFO is encroaching on the space meant for E820 map in zero-page. This will result in E820 map corruption on any system that has more than 18 E820 entries and CONFIG_VIDEO_SELECT. This patch fixes the bug. Signed-off-by:: "Venkatesh Pallipadi" --- linux-2.6.9-rc2/include/asm-i386/setup.h.org 2004-08-29 00:16:21.839426432 -0700 +++ linux-2.6.9-rc2/include/asm-i386/setup.h 2004-08-28 23:59:21.912478896 -0700 @@ -55,7 +55,7 @@ extern unsigned char boot_params[PARAM_S #define KERNEL_START (*(unsigned long *) (PARAM+0x214)) #define INITRD_START (*(unsigned long *) (PARAM+0x218)) #define INITRD_SIZE (*(unsigned long *) (PARAM+0x21c)) -#define EDID_INFO (*(struct edid_info *) (PARAM+0x440)) +#define EDID_INFO (*(struct edid_info *) (PARAM+0x140)) #define EDD_NR (*(unsigned char *) (PARAM+EDDNR)) #define EDD_MBR_SIG_NR (*(unsigned char *) (PARAM+EDD_MBR_SIG_NR_BUF)) #define EDD_MBR_SIGNATURE ((unsigned int *) (PARAM+EDD_MBR_SIG_BUF)) --- linux-2.6.9-rc2/arch/i386/boot/video.S.org 2004-08-29 00:13:56.852467800 -0700 +++ linux-2.6.9-rc2/arch/i386/boot/video.S 2004-08-28 23:59:05.902912720 -0700 @@ -1936,7 +1936,7 @@ store_edid: movl $0x13131313, %eax # memset block with 0x13 movw $32, %cx - movw $0x440, %di + movw $0x140, %di cld rep stosl @@ -1945,7 +1945,7 @@ store_edid: movw $0x01, %bx movw $0x00, %cx movw $0x01, %dx - movw $0x440, %di + movw $0x140, %di int $0x10 popw %di # restore all registers --- linux-2.6.9-rc2/Documentation/i386/zero-page.txt.org 2004-08-29 00:14:11.602225496 -0700 +++ linux-2.6.9-rc2/Documentation/i386/zero-page.txt 2004-08-29 00:17:10.445037256 -0700 @@ -28,7 +28,8 @@ Offset Type Description 0xa0 16 bytes System description table truncated to 16 bytes. ( struct sys_desc_table_struct ) - 0xb0 - 0x1c3 Free. Add more parameters here if you really need them. + 0xb0 - 0x13f Free. Add more parameters here if you really need them. + 0x140- 0x1be EDID_INFO Video mode setup 0x1c4 unsigned long EFI system table pointer 0x1c8 unsigned long EFI memory descriptor size