[PATCH v4] x86: memtest: WARN if bad RAM found

From: Jonathan Nieder
Date: Mon Apr 23 2012 - 22:50:32 EST

From: Ben Hutchings <ben@xxxxxxxxxxxxxxx>

The novice who enables CONFIG_MEMTEST may not realize that this is not
a particularly thorough test. If we find any bad bits of RAM then
there is a fair chance that there are other bad bits we fail to
detect; add a WARNING for this situation so people helping debug
ensuing problems can understand what happened.

The warning text gives advice to allow the sysadmin to address the
warning by fixing the underlying problem or running a more thorough
test and using the memmap= parameter to reserve bad areas.

Signed-off-by: Ben Hutchings <ben@xxxxxxxxxxxxxxx>
Signed-off-by: Jonathan Nieder <jrnieder@xxxxxxxxx>
Yinghai Lu wrote:

> The reason for adding early_memtest is for debug purpose.
> Sometimes BIOS mess up setting, on some booting memory is ok, but
> other booting the memory is not initialized properly.
> in that case: preboot memtest tools is not going to help.
[... and another hint about how memtest86 may be more suitable
than memtest86+ in some situations]

Makes perfect sense. How about this?

This punts to Documentation/memory.txt for advice, in the hope of
nudging people to improve that document where it is lacking (hint,


arch/x86/mm/memtest.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/arch/x86/mm/memtest.c b/arch/x86/mm/memtest.c
index c80b9fb95734..d26067d5ddec 100644
--- a/arch/x86/mm/memtest.c
+++ b/arch/x86/mm/memtest.c
@@ -30,6 +30,7 @@ static u64 patterns[] __initdata = {

static void __init reserve_bad_mem(u64 pattern, u64 start_bad, u64 end_bad)
+ WARN_ONCE(1, "Bad RAM detected. See Documentation/memory.txt for hints.");
printk(KERN_INFO " %016llx bad mem addr %010llx - %010llx reserved\n",
(unsigned long long) pattern,
(unsigned long long) start_bad,

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/