aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/mm
diff options
context:
space:
mode:
authorJeremy Fitzhardinge <jeremy@goop.org>2008-09-07 04:51:32 -0400
committerIngo Molnar <mingo@elte.hu>2008-09-07 11:39:59 -0400
commit5394f80f92642c61fc2a95385be85f2fdcfb5adb (patch)
tree313dd51430cf7ff7f7161019bb3d3bf89320357c /arch/x86/mm
parent7686ad5606f08d9dfb33a2087a36c8366366015b (diff)
x86: check for and defend against BIOS memory corruption
Some BIOSes have been observed to corrupt memory in the low 64k. This change: - Reserves all memory which does not have to be in that area, to prevent it from being used as general memory by the kernel. Things like the SMP trampoline are still in the memory, however. - Clears the reserved memory so we can observe changes to it. - Adds a function check_for_bios_corruption() which checks and reports on memory becoming unexpectedly non-zero. Currently it's called in the x86 fault handler, and the powermanagement debug output. Signed-off-by: Jeremy Fitzhardinge <jeremy@goop.org> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86/mm')
-rw-r--r--arch/x86/mm/fault.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c
index 455f3fe67b42..5140bdf03020 100644
--- a/arch/x86/mm/fault.c
+++ b/arch/x86/mm/fault.c
@@ -848,6 +848,8 @@ no_context:
848 * Oops. The kernel tried to access some bad page. We'll have to 848 * Oops. The kernel tried to access some bad page. We'll have to
849 * terminate things with extreme prejudice. 849 * terminate things with extreme prejudice.
850 */ 850 */
851 check_for_bios_corruption();
852
851#ifdef CONFIG_X86_32 853#ifdef CONFIG_X86_32
852 bust_spinlocks(1); 854 bust_spinlocks(1);
853#else 855#else