diff options
author | Alexander Holler <holler@ahsoftware.de> | 2013-02-16 10:38:17 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2013-02-18 03:28:42 -0500 |
commit | 20bf062c6575e162ede00308ca3a5714ca112009 (patch) | |
tree | 73d5a41bd4026e3b8159b0a6f41fd63c2e395465 | |
parent | 9611dc7a8de8a5c6244886dad020995b1a896236 (diff) |
x86/memtest: Shorten time for tests
By just reversing the order memtest is using the test patterns,
an additional round to zero the memory is not necessary.
This might save up to a second or even more for setups which are
doing tests on every boot.
Signed-off-by: Alexander Holler <holler@ahsoftware.de>
Cc: Yinghai Lu <yinghai@kernel.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Thomas Gleixner <tglx@linutronix.de>
Link: http://lkml.kernel.org/r/1361029097-8308-1-git-send-email-holler@ahsoftware.de
Signed-off-by: Ingo Molnar <mingo@kernel.org>
-rw-r--r-- | arch/x86/mm/memtest.c | 10 |
1 files changed, 2 insertions, 8 deletions
diff --git a/arch/x86/mm/memtest.c b/arch/x86/mm/memtest.c index c80b9fb95734..8dabbed409ee 100644 --- a/arch/x86/mm/memtest.c +++ b/arch/x86/mm/memtest.c | |||
@@ -9,6 +9,7 @@ | |||
9 | #include <linux/memblock.h> | 9 | #include <linux/memblock.h> |
10 | 10 | ||
11 | static u64 patterns[] __initdata = { | 11 | static u64 patterns[] __initdata = { |
12 | /* The first entry has to be 0 to leave memtest with zeroed memory */ | ||
12 | 0, | 13 | 0, |
13 | 0xffffffffffffffffULL, | 14 | 0xffffffffffffffffULL, |
14 | 0x5555555555555555ULL, | 15 | 0x5555555555555555ULL, |
@@ -110,15 +111,8 @@ void __init early_memtest(unsigned long start, unsigned long end) | |||
110 | return; | 111 | return; |
111 | 112 | ||
112 | printk(KERN_INFO "early_memtest: # of tests: %d\n", memtest_pattern); | 113 | printk(KERN_INFO "early_memtest: # of tests: %d\n", memtest_pattern); |
113 | for (i = 0; i < memtest_pattern; i++) { | 114 | for (i = memtest_pattern-1; i < UINT_MAX; --i) { |
114 | idx = i % ARRAY_SIZE(patterns); | 115 | idx = i % ARRAY_SIZE(patterns); |
115 | do_one_pass(patterns[idx], start, end); | 116 | do_one_pass(patterns[idx], start, end); |
116 | } | 117 | } |
117 | |||
118 | if (idx > 0) { | ||
119 | printk(KERN_INFO "early_memtest: wipe out " | ||
120 | "test pattern from memory\n"); | ||
121 | /* additional test with pattern 0 will do this */ | ||
122 | do_one_pass(0, start, end); | ||
123 | } | ||
124 | } | 118 | } |