From 7162017160891ef8bfe84da79c409fba4692e12c Mon Sep 17 00:00:00 2001 From: Akinobu Mita Date: Mon, 3 Sep 2012 22:00:00 +0900 Subject: [PATCH] --- yaml --- r: 332741 b: refs/heads/master c: c5b8384abc11fd566a3633b7bd7d476ff04c31af h: refs/heads/master i: 332739: 512047f4fe70e2c3e25629b8b8c8408b7e8d6aff v: v3 --- [refs] | 2 +- trunk/drivers/mtd/tests/mtd_nandecctest.c | 48 ++++++++++++++--------- 2 files changed, 30 insertions(+), 20 deletions(-) diff --git a/[refs] b/[refs] index 8ee91db0a328..d086fb6f5e15 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: bb82477ebede3d0c37a502a899b68eb45fefca4f +refs/heads/master: c5b8384abc11fd566a3633b7bd7d476ff04c31af diff --git a/trunk/drivers/mtd/tests/mtd_nandecctest.c b/trunk/drivers/mtd/tests/mtd_nandecctest.c index 128547c5bd55..2b2d1a90417b 100644 --- a/trunk/drivers/mtd/tests/mtd_nandecctest.c +++ b/trunk/drivers/mtd/tests/mtd_nandecctest.c @@ -15,41 +15,51 @@ static void inject_single_bit_error(void *data, size_t size) __change_bit(offset, data); } -static unsigned char data[512]; +static void dump_data_ecc(void *error_data, void *error_ecc, void *correct_data, + void *correct_ecc, const size_t size) +{ + pr_info("hexdump of error data:\n"); + print_hex_dump(KERN_INFO, "", DUMP_PREFIX_OFFSET, 16, 4, + error_data, size, false); + print_hex_dump(KERN_INFO, "hexdump of error ecc: ", + DUMP_PREFIX_NONE, 16, 1, error_ecc, 3, false); + + pr_info("hexdump of correct data:\n"); + print_hex_dump(KERN_INFO, "", DUMP_PREFIX_OFFSET, 16, 4, + correct_data, size, false); + print_hex_dump(KERN_INFO, "hexdump of correct ecc: ", + DUMP_PREFIX_NONE, 16, 1, correct_ecc, 3, false); +} + +static unsigned char correct_data[512]; static unsigned char error_data[512]; static int nand_ecc_test(const size_t size) { - unsigned char code[3]; - unsigned char error_code[3]; + unsigned char correct_ecc[3]; + unsigned char error_ecc[3]; char testname[30]; - BUG_ON(sizeof(data) < size); + BUG_ON(sizeof(correct_data) < size); sprintf(testname, "nand-ecc-%zu", size); - get_random_bytes(data, size); + get_random_bytes(correct_data, size); - memcpy(error_data, data, size); + memcpy(error_data, correct_data, size); inject_single_bit_error(error_data, size); - __nand_calculate_ecc(data, size, code); - __nand_calculate_ecc(error_data, size, error_code); - __nand_correct_data(error_data, code, error_code, size); + __nand_calculate_ecc(correct_data, size, correct_ecc); + __nand_calculate_ecc(error_data, size, error_ecc); + __nand_correct_data(error_data, correct_ecc, error_ecc, size); - if (!memcmp(data, error_data, size)) { - printk(KERN_INFO "mtd_nandecctest: ok - %s\n", testname); + if (!memcmp(correct_data, error_data, size)) { + pr_info("mtd_nandecctest: ok - %s\n", testname); return 0; } - printk(KERN_ERR "mtd_nandecctest: not ok - %s\n", testname); - - printk(KERN_DEBUG "hexdump of data:\n"); - print_hex_dump(KERN_DEBUG, "", DUMP_PREFIX_OFFSET, 16, 4, - data, size, false); - printk(KERN_DEBUG "hexdump of error data:\n"); - print_hex_dump(KERN_DEBUG, "", DUMP_PREFIX_OFFSET, 16, 4, - error_data, size, false); + pr_err("mtd_nandecctest: not ok - %s\n", testname); + dump_data_ecc(error_data, error_ecc, correct_data, correct_ecc, size); return -EINVAL; }