* [PATCH 0/7] x86: memtest update
@ 2009-02-13 14:46 Andreas Herrmann
2009-02-13 14:49 ` [PATCH 1/7] x86: memtest: reuse test patterns when memtest parameter exceeds number of available patterns Andreas Herrmann
` (6 more replies)
0 siblings, 7 replies; 16+ messages in thread
From: Andreas Herrmann @ 2009-02-13 14:46 UTC (permalink / raw)
To: Ingo Molnar, Thomas Gleixner, H. Peter Anvin; +Cc: linux-kernel
Hi,
Following patches contain minor fixes and changes of memtest code.
Please apply.
Thanks,
Andreas
^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH 1/7] x86: memtest: reuse test patterns when memtest parameter exceeds number of available patterns
2009-02-13 14:46 [PATCH 0/7] x86: memtest update Andreas Herrmann
@ 2009-02-13 14:49 ` Andreas Herrmann
2009-02-13 14:51 ` [PATCH 2/7] x86: memtest: introduce array to store memtest patterns Andreas Herrmann
` (5 subsequent siblings)
6 siblings, 0 replies; 16+ messages in thread
From: Andreas Herrmann @ 2009-02-13 14:49 UTC (permalink / raw)
To: Ingo Molnar, Thomas Gleixner, H. Peter Anvin; +Cc: linux-kernel
Impact: fix unexpected behaviour when pattern number is out of range
Current implementation provides 4 patterns for memtest. The code doesn't
check whether the memtest parameter value exceeds the maximum pattern number.
Instead the memtest code pretends to test with non-existing patterns, e.g.
when booting with memtest=10 I've observed the following
...
early_memtest: pattern num 10
0000001000 - 0000006000 pattern 0
...
0000001000 - 0000006000 pattern 1
...
0000001000 - 0000006000 pattern 2
...
0000001000 - 0000006000 pattern 3
...
0000001000 - 0000006000 pattern 4
...
0000001000 - 0000006000 pattern 5
...
0000001000 - 0000006000 pattern 6
...
0000001000 - 0000006000 pattern 7
...
0000001000 - 0000006000 pattern 8
...
0000001000 - 0000006000 pattern 9
...
But in fact Linux didn't test anything for patterns > 4 as the default
case in memtest() is to leave the function.
I suggest to use the memtest parameter as the number of tests to be
performed and to re-iterate over all existing patterns.
Signed-off-by: Andreas Herrmann <andreas.herrmann3@amd.com>
---
arch/x86/mm/memtest.c | 9 +++++++--
1 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/arch/x86/mm/memtest.c b/arch/x86/mm/memtest.c
index 9cab18b..00b8bdc 100644
--- a/arch/x86/mm/memtest.c
+++ b/arch/x86/mm/memtest.c
@@ -9,6 +9,8 @@
#include <asm/e820.h>
+#define _MAX_MEM_PATTERNS 4
+
static void __init memtest(unsigned long start_phys, unsigned long size,
unsigned pattern)
{
@@ -21,6 +23,8 @@ static void __init memtest(unsigned long start_phys, unsigned long size,
unsigned long count;
unsigned long incr;
+ pattern = pattern % _MAX_MEM_PATTERNS;
+
switch (pattern) {
case 0:
val = 0UL;
@@ -110,8 +114,9 @@ void __init early_memtest(unsigned long start, unsigned long end)
t_size = end - t_start;
printk(KERN_CONT "\n %010llx - %010llx pattern %d",
- (unsigned long long)t_start,
- (unsigned long long)t_start + t_size, pattern);
+ (unsigned long long)t_start,
+ (unsigned long long)t_start + t_size,
+ pattern % _MAX_MEM_PATTERNS);
memtest(t_start, t_size, pattern);
--
1.6.1.2
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH 2/7] x86: memtest: introduce array to store memtest patterns
2009-02-13 14:46 [PATCH 0/7] x86: memtest update Andreas Herrmann
2009-02-13 14:49 ` [PATCH 1/7] x86: memtest: reuse test patterns when memtest parameter exceeds number of available patterns Andreas Herrmann
@ 2009-02-13 14:51 ` Andreas Herrmann
2009-02-13 17:52 ` H. Peter Anvin
2009-02-13 14:52 ` [PATCH 3/7] x86: memtest: cleanup memtest function Andreas Herrmann
` (4 subsequent siblings)
6 siblings, 1 reply; 16+ messages in thread
From: Andreas Herrmann @ 2009-02-13 14:51 UTC (permalink / raw)
To: Ingo Molnar, Thomas Gleixner, H. Peter Anvin; +Cc: linux-kernel
Impact: code cleanup
Signed-off-by: Andreas Herrmann <andreas.herrmann3@amd.com>
---
arch/x86/mm/memtest.c | 61 ++++++++++++++++++------------------------------
1 files changed, 23 insertions(+), 38 deletions(-)
diff --git a/arch/x86/mm/memtest.c b/arch/x86/mm/memtest.c
index 00b8bdc..a8a6c51 100644
--- a/arch/x86/mm/memtest.c
+++ b/arch/x86/mm/memtest.c
@@ -9,47 +9,29 @@
#include <asm/e820.h>
-#define _MAX_MEM_PATTERNS 4
+static unsigned long patterns[] = {
+ 0UL,
+ -1UL,
+#ifdef CONFIG_X86_64
+ 0x5555555555555555UL,
+ 0xaaaaaaaaaaaaaaaaUL,
+#else
+ 0x55555555UL,
+ 0xaaaaaaaaUL,
+#endif
+};
static void __init memtest(unsigned long start_phys, unsigned long size,
- unsigned pattern)
+ unsigned long pattern)
{
unsigned long i;
unsigned long *start;
unsigned long start_bad;
unsigned long last_bad;
- unsigned long val;
unsigned long start_phys_aligned;
unsigned long count;
unsigned long incr;
- pattern = pattern % _MAX_MEM_PATTERNS;
-
- switch (pattern) {
- case 0:
- val = 0UL;
- break;
- case 1:
- val = -1UL;
- break;
- case 2:
-#ifdef CONFIG_X86_64
- val = 0x5555555555555555UL;
-#else
- val = 0x55555555UL;
-#endif
- break;
- case 3:
-#ifdef CONFIG_X86_64
- val = 0xaaaaaaaaaaaaaaaaUL;
-#else
- val = 0xaaaaaaaaUL;
-#endif
- break;
- default:
- return;
- }
-
incr = sizeof(unsigned long);
start_phys_aligned = ALIGN(start_phys, incr);
count = (size - (start_phys_aligned - start_phys))/incr;
@@ -58,15 +40,16 @@ static void __init memtest(unsigned long start_phys, unsigned long size,
last_bad = 0;
for (i = 0; i < count; i++)
- start[i] = val;
+ start[i] = pattern;
for (i = 0; i < count; i++, start++, start_phys_aligned += incr) {
- if (*start != val) {
+ if (*start != pattern) {
if (start_phys_aligned == last_bad + incr) {
last_bad += incr;
} else {
if (start_bad) {
printk(KERN_CONT "\n %016lx bad mem addr %010lx - %010lx reserved",
- val, start_bad, last_bad + incr);
+ pattern, start_bad,
+ last_bad + incr);
reserve_early(start_bad, last_bad + incr, "BAD RAM");
}
start_bad = last_bad = start_phys_aligned;
@@ -75,7 +58,7 @@ static void __init memtest(unsigned long start_phys, unsigned long size,
}
if (start_bad) {
printk(KERN_CONT "\n %016lx bad mem addr %010lx - %010lx reserved",
- val, start_bad, last_bad + incr);
+ pattern, start_bad, last_bad + incr);
reserve_early(start_bad, last_bad + incr, "BAD RAM");
}
}
@@ -95,13 +78,16 @@ early_param("memtest", parse_memtest);
void __init early_memtest(unsigned long start, unsigned long end)
{
u64 t_start, t_size;
- unsigned pattern;
+ unsigned int i;
+ unsigned long pattern;
if (!memtest_pattern)
return;
printk(KERN_INFO "early_memtest: pattern num %d", memtest_pattern);
- for (pattern = 0; pattern < memtest_pattern; pattern++) {
+ for (i = 0; i < memtest_pattern; i++) {
+ unsigned int idx = i % ARRAY_SIZE(patterns);
+ pattern = patterns[idx];
t_start = start;
t_size = 0;
while (t_start < end) {
@@ -115,8 +101,7 @@ void __init early_memtest(unsigned long start, unsigned long end)
printk(KERN_CONT "\n %010llx - %010llx pattern %d",
(unsigned long long)t_start,
- (unsigned long long)t_start + t_size,
- pattern % _MAX_MEM_PATTERNS);
+ (unsigned long long)t_start + t_size, idx);
memtest(t_start, t_size, pattern);
--
1.6.1.2
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH 3/7] x86: memtest: cleanup memtest function
2009-02-13 14:46 [PATCH 0/7] x86: memtest update Andreas Herrmann
2009-02-13 14:49 ` [PATCH 1/7] x86: memtest: reuse test patterns when memtest parameter exceeds number of available patterns Andreas Herrmann
2009-02-13 14:51 ` [PATCH 2/7] x86: memtest: introduce array to store memtest patterns Andreas Herrmann
@ 2009-02-13 14:52 ` Andreas Herrmann
2009-02-13 14:55 ` [PATCH 4/7] x86: memtest: adapt log messages Andreas Herrmann
` (3 subsequent siblings)
6 siblings, 0 replies; 16+ messages in thread
From: Andreas Herrmann @ 2009-02-13 14:52 UTC (permalink / raw)
To: Ingo Molnar, Thomas Gleixner, H. Peter Anvin; +Cc: linux-kernel
Impact: code cleanup
Signed-off-by: Andreas Herrmann <andreas.herrmann3@amd.com>
---
arch/x86/mm/memtest.c | 36 +++++++++++++++++++-----------------
1 files changed, 19 insertions(+), 17 deletions(-)
diff --git a/arch/x86/mm/memtest.c b/arch/x86/mm/memtest.c
index a8a6c51..82321d9 100644
--- a/arch/x86/mm/memtest.c
+++ b/arch/x86/mm/memtest.c
@@ -21,6 +21,15 @@ static unsigned long patterns[] = {
#endif
};
+static void reserve_bad_mem(unsigned long pattern, unsigned long start_bad,
+ unsigned long end_bad)
+{
+ printk(KERN_CONT "\n %016lx bad mem addr "
+ "%010lx - %010lx reserved",
+ pattern, start_bad, end_bad);
+ reserve_early(start_bad, end_bad, "BAD RAM");
+}
+
static void __init memtest(unsigned long start_phys, unsigned long size,
unsigned long pattern)
{
@@ -42,25 +51,18 @@ static void __init memtest(unsigned long start_phys, unsigned long size,
for (i = 0; i < count; i++)
start[i] = pattern;
for (i = 0; i < count; i++, start++, start_phys_aligned += incr) {
- if (*start != pattern) {
- if (start_phys_aligned == last_bad + incr) {
- last_bad += incr;
- } else {
- if (start_bad) {
- printk(KERN_CONT "\n %016lx bad mem addr %010lx - %010lx reserved",
- pattern, start_bad,
- last_bad + incr);
- reserve_early(start_bad, last_bad + incr, "BAD RAM");
- }
- start_bad = last_bad = start_phys_aligned;
- }
+ if (*start == pattern)
+ continue;
+ if (start_phys_aligned == last_bad + incr) {
+ last_bad += incr;
+ continue;
}
+ if (start_bad)
+ reserve_bad_mem(pattern, start_bad, last_bad + incr);
+ start_bad = last_bad = start_phys_aligned;
}
- if (start_bad) {
- printk(KERN_CONT "\n %016lx bad mem addr %010lx - %010lx reserved",
- pattern, start_bad, last_bad + incr);
- reserve_early(start_bad, last_bad + incr, "BAD RAM");
- }
+ if (start_bad)
+ reserve_bad_mem(pattern, start_bad, last_bad + incr);
}
/* default is disabled */
--
1.6.1.2
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH 4/7] x86: memtest: adapt log messages
2009-02-13 14:46 [PATCH 0/7] x86: memtest update Andreas Herrmann
` (2 preceding siblings ...)
2009-02-13 14:52 ` [PATCH 3/7] x86: memtest: cleanup memtest function Andreas Herrmann
@ 2009-02-13 14:55 ` Andreas Herrmann
2009-02-13 16:53 ` Ingo Molnar
2009-02-13 14:57 ` [PATCH 5/7] x86: memtest: add additional (silly) test patterns Andreas Herrmann
` (2 subsequent siblings)
6 siblings, 1 reply; 16+ messages in thread
From: Andreas Herrmann @ 2009-02-13 14:55 UTC (permalink / raw)
To: Ingo Molnar, Thomas Gleixner, H. Peter Anvin; +Cc: linux-kernel
Adapt log messages to
* print test pattern instead of pattern number,
* correct format for output on 32-bit
* show pattern as stored in memory.
Signed-off-by: Andreas Herrmann <andreas.herrmann3@amd.com>
---
arch/x86/mm/memtest.c | 23 +++++++++++++++--------
1 files changed, 15 insertions(+), 8 deletions(-)
diff --git a/arch/x86/mm/memtest.c b/arch/x86/mm/memtest.c
index 82321d9..54c143b 100644
--- a/arch/x86/mm/memtest.c
+++ b/arch/x86/mm/memtest.c
@@ -24,9 +24,13 @@ static unsigned long patterns[] = {
static void reserve_bad_mem(unsigned long pattern, unsigned long start_bad,
unsigned long end_bad)
{
- printk(KERN_CONT "\n %016lx bad mem addr "
- "%010lx - %010lx reserved",
- pattern, start_bad, end_bad);
+#ifdef CONFIG_X86_64
+ printk(KERN_CONT "\n %016llx bad mem addr %010lx - %010lx reserved",
+ cpu_to_be64(pattern), start_bad, end_bad);
+#else
+ printk(KERN_CONT "\n %08x bad mem addr %010lx - %010lx reserved",
+ cpu_to_be32(pattern), start_bad, end_bad);
+#endif
reserve_early(start_bad, end_bad, "BAD RAM");
}
@@ -86,7 +90,7 @@ void __init early_memtest(unsigned long start, unsigned long end)
if (!memtest_pattern)
return;
- printk(KERN_INFO "early_memtest: pattern num %d", memtest_pattern);
+ printk(KERN_INFO "early_memtest: number of tests %d", memtest_pattern);
for (i = 0; i < memtest_pattern; i++) {
unsigned int idx = i % ARRAY_SIZE(patterns);
pattern = patterns[idx];
@@ -101,10 +105,13 @@ void __init early_memtest(unsigned long start, unsigned long end)
if (t_start + t_size > end)
t_size = end - t_start;
- printk(KERN_CONT "\n %010llx - %010llx pattern %d",
- (unsigned long long)t_start,
- (unsigned long long)t_start + t_size, idx);
-
+#ifdef CONFIG_X86_64
+ printk(KERN_CONT "\n %010llx - %010llx pattern %016llx",
+ t_start, t_start + t_size, cpu_to_be64(pattern));
+#else
+ printk(KERN_CONT "\n %010llx - %010llx pattern %08x",
+ t_start, t_start + t_size, cpu_to_be32(pattern));
+#endif
memtest(t_start, t_size, pattern);
t_start += t_size;
--
1.6.1.2
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH 5/7] x86: memtest: add additional (silly) test patterns
2009-02-13 14:46 [PATCH 0/7] x86: memtest update Andreas Herrmann
` (3 preceding siblings ...)
2009-02-13 14:55 ` [PATCH 4/7] x86: memtest: adapt log messages Andreas Herrmann
@ 2009-02-13 14:57 ` Andreas Herrmann
2009-02-13 14:59 ` [PATCH 6/7] x86: memtest: wipe out test pattern from memory Andreas Herrmann
2009-02-13 15:00 ` [PATCH 7/7] x86: update description for memtest boot parameter Andreas Herrmann
6 siblings, 0 replies; 16+ messages in thread
From: Andreas Herrmann @ 2009-02-13 14:57 UTC (permalink / raw)
To: Ingo Molnar, Thomas Gleixner, H. Peter Anvin; +Cc: linux-kernel
Signed-off-by: Andreas Herrmann <andreas.herrmann3@amd.com>
---
arch/x86/mm/memtest.c | 22 ++++++++++++++++------
1 files changed, 16 insertions(+), 6 deletions(-)
diff --git a/arch/x86/mm/memtest.c b/arch/x86/mm/memtest.c
index 54c143b..e3e986d 100644
--- a/arch/x86/mm/memtest.c
+++ b/arch/x86/mm/memtest.c
@@ -9,15 +9,25 @@
#include <asm/e820.h>
+#ifdef CONFIG_X86_64
+#define _regular_pattern(p) 0x##p##p##p##p##p##p##p##p##UL
+#else
+#define _regular_pattern(p) 0x##p##p##p##p##UL
+#endif
+
static unsigned long patterns[] = {
- 0UL,
- -1UL,
+ _regular_pattern(00),_regular_pattern(ff),
+ _regular_pattern(55),_regular_pattern(aa),
+ _regular_pattern(11),_regular_pattern(22),
+ _regular_pattern(44),_regular_pattern(88),
+ _regular_pattern(33),_regular_pattern(66),
+ _regular_pattern(99),_regular_pattern(cc),
+ _regular_pattern(77),_regular_pattern(bb),
+ _regular_pattern(dd),_regular_pattern(ee),
#ifdef CONFIG_X86_64
- 0x5555555555555555UL,
- 0xaaaaaaaaaaaaaaaaUL,
+ 0x7a6c7258554e494cUL, /* 64-bit only ;-) */
#else
- 0x55555555UL,
- 0xaaaaaaaaUL,
+ 0xefbeadde,
#endif
};
--
1.6.1.2
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH 6/7] x86: memtest: wipe out test pattern from memory
2009-02-13 14:46 [PATCH 0/7] x86: memtest update Andreas Herrmann
` (4 preceding siblings ...)
2009-02-13 14:57 ` [PATCH 5/7] x86: memtest: add additional (silly) test patterns Andreas Herrmann
@ 2009-02-13 14:59 ` Andreas Herrmann
2009-02-13 15:00 ` [PATCH 7/7] x86: update description for memtest boot parameter Andreas Herrmann
6 siblings, 0 replies; 16+ messages in thread
From: Andreas Herrmann @ 2009-02-13 14:59 UTC (permalink / raw)
To: Ingo Molnar, Thomas Gleixner, H. Peter Anvin; +Cc: linux-kernel
Signed-off-by: Andreas Herrmann <andreas.herrmann3@amd.com>
---
arch/x86/mm/memtest.c | 7 +++++++
1 files changed, 7 insertions(+), 0 deletions(-)
diff --git a/arch/x86/mm/memtest.c b/arch/x86/mm/memtest.c
index e3e986d..bea66d5 100644
--- a/arch/x86/mm/memtest.c
+++ b/arch/x86/mm/memtest.c
@@ -126,6 +126,13 @@ void __init early_memtest(unsigned long start, unsigned long end)
t_start += t_size;
}
+ if (idx && (i == (memtest_pattern - 1))) {
+ i = -1;
+ memtest_pattern = 1;
+ printk(KERN_CONT "\n");
+ printk(KERN_INFO "early_memtest: wipe out last pattern");
+ continue; /* one more test to wipe out patterns */
+ }
}
printk(KERN_CONT "\n");
}
--
1.6.1.2
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH 7/7] x86: update description for memtest boot parameter
2009-02-13 14:46 [PATCH 0/7] x86: memtest update Andreas Herrmann
` (5 preceding siblings ...)
2009-02-13 14:59 ` [PATCH 6/7] x86: memtest: wipe out test pattern from memory Andreas Herrmann
@ 2009-02-13 15:00 ` Andreas Herrmann
6 siblings, 0 replies; 16+ messages in thread
From: Andreas Herrmann @ 2009-02-13 15:00 UTC (permalink / raw)
To: Ingo Molnar, Thomas Gleixner, H. Peter Anvin; +Cc: linux-kernel
Signed-off-by: Andreas Herrmann <andreas.herrmann3@amd.com>
---
Documentation/kernel-parameters.txt | 7 ++++++-
1 files changed, 6 insertions(+), 1 deletions(-)
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
index b182626..a59c71d 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -1308,8 +1308,13 @@ and is between 256 and 4096 characters. It is defined in the file
memtest= [KNL,X86] Enable memtest
Format: <integer>
- range: 0,4 : pattern number
default : 0 <disable>
+ Specifies the number of memtest passes to be
+ performed. Each pass selects another test
+ pattern from a given set of patterns. Memtest
+ fills the memory with this pattern, validates
+ memory contents and reserves bad memory
+ regions that are detected.
meye.*= [HW] Set MotionEye Camera parameters
See Documentation/video4linux/meye.txt.
--
1.6.1.2
^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [PATCH 4/7] x86: memtest: adapt log messages
2009-02-13 14:55 ` [PATCH 4/7] x86: memtest: adapt log messages Andreas Herrmann
@ 2009-02-13 16:53 ` Ingo Molnar
2009-02-13 17:04 ` Jaswinder Singh Rajput
2009-02-17 10:29 ` Andreas Herrmann
0 siblings, 2 replies; 16+ messages in thread
From: Ingo Molnar @ 2009-02-13 16:53 UTC (permalink / raw)
To: Andreas Herrmann, Yinghai Lu, Harvey Harrison
Cc: Thomas Gleixner, H. Peter Anvin, linux-kernel
* Andreas Herrmann <andreas.herrmann3@amd.com> wrote:
> +#ifdef CONFIG_X86_64
> + printk(KERN_CONT "\n %010llx - %010llx pattern %016llx",
> + t_start, t_start + t_size, cpu_to_be64(pattern));
> +#else
> + printk(KERN_CONT "\n %010llx - %010llx pattern %08x",
> + t_start, t_start + t_size, cpu_to_be32(pattern));
> +#endif
hm, is there really no cleaner way to do this?
Ingo
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH 4/7] x86: memtest: adapt log messages
2009-02-13 16:53 ` Ingo Molnar
@ 2009-02-13 17:04 ` Jaswinder Singh Rajput
2009-02-13 17:46 ` H. Peter Anvin
2009-02-17 10:29 ` Andreas Herrmann
1 sibling, 1 reply; 16+ messages in thread
From: Jaswinder Singh Rajput @ 2009-02-13 17:04 UTC (permalink / raw)
To: Ingo Molnar
Cc: Andreas Herrmann, Yinghai Lu, Harvey Harrison, Thomas Gleixner,
H. Peter Anvin, linux-kernel, David Woodhouse
On Fri, 2009-02-13 at 17:53 +0100, Ingo Molnar wrote:
> * Andreas Herrmann <andreas.herrmann3@amd.com> wrote:
>
> > +#ifdef CONFIG_X86_64
> > + printk(KERN_CONT "\n %010llx - %010llx pattern %016llx",
> > + t_start, t_start + t_size, cpu_to_be64(pattern));
> > +#else
> > + printk(KERN_CONT "\n %010llx - %010llx pattern %08x",
> > + t_start, t_start + t_size, cpu_to_be32(pattern));
> > +#endif
>
> hm, is there really no cleaner way to do this?
>
Can we use this:
+ printk(KERN_CONT "\n %010llx - %010llx pattern %016llx",
+ t_start, t_start + t_size, cpu_to_be64(pattern));
--
JSR
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH 4/7] x86: memtest: adapt log messages
2009-02-13 17:04 ` Jaswinder Singh Rajput
@ 2009-02-13 17:46 ` H. Peter Anvin
2009-02-17 10:27 ` Andreas Herrmann
0 siblings, 1 reply; 16+ messages in thread
From: H. Peter Anvin @ 2009-02-13 17:46 UTC (permalink / raw)
To: Jaswinder Singh Rajput
Cc: Ingo Molnar, Andreas Herrmann, Yinghai Lu, Harvey Harrison,
Thomas Gleixner, linux-kernel, David Woodhouse
Jaswinder Singh Rajput wrote:
> On Fri, 2009-02-13 at 17:53 +0100, Ingo Molnar wrote:
>> * Andreas Herrmann <andreas.herrmann3@amd.com> wrote:
>>
>>> +#ifdef CONFIG_X86_64
>>> + printk(KERN_CONT "\n %010llx - %010llx pattern %016llx",
>>> + t_start, t_start + t_size, cpu_to_be64(pattern));
>>> +#else
>>> + printk(KERN_CONT "\n %010llx - %010llx pattern %08x",
>>> + t_start, t_start + t_size, cpu_to_be32(pattern));
>>> +#endif
>> hm, is there really no cleaner way to do this?
>
> Can we use this:
>
> + printk(KERN_CONT "\n %010llx - %010llx pattern %016llx",
> + t_start, t_start + t_size, cpu_to_be64(pattern));
>
Only if you don't mind 8 extra zeros on 32 bits.
There are other problems with this, too. There is a KERN_CONT at the
end of it, but it starts a new line, and then doesn't have another
priority flag.
-hpa
--
H. Peter Anvin, Intel Open Source Technology Center
I work for Intel. I don't speak on their behalf.
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH 2/7] x86: memtest: introduce array to store memtest patterns
2009-02-13 14:51 ` [PATCH 2/7] x86: memtest: introduce array to store memtest patterns Andreas Herrmann
@ 2009-02-13 17:52 ` H. Peter Anvin
2009-02-17 10:24 ` Andreas Herrmann
0 siblings, 1 reply; 16+ messages in thread
From: H. Peter Anvin @ 2009-02-13 17:52 UTC (permalink / raw)
To: Andreas Herrmann; +Cc: Ingo Molnar, Thomas Gleixner, linux-kernel
Andreas Herrmann wrote:
> -#define _MAX_MEM_PATTERNS 4
> +static unsigned long patterns[] = {
> + 0UL,
> + -1UL,
> +#ifdef CONFIG_X86_64
> + 0x5555555555555555UL,
> + 0xaaaaaaaaaaaaaaaaUL,
> +#else
> + 0x55555555UL,
> + 0xaaaaaaaaUL,
> +#endif
> +};
Why not just use u64 for the pattern even on 32 bits?
-hpa
--
H. Peter Anvin, Intel Open Source Technology Center
I work for Intel. I don't speak on their behalf.
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH 2/7] x86: memtest: introduce array to store memtest patterns
2009-02-13 17:52 ` H. Peter Anvin
@ 2009-02-17 10:24 ` Andreas Herrmann
2009-02-17 20:58 ` Yinghai Lu
0 siblings, 1 reply; 16+ messages in thread
From: Andreas Herrmann @ 2009-02-17 10:24 UTC (permalink / raw)
To: H. Peter Anvin, Yinghai Lu; +Cc: Ingo Molnar, Thomas Gleixner, linux-kernel
On Fri, Feb 13, 2009 at 09:52:31AM -0800, H. Peter Anvin wrote:
> Andreas Herrmann wrote:
> > -#define _MAX_MEM_PATTERNS 4
> > +static unsigned long patterns[] = {
> > + 0UL,
> > + -1UL,
> > +#ifdef CONFIG_X86_64
> > + 0x5555555555555555UL,
> > + 0xaaaaaaaaaaaaaaaaUL,
> > +#else
> > + 0x55555555UL,
> > + 0xaaaaaaaaUL,
> > +#endif
> > +};
>
> Why not just use u64 for the pattern even on 32 bits?
I just assumed that this was a settled thing.
Yinghai, was there a specific reason why you did not use an u64 for
the memory test pattern on 32-bit?
(See commit 1f067167a83d1c7f80437fd1d32b55508aaca009 "x86: seperate
memtest from init_64.c")
If not I'll adapt this and send out a new patch set.
Regards,
Andreas
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH 4/7] x86: memtest: adapt log messages
2009-02-13 17:46 ` H. Peter Anvin
@ 2009-02-17 10:27 ` Andreas Herrmann
0 siblings, 0 replies; 16+ messages in thread
From: Andreas Herrmann @ 2009-02-17 10:27 UTC (permalink / raw)
To: H. Peter Anvin
Cc: Jaswinder Singh Rajput, Ingo Molnar, Yinghai Lu, Harvey Harrison,
Thomas Gleixner, linux-kernel, David Woodhouse
On Fri, Feb 13, 2009 at 09:46:15AM -0800, H. Peter Anvin wrote:
> Jaswinder Singh Rajput wrote:
> > On Fri, 2009-02-13 at 17:53 +0100, Ingo Molnar wrote:
> >> * Andreas Herrmann <andreas.herrmann3@amd.com> wrote:
> >>
> >>> +#ifdef CONFIG_X86_64
> >>> + printk(KERN_CONT "\n %010llx - %010llx pattern %016llx",
> >>> + t_start, t_start + t_size, cpu_to_be64(pattern));
> >>> +#else
> >>> + printk(KERN_CONT "\n %010llx - %010llx pattern %08x",
> >>> + t_start, t_start + t_size, cpu_to_be32(pattern));
> >>> +#endif
> >> hm, is there really no cleaner way to do this?
> >
> > Can we use this:
> >
> > + printk(KERN_CONT "\n %010llx - %010llx pattern %016llx",
> > + t_start, t_start + t_size, cpu_to_be64(pattern));
> >
>
> Only if you don't mind 8 extra zeros on 32 bits.
>
> There are other problems with this, too. There is a KERN_CONT at the
> end of it, but it starts a new line, and then doesn't have another
> priority flag.
Ok, I see. I'll replace KERN_CONT with an appropriate priority flag
and move the newline to the end of the format string.
Regards,
Andreas
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH 4/7] x86: memtest: adapt log messages
2009-02-13 16:53 ` Ingo Molnar
2009-02-13 17:04 ` Jaswinder Singh Rajput
@ 2009-02-17 10:29 ` Andreas Herrmann
1 sibling, 0 replies; 16+ messages in thread
From: Andreas Herrmann @ 2009-02-17 10:29 UTC (permalink / raw)
To: Ingo Molnar
Cc: Yinghai Lu, Harvey Harrison, Thomas Gleixner, H. Peter Anvin,
linux-kernel
On Fri, Feb 13, 2009 at 05:53:02PM +0100, Ingo Molnar wrote:
>
> * Andreas Herrmann <andreas.herrmann3@amd.com> wrote:
>
> > +#ifdef CONFIG_X86_64
> > + printk(KERN_CONT "\n %010llx - %010llx pattern %016llx",
> > + t_start, t_start + t_size, cpu_to_be64(pattern));
> > +#else
> > + printk(KERN_CONT "\n %010llx - %010llx pattern %08x",
> > + t_start, t_start + t_size, cpu_to_be32(pattern));
> > +#endif
>
> hm, is there really no cleaner way to do this?
There is -- but only if 32-bit-code is changed to use u64 for the test
pattern.
Andreas
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH 2/7] x86: memtest: introduce array to store memtest patterns
2009-02-17 10:24 ` Andreas Herrmann
@ 2009-02-17 20:58 ` Yinghai Lu
0 siblings, 0 replies; 16+ messages in thread
From: Yinghai Lu @ 2009-02-17 20:58 UTC (permalink / raw)
To: Andreas Herrmann
Cc: H. Peter Anvin, Ingo Molnar, Thomas Gleixner, linux-kernel
On Tue, Feb 17, 2009 at 2:24 AM, Andreas Herrmann
<andreas.herrmann3@amd.com> wrote:
> On Fri, Feb 13, 2009 at 09:52:31AM -0800, H. Peter Anvin wrote:
>> Andreas Herrmann wrote:
>> > -#define _MAX_MEM_PATTERNS 4
>> > +static unsigned long patterns[] = {
>> > + 0UL,
>> > + -1UL,
>> > +#ifdef CONFIG_X86_64
>> > + 0x5555555555555555UL,
>> > + 0xaaaaaaaaaaaaaaaaUL,
>> > +#else
>> > + 0x55555555UL,
>> > + 0xaaaaaaaaUL,
>> > +#endif
>> > +};
>>
>> Why not just use u64 for the pattern even on 32 bits?
>
> I just assumed that this was a settled thing.
>
> Yinghai, was there a specific reason why you did not use an u64 for
> the memory test pattern on 32-bit?
> (See commit 1f067167a83d1c7f80437fd1d32b55508aaca009 "x86: seperate
> memtest from init_64.c")
>
> If not I'll adapt this and send out a new patch set.
should be ok, but please make sure target range is u64 alignment.
YH
^ permalink raw reply [flat|nested] 16+ messages in thread
end of thread, other threads:[~2009-02-17 20:58 UTC | newest]
Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-02-13 14:46 [PATCH 0/7] x86: memtest update Andreas Herrmann
2009-02-13 14:49 ` [PATCH 1/7] x86: memtest: reuse test patterns when memtest parameter exceeds number of available patterns Andreas Herrmann
2009-02-13 14:51 ` [PATCH 2/7] x86: memtest: introduce array to store memtest patterns Andreas Herrmann
2009-02-13 17:52 ` H. Peter Anvin
2009-02-17 10:24 ` Andreas Herrmann
2009-02-17 20:58 ` Yinghai Lu
2009-02-13 14:52 ` [PATCH 3/7] x86: memtest: cleanup memtest function Andreas Herrmann
2009-02-13 14:55 ` [PATCH 4/7] x86: memtest: adapt log messages Andreas Herrmann
2009-02-13 16:53 ` Ingo Molnar
2009-02-13 17:04 ` Jaswinder Singh Rajput
2009-02-13 17:46 ` H. Peter Anvin
2009-02-17 10:27 ` Andreas Herrmann
2009-02-17 10:29 ` Andreas Herrmann
2009-02-13 14:57 ` [PATCH 5/7] x86: memtest: add additional (silly) test patterns Andreas Herrmann
2009-02-13 14:59 ` [PATCH 6/7] x86: memtest: wipe out test pattern from memory Andreas Herrmann
2009-02-13 15:00 ` [PATCH 7/7] x86: update description for memtest boot parameter Andreas Herrmann
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).