aboutsummaryrefslogtreecommitdiffstats
path: root/include
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 /include
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 'include')
-rw-r--r--include/linux/kernel.h12
1 files changed, 12 insertions, 0 deletions
diff --git a/include/linux/kernel.h b/include/linux/kernel.h
index 2651f805ba6d..8017129e6b63 100644
--- a/include/linux/kernel.h
+++ b/include/linux/kernel.h
@@ -240,6 +240,18 @@ extern const char *print_tainted(void);
240extern void add_taint(unsigned); 240extern void add_taint(unsigned);
241extern int root_mountflags; 241extern int root_mountflags;
242 242
243#ifdef CONFIG_X86_CHECK_BIOS_CORRUPTION
244/*
245 * This is obviously not a great place for this, but we want to be
246 * able to scatter it around anywhere in the kernel.
247 */
248void check_for_bios_corruption(void);
249#else
250static inline void check_for_bios_corruption(void)
251{
252}
253#endif
254
243/* Values used for system_state */ 255/* Values used for system_state */
244extern enum system_states { 256extern enum system_states {
245 SYSTEM_BOOTING, 257 SYSTEM_BOOTING,