* [PATCH 1/6] mm: move memtest under /mm
2015-03-09 10:27 [PATCH 0/6] make memtest a generic kernel feature Vladimir Murzin
@ 2015-03-09 10:27 ` Vladimir Murzin
2015-03-09 10:27 ` [PATCH 2/6] memtest: use phys_addr_t for physical addresses Vladimir Murzin
` (5 subsequent siblings)
6 siblings, 0 replies; 10+ messages in thread
From: Vladimir Murzin @ 2015-03-09 10:27 UTC (permalink / raw)
To: linux-kernel, linux-mm, linux-arch, x86, linux-arm-kernel
Cc: tglx, mingo, hpa, akpm, lauraa, catalin.marinas, will.deacon,
linux, arnd, mark.rutland, ard.biesheuvel, baruch, rdunlap
There is nothing platform dependent in the core memtest code, so other platform
might benefit of this feature too.
Signed-off-by: Vladimir Murzin <vladimir.murzin@arm.com>
Acked-by: Will Deacon <will.deacon@arm.com>
Tested-by: Mark Rutland <mark.rutland@arm.com>
---
arch/x86/Kconfig | 11 ----
arch/x86/include/asm/e820.h | 8 ---
arch/x86/mm/Makefile | 2 -
arch/x86/mm/memtest.c | 118 -------------------------------------------
include/linux/memblock.h | 8 +++
lib/Kconfig.debug | 11 ++++
mm/Makefile | 1 +
mm/memtest.c | 118 +++++++++++++++++++++++++++++++++++++++++++
8 files changed, 138 insertions(+), 139 deletions(-)
delete mode 100644 arch/x86/mm/memtest.c
create mode 100644 mm/memtest.c
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index b7d31ca..d16e510 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -716,17 +716,6 @@ endif #HYPERVISOR_GUEST
config NO_BOOTMEM
def_bool y
-config MEMTEST
- bool "Memtest"
- ---help---
- This option adds a kernel parameter 'memtest', which allows memtest
- to be set.
- memtest=0, mean disabled; -- default
- memtest=1, mean do 1 test pattern;
- ...
- memtest=4, mean do 4 test patterns.
- If you are unsure how to answer this question, answer N.
-
source "arch/x86/Kconfig.cpu"
config HPET_TIMER
diff --git a/arch/x86/include/asm/e820.h b/arch/x86/include/asm/e820.h
index 779c2ef..3ab0537 100644
--- a/arch/x86/include/asm/e820.h
+++ b/arch/x86/include/asm/e820.h
@@ -40,14 +40,6 @@ static inline void e820_mark_nosave_regions(unsigned long limit_pfn)
}
#endif
-#ifdef CONFIG_MEMTEST
-extern void early_memtest(unsigned long start, unsigned long end);
-#else
-static inline void early_memtest(unsigned long start, unsigned long end)
-{
-}
-#endif
-
extern unsigned long e820_end_of_ram_pfn(void);
extern unsigned long e820_end_of_low_ram_pfn(void);
extern u64 early_reserve_e820(u64 sizet, u64 align);
diff --git a/arch/x86/mm/Makefile b/arch/x86/mm/Makefile
index c4cc740..a482d10 100644
--- a/arch/x86/mm/Makefile
+++ b/arch/x86/mm/Makefile
@@ -32,6 +32,4 @@ obj-$(CONFIG_AMD_NUMA) += amdtopology.o
obj-$(CONFIG_ACPI_NUMA) += srat.o
obj-$(CONFIG_NUMA_EMU) += numa_emulation.o
-obj-$(CONFIG_MEMTEST) += memtest.o
-
obj-$(CONFIG_X86_INTEL_MPX) += mpx.o
diff --git a/arch/x86/mm/memtest.c b/arch/x86/mm/memtest.c
deleted file mode 100644
index 1e9da79..0000000
--- a/arch/x86/mm/memtest.c
+++ /dev/null
@@ -1,118 +0,0 @@
-#include <linux/kernel.h>
-#include <linux/errno.h>
-#include <linux/string.h>
-#include <linux/types.h>
-#include <linux/mm.h>
-#include <linux/smp.h>
-#include <linux/init.h>
-#include <linux/pfn.h>
-#include <linux/memblock.h>
-
-static u64 patterns[] __initdata = {
- /* The first entry has to be 0 to leave memtest with zeroed memory */
- 0,
- 0xffffffffffffffffULL,
- 0x5555555555555555ULL,
- 0xaaaaaaaaaaaaaaaaULL,
- 0x1111111111111111ULL,
- 0x2222222222222222ULL,
- 0x4444444444444444ULL,
- 0x8888888888888888ULL,
- 0x3333333333333333ULL,
- 0x6666666666666666ULL,
- 0x9999999999999999ULL,
- 0xccccccccccccccccULL,
- 0x7777777777777777ULL,
- 0xbbbbbbbbbbbbbbbbULL,
- 0xddddddddddddddddULL,
- 0xeeeeeeeeeeeeeeeeULL,
- 0x7a6c7258554e494cULL, /* yeah ;-) */
-};
-
-static void __init reserve_bad_mem(u64 pattern, u64 start_bad, u64 end_bad)
-{
- printk(KERN_INFO " %016llx bad mem addr %010llx - %010llx reserved\n",
- (unsigned long long) pattern,
- (unsigned long long) start_bad,
- (unsigned long long) end_bad);
- memblock_reserve(start_bad, end_bad - start_bad);
-}
-
-static void __init memtest(u64 pattern, u64 start_phys, u64 size)
-{
- u64 *p, *start, *end;
- u64 start_bad, last_bad;
- u64 start_phys_aligned;
- const size_t incr = sizeof(pattern);
-
- start_phys_aligned = ALIGN(start_phys, incr);
- start = __va(start_phys_aligned);
- end = start + (size - (start_phys_aligned - start_phys)) / incr;
- start_bad = 0;
- last_bad = 0;
-
- for (p = start; p < end; p++)
- *p = pattern;
-
- for (p = start; p < end; p++, start_phys_aligned += incr) {
- if (*p == 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)
- reserve_bad_mem(pattern, start_bad, last_bad + incr);
-}
-
-static void __init do_one_pass(u64 pattern, u64 start, u64 end)
-{
- u64 i;
- phys_addr_t this_start, this_end;
-
- for_each_free_mem_range(i, NUMA_NO_NODE, &this_start, &this_end, NULL) {
- this_start = clamp_t(phys_addr_t, this_start, start, end);
- this_end = clamp_t(phys_addr_t, this_end, start, end);
- if (this_start < this_end) {
- printk(KERN_INFO " %010llx - %010llx pattern %016llx\n",
- (unsigned long long)this_start,
- (unsigned long long)this_end,
- (unsigned long long)cpu_to_be64(pattern));
- memtest(pattern, this_start, this_end - this_start);
- }
- }
-}
-
-/* default is disabled */
-static int memtest_pattern __initdata;
-
-static int __init parse_memtest(char *arg)
-{
- if (arg)
- memtest_pattern = simple_strtoul(arg, NULL, 0);
- else
- memtest_pattern = ARRAY_SIZE(patterns);
-
- return 0;
-}
-
-early_param("memtest", parse_memtest);
-
-void __init early_memtest(unsigned long start, unsigned long end)
-{
- unsigned int i;
- unsigned int idx = 0;
-
- if (!memtest_pattern)
- return;
-
- printk(KERN_INFO "early_memtest: # of tests: %d\n", memtest_pattern);
- for (i = memtest_pattern-1; i < UINT_MAX; --i) {
- idx = i % ARRAY_SIZE(patterns);
- do_one_pass(patterns[idx], start, end);
- }
-}
diff --git a/include/linux/memblock.h b/include/linux/memblock.h
index e8cc453..6724cb0 100644
--- a/include/linux/memblock.h
+++ b/include/linux/memblock.h
@@ -365,6 +365,14 @@ static inline unsigned long memblock_region_reserved_end_pfn(const struct memblo
#define __initdata_memblock
#endif
+#ifdef CONFIG_MEMTEST
+extern void early_memtest(unsigned long start, unsigned long end);
+#else
+static inline void early_memtest(unsigned long start, unsigned long end)
+{
+}
+#endif
+
#else
static inline phys_addr_t memblock_alloc(phys_addr_t size, phys_addr_t align)
{
diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
index c5cefb3..8eb064fd 100644
--- a/lib/Kconfig.debug
+++ b/lib/Kconfig.debug
@@ -1732,6 +1732,17 @@ config TEST_UDELAY
If unsure, say N.
+config MEMTEST
+ bool "Memtest"
+ ---help---
+ This option adds a kernel parameter 'memtest', which allows memtest
+ to be set.
+ memtest=0, mean disabled; -- default
+ memtest=1, mean do 1 test pattern;
+ ...
+ memtest=4, mean do 4 test patterns.
+ If you are unsure how to answer this question, answer N.
+
source "samples/Kconfig"
source "lib/Kconfig.kgdb"
diff --git a/mm/Makefile b/mm/Makefile
index 3c1caa2..e925708 100644
--- a/mm/Makefile
+++ b/mm/Makefile
@@ -76,3 +76,4 @@ obj-$(CONFIG_GENERIC_EARLY_IOREMAP) += early_ioremap.o
obj-$(CONFIG_CMA) += cma.o
obj-$(CONFIG_MEMORY_BALLOON) += balloon_compaction.o
obj-$(CONFIG_PAGE_EXTENSION) += page_ext.o
+obj-$(CONFIG_MEMTEST) += memtest.o
diff --git a/mm/memtest.c b/mm/memtest.c
new file mode 100644
index 0000000..1e9da79
--- /dev/null
+++ b/mm/memtest.c
@@ -0,0 +1,118 @@
+#include <linux/kernel.h>
+#include <linux/errno.h>
+#include <linux/string.h>
+#include <linux/types.h>
+#include <linux/mm.h>
+#include <linux/smp.h>
+#include <linux/init.h>
+#include <linux/pfn.h>
+#include <linux/memblock.h>
+
+static u64 patterns[] __initdata = {
+ /* The first entry has to be 0 to leave memtest with zeroed memory */
+ 0,
+ 0xffffffffffffffffULL,
+ 0x5555555555555555ULL,
+ 0xaaaaaaaaaaaaaaaaULL,
+ 0x1111111111111111ULL,
+ 0x2222222222222222ULL,
+ 0x4444444444444444ULL,
+ 0x8888888888888888ULL,
+ 0x3333333333333333ULL,
+ 0x6666666666666666ULL,
+ 0x9999999999999999ULL,
+ 0xccccccccccccccccULL,
+ 0x7777777777777777ULL,
+ 0xbbbbbbbbbbbbbbbbULL,
+ 0xddddddddddddddddULL,
+ 0xeeeeeeeeeeeeeeeeULL,
+ 0x7a6c7258554e494cULL, /* yeah ;-) */
+};
+
+static void __init reserve_bad_mem(u64 pattern, u64 start_bad, u64 end_bad)
+{
+ printk(KERN_INFO " %016llx bad mem addr %010llx - %010llx reserved\n",
+ (unsigned long long) pattern,
+ (unsigned long long) start_bad,
+ (unsigned long long) end_bad);
+ memblock_reserve(start_bad, end_bad - start_bad);
+}
+
+static void __init memtest(u64 pattern, u64 start_phys, u64 size)
+{
+ u64 *p, *start, *end;
+ u64 start_bad, last_bad;
+ u64 start_phys_aligned;
+ const size_t incr = sizeof(pattern);
+
+ start_phys_aligned = ALIGN(start_phys, incr);
+ start = __va(start_phys_aligned);
+ end = start + (size - (start_phys_aligned - start_phys)) / incr;
+ start_bad = 0;
+ last_bad = 0;
+
+ for (p = start; p < end; p++)
+ *p = pattern;
+
+ for (p = start; p < end; p++, start_phys_aligned += incr) {
+ if (*p == 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)
+ reserve_bad_mem(pattern, start_bad, last_bad + incr);
+}
+
+static void __init do_one_pass(u64 pattern, u64 start, u64 end)
+{
+ u64 i;
+ phys_addr_t this_start, this_end;
+
+ for_each_free_mem_range(i, NUMA_NO_NODE, &this_start, &this_end, NULL) {
+ this_start = clamp_t(phys_addr_t, this_start, start, end);
+ this_end = clamp_t(phys_addr_t, this_end, start, end);
+ if (this_start < this_end) {
+ printk(KERN_INFO " %010llx - %010llx pattern %016llx\n",
+ (unsigned long long)this_start,
+ (unsigned long long)this_end,
+ (unsigned long long)cpu_to_be64(pattern));
+ memtest(pattern, this_start, this_end - this_start);
+ }
+ }
+}
+
+/* default is disabled */
+static int memtest_pattern __initdata;
+
+static int __init parse_memtest(char *arg)
+{
+ if (arg)
+ memtest_pattern = simple_strtoul(arg, NULL, 0);
+ else
+ memtest_pattern = ARRAY_SIZE(patterns);
+
+ return 0;
+}
+
+early_param("memtest", parse_memtest);
+
+void __init early_memtest(unsigned long start, unsigned long end)
+{
+ unsigned int i;
+ unsigned int idx = 0;
+
+ if (!memtest_pattern)
+ return;
+
+ printk(KERN_INFO "early_memtest: # of tests: %d\n", memtest_pattern);
+ for (i = memtest_pattern-1; i < UINT_MAX; --i) {
+ idx = i % ARRAY_SIZE(patterns);
+ do_one_pass(patterns[idx], start, end);
+ }
+}
--
1.7.9.5
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 2/6] memtest: use phys_addr_t for physical addresses
2015-03-09 10:27 [PATCH 0/6] make memtest a generic kernel feature Vladimir Murzin
2015-03-09 10:27 ` [PATCH 1/6] mm: move memtest under /mm Vladimir Murzin
@ 2015-03-09 10:27 ` Vladimir Murzin
2015-03-09 10:27 ` [PATCH 3/6] arm64: add support for memtest Vladimir Murzin
` (4 subsequent siblings)
6 siblings, 0 replies; 10+ messages in thread
From: Vladimir Murzin @ 2015-03-09 10:27 UTC (permalink / raw)
To: linux-kernel, linux-mm, linux-arch, x86, linux-arm-kernel
Cc: tglx, mingo, hpa, akpm, lauraa, catalin.marinas, will.deacon,
linux, arnd, mark.rutland, ard.biesheuvel, baruch, rdunlap
Since memtest might be used by other architectures pass input parameters
as phys_addr_t instead of long to prevent overflow.
Signed-off-by: Vladimir Murzin <vladimir.murzin@arm.com>
Acked-by: Will Deacon <will.deacon@arm.com>
Tested-by: Mark Rutland <mark.rutland@arm.com>
---
include/linux/memblock.h | 4 ++--
mm/memtest.c | 16 ++++++++--------
2 files changed, 10 insertions(+), 10 deletions(-)
diff --git a/include/linux/memblock.h b/include/linux/memblock.h
index 6724cb0..9497ec7 100644
--- a/include/linux/memblock.h
+++ b/include/linux/memblock.h
@@ -366,9 +366,9 @@ static inline unsigned long memblock_region_reserved_end_pfn(const struct memblo
#endif
#ifdef CONFIG_MEMTEST
-extern void early_memtest(unsigned long start, unsigned long end);
+extern void early_memtest(phys_addr_t start, phys_addr_t end);
#else
-static inline void early_memtest(unsigned long start, unsigned long end)
+static inline void early_memtest(phys_addr_t start, phys_addr_t end)
{
}
#endif
diff --git a/mm/memtest.c b/mm/memtest.c
index 1e9da79..1997d93 100644
--- a/mm/memtest.c
+++ b/mm/memtest.c
@@ -29,7 +29,7 @@ static u64 patterns[] __initdata = {
0x7a6c7258554e494cULL, /* yeah ;-) */
};
-static void __init reserve_bad_mem(u64 pattern, u64 start_bad, u64 end_bad)
+static void __init reserve_bad_mem(u64 pattern, phys_addr_t start_bad, phys_addr_t end_bad)
{
printk(KERN_INFO " %016llx bad mem addr %010llx - %010llx reserved\n",
(unsigned long long) pattern,
@@ -38,11 +38,11 @@ static void __init reserve_bad_mem(u64 pattern, u64 start_bad, u64 end_bad)
memblock_reserve(start_bad, end_bad - start_bad);
}
-static void __init memtest(u64 pattern, u64 start_phys, u64 size)
+static void __init memtest(u64 pattern, phys_addr_t start_phys, phys_addr_t size)
{
u64 *p, *start, *end;
- u64 start_bad, last_bad;
- u64 start_phys_aligned;
+ phys_addr_t start_bad, last_bad;
+ phys_addr_t start_phys_aligned;
const size_t incr = sizeof(pattern);
start_phys_aligned = ALIGN(start_phys, incr);
@@ -69,14 +69,14 @@ static void __init memtest(u64 pattern, u64 start_phys, u64 size)
reserve_bad_mem(pattern, start_bad, last_bad + incr);
}
-static void __init do_one_pass(u64 pattern, u64 start, u64 end)
+static void __init do_one_pass(u64 pattern, phys_addr_t start, phys_addr_t end)
{
u64 i;
phys_addr_t this_start, this_end;
for_each_free_mem_range(i, NUMA_NO_NODE, &this_start, &this_end, NULL) {
- this_start = clamp_t(phys_addr_t, this_start, start, end);
- this_end = clamp_t(phys_addr_t, this_end, start, end);
+ this_start = clamp(this_start, start, end);
+ this_end = clamp(this_end, start, end);
if (this_start < this_end) {
printk(KERN_INFO " %010llx - %010llx pattern %016llx\n",
(unsigned long long)this_start,
@@ -102,7 +102,7 @@ static int __init parse_memtest(char *arg)
early_param("memtest", parse_memtest);
-void __init early_memtest(unsigned long start, unsigned long end)
+void __init early_memtest(phys_addr_t start, phys_addr_t end)
{
unsigned int i;
unsigned int idx = 0;
--
1.7.9.5
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 3/6] arm64: add support for memtest
2015-03-09 10:27 [PATCH 0/6] make memtest a generic kernel feature Vladimir Murzin
2015-03-09 10:27 ` [PATCH 1/6] mm: move memtest under /mm Vladimir Murzin
2015-03-09 10:27 ` [PATCH 2/6] memtest: use phys_addr_t for physical addresses Vladimir Murzin
@ 2015-03-09 10:27 ` Vladimir Murzin
2015-03-09 10:27 ` [PATCH 4/6] arm: " Vladimir Murzin
` (3 subsequent siblings)
6 siblings, 0 replies; 10+ messages in thread
From: Vladimir Murzin @ 2015-03-09 10:27 UTC (permalink / raw)
To: linux-kernel, linux-mm, linux-arch, x86, linux-arm-kernel
Cc: tglx, mingo, hpa, akpm, lauraa, catalin.marinas, will.deacon,
linux, arnd, mark.rutland, ard.biesheuvel, baruch, rdunlap
Add support for memtest command line option.
Signed-off-by: Vladimir Murzin <vladimir.murzin@arm.com>
Acked-by: Will Deacon <will.deacon@arm.com>
Tested-by: Mark Rutland <mark.rutland@arm.com>
---
arch/arm64/mm/init.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/arch/arm64/mm/init.c b/arch/arm64/mm/init.c
index ae85da6..597831b 100644
--- a/arch/arm64/mm/init.c
+++ b/arch/arm64/mm/init.c
@@ -190,6 +190,8 @@ void __init bootmem_init(void)
min = PFN_UP(memblock_start_of_DRAM());
max = PFN_DOWN(memblock_end_of_DRAM());
+ early_memtest(min << PAGE_SHIFT, max << PAGE_SHIFT);
+
/*
* Sparsemem tries to allocate bootmem in memory_present(), so must be
* done after the fixed reservations.
--
1.7.9.5
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 4/6] arm: add support for memtest
2015-03-09 10:27 [PATCH 0/6] make memtest a generic kernel feature Vladimir Murzin
` (2 preceding siblings ...)
2015-03-09 10:27 ` [PATCH 3/6] arm64: add support for memtest Vladimir Murzin
@ 2015-03-09 10:27 ` Vladimir Murzin
2015-03-09 10:27 ` [PATCH 5/6] Kconfig: memtest: update number of test patterns up to 17 Vladimir Murzin
` (2 subsequent siblings)
6 siblings, 0 replies; 10+ messages in thread
From: Vladimir Murzin @ 2015-03-09 10:27 UTC (permalink / raw)
To: linux-kernel, linux-mm, linux-arch, x86, linux-arm-kernel
Cc: tglx, mingo, hpa, akpm, lauraa, catalin.marinas, will.deacon,
linux, arnd, mark.rutland, ard.biesheuvel, baruch, rdunlap
Add support for memtest command line option.
Signed-off-by: Vladimir Murzin <vladimir.murzin@arm.com>
Acked-by: Will Deacon <will.deacon@arm.com>
---
arch/arm/mm/init.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/arch/arm/mm/init.c b/arch/arm/mm/init.c
index 1609b02..3d0e9ae 100644
--- a/arch/arm/mm/init.c
+++ b/arch/arm/mm/init.c
@@ -335,6 +335,9 @@ void __init bootmem_init(void)
find_limits(&min, &max_low, &max_high);
+ early_memtest((phys_addr_t)min << PAGE_SHIFT,
+ (phys_addr_t)max_low << PAGE_SHIFT);
+
/*
* Sparsemem tries to allocate bootmem in memory_present(),
* so must be done after the fixed reservations
--
1.7.9.5
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 5/6] Kconfig: memtest: update number of test patterns up to 17
2015-03-09 10:27 [PATCH 0/6] make memtest a generic kernel feature Vladimir Murzin
` (3 preceding siblings ...)
2015-03-09 10:27 ` [PATCH 4/6] arm: " Vladimir Murzin
@ 2015-03-09 10:27 ` Vladimir Murzin
2015-03-09 10:27 ` [PATCH 6/6] Documentation: update arch list in the 'memtest' entry Vladimir Murzin
2015-03-17 17:18 ` [PATCH 0/6] make memtest a generic kernel feature Will Deacon
6 siblings, 0 replies; 10+ messages in thread
From: Vladimir Murzin @ 2015-03-09 10:27 UTC (permalink / raw)
To: linux-kernel, linux-mm, linux-arch, x86, linux-arm-kernel
Cc: tglx, mingo, hpa, akpm, lauraa, catalin.marinas, will.deacon,
linux, arnd, mark.rutland, ard.biesheuvel, baruch, rdunlap
Additional test patterns for memtest were introduced since 63823126
"x86: memtest: add additional (regular) test patterns", but looks like
Kconfig was not updated that time.
Update Kconfig entry with the actual number of maximum test patterns.
Signed-off-by: Vladimir Murzin <vladimir.murzin@arm.com>
---
lib/Kconfig.debug | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
index 8eb064fd..2832b0e 100644
--- a/lib/Kconfig.debug
+++ b/lib/Kconfig.debug
@@ -1740,7 +1740,7 @@ config MEMTEST
memtest=0, mean disabled; -- default
memtest=1, mean do 1 test pattern;
...
- memtest=4, mean do 4 test patterns.
+ memtest=17, mean do 17 test patterns.
If you are unsure how to answer this question, answer N.
source "samples/Kconfig"
--
1.7.9.5
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 6/6] Documentation: update arch list in the 'memtest' entry
2015-03-09 10:27 [PATCH 0/6] make memtest a generic kernel feature Vladimir Murzin
` (4 preceding siblings ...)
2015-03-09 10:27 ` [PATCH 5/6] Kconfig: memtest: update number of test patterns up to 17 Vladimir Murzin
@ 2015-03-09 10:27 ` Vladimir Murzin
2015-03-17 17:18 ` [PATCH 0/6] make memtest a generic kernel feature Will Deacon
6 siblings, 0 replies; 10+ messages in thread
From: Vladimir Murzin @ 2015-03-09 10:27 UTC (permalink / raw)
To: linux-kernel, linux-mm, linux-arch, x86, linux-arm-kernel
Cc: tglx, mingo, hpa, akpm, lauraa, catalin.marinas, will.deacon,
linux, arnd, mark.rutland, ard.biesheuvel, baruch, rdunlap
Since arm64/arm support memtest command line option update the "memtest"
entry.
Signed-off-by: Vladimir Murzin <vladimir.murzin@arm.com>
---
Documentation/kernel-parameters.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
index bfcb1a6..ea11c98 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -1988,7 +1988,7 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
seconds. Use this parameter to check at some
other rate. 0 disables periodic checking.
- memtest= [KNL,X86] Enable memtest
+ memtest= [KNL,X86,ARM] Enable memtest
Format: <integer>
default : 0 <disable>
Specifies the number of memtest passes to be
--
1.7.9.5
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH 0/6] make memtest a generic kernel feature
2015-03-09 10:27 [PATCH 0/6] make memtest a generic kernel feature Vladimir Murzin
` (5 preceding siblings ...)
2015-03-09 10:27 ` [PATCH 6/6] Documentation: update arch list in the 'memtest' entry Vladimir Murzin
@ 2015-03-17 17:18 ` Will Deacon
2015-03-17 17:20 ` Vladimir Murzin
6 siblings, 1 reply; 10+ messages in thread
From: Will Deacon @ 2015-03-17 17:18 UTC (permalink / raw)
To: Vladimir Murzin
Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org,
linux-arch@vger.kernel.org, x86@kernel.org,
linux-arm-kernel@lists.infradead.org, tglx@linutronix.de,
mingo@redhat.com, hpa@zytor.com, akpm@linux-foundation.org,
lauraa@codeaurora.org, Catalin Marinas, linux@arm.linux.org.uk,
arnd@arndb.de, Mark Rutland, ard.biesheuvel@linaro.org,
baruch@tkos.co.il, rdunlap@infradead.org
On Mon, Mar 09, 2015 at 10:27:04AM +0000, Vladimir Murzin wrote:
> Memtest is a simple feature which fills the memory with a given set of
> patterns and validates memory contents, if bad memory regions is detected it
> reserves them via memblock API. Since memblock API is widely used by other
> architectures this feature can be enabled outside of x86 world.
>
> This patch set promotes memtest to live under generic mm umbrella and enables
> memtest feature for arm/arm64.
>
> It was reported that this patch set was useful for tracking down an issue with
> some errant DMA on an arm64 platform.
>
> Since it touches x86 and mm bits it'd be great to get ACK/NAK for these bits.
Is your intention for akpm to merge this? I don't mind how it goes upstream,
but that seems like a sensible route to me.
Will
> Changelog:
>
> RFC -> v1
> - updated kernel-parameters.txt for memtest entry
> - updated number of test patterns in Kconfig menu
> - added Acked/Tested tags for arm64 bits
> - rebased on v4.0-rc3
>
> Vladimir Murzin (6):
> mm: move memtest under /mm
> memtest: use phys_addr_t for physical addresses
> arm64: add support for memtest
> arm: add support for memtest
> Kconfig: memtest: update number of test patterns up to 17
> Documentation: update arch list in the 'memtest' entry
>
> Documentation/kernel-parameters.txt | 2 +-
> arch/arm/mm/init.c | 3 +
> arch/arm64/mm/init.c | 2 +
> arch/x86/Kconfig | 11 ----
> arch/x86/include/asm/e820.h | 8 ---
> arch/x86/mm/Makefile | 2 -
> arch/x86/mm/memtest.c | 118 -----------------------------------
> include/linux/memblock.h | 8 +++
> lib/Kconfig.debug | 11 ++++
> mm/Makefile | 1 +
> mm/memtest.c | 118 +++++++++++++++++++++++++++++++++++
> 11 files changed, 144 insertions(+), 140 deletions(-)
> delete mode 100644 arch/x86/mm/memtest.c
> create mode 100644 mm/memtest.c
>
> --
> 1.7.9.5
>
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 0/6] make memtest a generic kernel feature
2015-03-17 17:18 ` [PATCH 0/6] make memtest a generic kernel feature Will Deacon
@ 2015-03-17 17:20 ` Vladimir Murzin
2015-03-17 17:31 ` Will Deacon
0 siblings, 1 reply; 10+ messages in thread
From: Vladimir Murzin @ 2015-03-17 17:20 UTC (permalink / raw)
To: Will Deacon
Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org,
linux-arch@vger.kernel.org, x86@kernel.org,
linux-arm-kernel@lists.infradead.org, tglx@linutronix.de,
mingo@redhat.com, hpa@zytor.com, akpm@linux-foundation.org,
lauraa@codeaurora.org, Catalin Marinas, linux@arm.linux.org.uk,
arnd@arndb.de, Mark Rutland, ard.biesheuvel@linaro.org,
baruch@tkos.co.il, rdunlap@infradead.org
On 17/03/15 17:18, Will Deacon wrote:
> On Mon, Mar 09, 2015 at 10:27:04AM +0000, Vladimir Murzin wrote:
>> Memtest is a simple feature which fills the memory with a given set of
>> patterns and validates memory contents, if bad memory regions is detected it
>> reserves them via memblock API. Since memblock API is widely used by other
>> architectures this feature can be enabled outside of x86 world.
>>
>> This patch set promotes memtest to live under generic mm umbrella and enables
>> memtest feature for arm/arm64.
>>
>> It was reported that this patch set was useful for tracking down an issue with
>> some errant DMA on an arm64 platform.
>>
>> Since it touches x86 and mm bits it'd be great to get ACK/NAK for these bits.
>
> Is your intention for akpm to merge this? I don't mind how it goes upstream,
> but that seems like a sensible route to me.
>
It is already in -mm tree.
Vladimir
> Will
>
>> Changelog:
>>
>> RFC -> v1
>> - updated kernel-parameters.txt for memtest entry
>> - updated number of test patterns in Kconfig menu
>> - added Acked/Tested tags for arm64 bits
>> - rebased on v4.0-rc3
>>
>> Vladimir Murzin (6):
>> mm: move memtest under /mm
>> memtest: use phys_addr_t for physical addresses
>> arm64: add support for memtest
>> arm: add support for memtest
>> Kconfig: memtest: update number of test patterns up to 17
>> Documentation: update arch list in the 'memtest' entry
>>
>> Documentation/kernel-parameters.txt | 2 +-
>> arch/arm/mm/init.c | 3 +
>> arch/arm64/mm/init.c | 2 +
>> arch/x86/Kconfig | 11 ----
>> arch/x86/include/asm/e820.h | 8 ---
>> arch/x86/mm/Makefile | 2 -
>> arch/x86/mm/memtest.c | 118 -----------------------------------
>> include/linux/memblock.h | 8 +++
>> lib/Kconfig.debug | 11 ++++
>> mm/Makefile | 1 +
>> mm/memtest.c | 118 +++++++++++++++++++++++++++++++++++
>> 11 files changed, 144 insertions(+), 140 deletions(-)
>> delete mode 100644 arch/x86/mm/memtest.c
>> create mode 100644 mm/memtest.c
>>
>> --
>> 1.7.9.5
>>
>
> --
> To unsubscribe, send a message with 'unsubscribe linux-mm' in
> the body to majordomo@kvack.org. For more info on Linux MM,
> see: http://www.linux-mm.org/ .
> Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
>
>
>
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 0/6] make memtest a generic kernel feature
2015-03-17 17:20 ` Vladimir Murzin
@ 2015-03-17 17:31 ` Will Deacon
0 siblings, 0 replies; 10+ messages in thread
From: Will Deacon @ 2015-03-17 17:31 UTC (permalink / raw)
To: Vladimir Murzin
Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org,
linux-arch@vger.kernel.org, x86@kernel.org,
linux-arm-kernel@lists.infradead.org, tglx@linutronix.de,
mingo@redhat.com, hpa@zytor.com, akpm@linux-foundation.org,
lauraa@codeaurora.org, Catalin Marinas, linux@arm.linux.org.uk,
arnd@arndb.de, Mark Rutland, ard.biesheuvel@linaro.org,
baruch@tkos.co.il, rdunlap@infradead.org
On Tue, Mar 17, 2015 at 05:20:31PM +0000, Vladimir Murzin wrote:
> On 17/03/15 17:18, Will Deacon wrote:
> > On Mon, Mar 09, 2015 at 10:27:04AM +0000, Vladimir Murzin wrote:
> >> Memtest is a simple feature which fills the memory with a given set of
> >> patterns and validates memory contents, if bad memory regions is detected it
> >> reserves them via memblock API. Since memblock API is widely used by other
> >> architectures this feature can be enabled outside of x86 world.
> >>
> >> This patch set promotes memtest to live under generic mm umbrella and enables
> >> memtest feature for arm/arm64.
> >>
> >> It was reported that this patch set was useful for tracking down an issue with
> >> some errant DMA on an arm64 platform.
> >>
> >> Since it touches x86 and mm bits it'd be great to get ACK/NAK for these bits.
> >
> > Is your intention for akpm to merge this? I don't mind how it goes upstream,
> > but that seems like a sensible route to me.
> >
>
> It is already in -mm tree.
Cracking, I missed the memo somehow.
Will
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
^ permalink raw reply [flat|nested] 10+ messages in thread