aboutsummaryrefslogtreecommitdiffstats
path: root/include/asm-x86_64
diff options
context:
space:
mode:
authorAndi Kleen <ak@suse.de>2006-05-08 09:17:28 -0400
committerLinus Torvalds <torvalds@g5.osdl.org>2006-05-08 12:34:56 -0400
commitac71d12c990526b01ef6cfe50907ef8530a30331 (patch)
tree30d00436366c107eeac83e1af12b3e09a41e7607 /include/asm-x86_64
parent8b1ffe9550e71224c43d8c754245bd76f4ea9bb8 (diff)
[PATCH] x86_64: Avoid EBDA area in early boot allocator
Based on analysis&patch from Robert Hentosch Observed on a Dell PE6850 with 16GB The problem occurs very early on, when the kernel allocates space for the temporary memory map called bootmap. The bootmap overlaps the EBDA region. EBDA region is not historically reserved in the e820 mapping. When the bootmap is freed it marks the EBDA region as usable. If you notice in setup.c there is already code to work around the EBDA in reserve_ebda_region(), this check however occurs after the bootmap is allocated and doesn't prevent the bootmap from using this range. AK: I redid the original patch. Thanks also to Jan Beulich for spotting some mistakes. Cc: Robert_Hentosch@dell.com Cc: jbeulich@novell.com Signed-off-by: Andi Kleen <ak@suse.de> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'include/asm-x86_64')
-rw-r--r--include/asm-x86_64/e820.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/include/asm-x86_64/e820.h b/include/asm-x86_64/e820.h
index 93b51df51687..670a3388e70a 100644
--- a/include/asm-x86_64/e820.h
+++ b/include/asm-x86_64/e820.h
@@ -59,6 +59,8 @@ extern void __init parse_memopt(char *p, char **end);
59extern void __init parse_memmapopt(char *p, char **end); 59extern void __init parse_memmapopt(char *p, char **end);
60 60
61extern struct e820map e820; 61extern struct e820map e820;
62
63extern unsigned ebda_addr, ebda_size;
62#endif/*!__ASSEMBLY__*/ 64#endif/*!__ASSEMBLY__*/
63 65
64#endif/*__E820_HEADER*/ 66#endif/*__E820_HEADER*/