lkml.org 
[lkml]   [2013]   [Nov]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Subject[RFC PATCH 3/3] x86, boot: Change the BIOS corruption checker to scan 640K
Date
From: "H. Peter Anvin" <hpa@linux.intel.com>

Change the BIOS corruption checker to scan 640K if enabled. This is
the normal amount that we otherwise would reserve with the new default
settings; change the Kconfig help message to indicate that this is now
intended as a diagnostic tool when one is considering enabling any
chunk of low memory.

Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
Cc: Olof Johansson <olof@lixom.net>
Link: http://lkml.kernel.org/r/528168CB.7070602@linux.intel.com
---
arch/x86/Kconfig | 25 +++++++++++--------------
arch/x86/kernel/check.c | 10 +++++-----
2 files changed, 16 insertions(+), 19 deletions(-)

diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index 7631122..554aedd 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -1384,24 +1384,21 @@ config HIGHPTE
config X86_CHECK_BIOS_CORRUPTION
bool "Check for low memory corruption"
---help---
- Periodically check for memory corruption in low memory, which
- is suspected to be caused by BIOS. Even when enabled in the
- configuration, it is disabled at runtime. Enable it by
- setting "memory_corruption_check=1" on the kernel command
- line. By default it scans the low 64k of memory every 60
- seconds; see the memory_corruption_check_size and
+ Periodically check for memory corruption in low memory,
+ which is suspected to be caused by BIOS. Even when enabled
+ in the configuration, it is disabled at runtime. Enable it
+ by setting "memory_corruption_check=1" on the kernel command
+ line. By default it reserves and scans the low 640K of
+ memory every 60 seconds; see the
+ memory_corruption_check_size and
memory_corruption_check_period parameters in
Documentation/kernel-parameters.txt to adjust this.

- When enabled with the default parameters, this option has
- almost no overhead, as it reserves a relatively small amount
- of memory and scans it infrequently. It both detects corruption
- and prevents it from affecting the running system.
-
- It is, however, intended as a diagnostic tool; if repeatable
+ It is intended as a diagnostic tool; if repeatable
BIOS-originated corruption always affects the same memory,
- you can use memmap= to prevent the kernel from using that
- memory.
+ you should use the memmap= or reservelow= runtime options or
+ the CONFIG_X86_RESERVE_LOW compile time option to prevent
+ the kernel from using that memory.

config X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK
bool "Set the default setting of memory_corruption_check"
diff --git a/arch/x86/kernel/check.c b/arch/x86/kernel/check.c
index e2dbcb7..c00182d 100644
--- a/arch/x86/kernel/check.c
+++ b/arch/x86/kernel/check.c
@@ -7,16 +7,16 @@
#include <asm/proto.h>

/*
- * Some BIOSes seem to corrupt the low 64k of memory during events
- * like suspend/resume and unplugging an HDMI cable. Reserve all
- * remaining free memory in that area and fill it with a distinct
- * pattern.
+ * Some BIOSes and even some hardware devices seem to corrupt the low
+ * 640K of memory during events like suspend/resume and unplugging an
+ * HDMI cable. Reserve all remaining free memory in that area and
+ * fill it with a distinct pattern.
*/
#define MAX_SCAN_AREAS 8

static int __read_mostly memory_corruption_check = -1;

-static unsigned __read_mostly corruption_check_size = 64*1024;
+static unsigned __read_mostly corruption_check_size = 640*1024;
static unsigned __read_mostly corruption_check_period = 60; /* seconds */

static struct scan_area {
--
1.8.3.1


\
 
 \ /
  Last update: 2013-11-12 01:41    [W:0.045 / U:1.624 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site