Package: memtest86+ Version: 4.00-2.1 Severity: normal Tags: patch *** Please type your report below this line ***
I have a system (unreleased "big server") where the BIOS reports more than 32 e820 entries to describe the RAM. memtest86+ has a hard-coded limit of 32 e820 entries, so it crashes on boot on this system. Since there are realistic systems that exceed this limit, I think it would be a good idea to apply the patch below to increase the limit. (The patch increases the stack size because increasing E820MAX increases the size of a few on-stack arrays to require that) I also reported this upstream at http://forum.canardpc.com/showthread.php?t=43234 -- System Information: Debian Release: squeeze/sid APT prefers testing APT policy: (500, 'testing') Architecture: amd64 (x86_64) Kernel: Linux 2.6.33-rc4 (SMP w/64 CPU cores) Locale: LANG=en_US, LC_CTYPE=en_US (charmap=ISO-8859-1) Shell: /bin/sh linked to /bin/dash Versions of packages memtest86+ depends on: ii debconf [debconf-2.0] 1.5.28 Debian configuration management sy memtest86+ recommends no packages. Versions of packages memtest86+ suggests: pn grub2 | grub <none> (no description available) pn hwtools <none> (no description available) pn kernel-patch-badram <none> (no description available) pn memtest86 <none> (no description available) pn memtester <none> (no description available) pn mtools <none> (no description available) -- debconf information excluded
diff -Naur memtest86+-4.00.orig/head.S memtest86+-4.00/head.S --- memtest86+-4.00.orig/head.S 2009-09-21 17:35:46.000000000 -0700 +++ memtest86+-4.00/head.S 2010-01-14 13:28:30.084943518 -0800 @@ -980,6 +980,6 @@ .bss .balign 16 stack: - . = . + 4096 + . = . + 8192 stack_top: .previous diff -Naur memtest86+-4.00.orig/test.h memtest86+-4.00/test.h --- memtest86+-4.00.orig/test.h 2009-09-21 17:35:46.000000000 -0700 +++ memtest86+-4.00/test.h 2010-01-14 13:29:26.807510442 -0800 @@ -14,9 +14,9 @@ #define E801 0x04 #define E820NR 0x08 /* # entries in E820MAP */ #define E820MAP 0x0c /* our map */ -#define E820MAX 32 /* number of entries in E820MAP */ +#define E820MAX 64 /* number of entries in E820MAP */ #define E820ENTRY_SIZE 20 -#define MEMINFO_SIZE 0x28c +#define MEMINFO_SIZE (0xc + E820MAX * E820ENTRY_SIZE) #define MAX_DMI_MEMDEVS 16 #ifndef __ASSEMBLY__