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 | } |
