mtd: tests: fix read, speed and stress tests on NOR flash
Before using block_isbad() check if mtd->block_isbad() is defined. Calculating pgcnt must be done using pgsize defined to 512 on NOR and mtd->writesize for NAND, not using mtd->writesize directly. Signed-off-by: Morten Thunberg Svendsen <mts.doredevelopment@gmail.com> Acked-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com> Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
This commit is contained in:
Родитель
f6a8c60960
Коммит
f5e2bae0aa
|
@ -147,6 +147,10 @@ static int scan_for_bad_eraseblocks(void)
|
|||
}
|
||||
memset(bbt, 0 , ebcnt);
|
||||
|
||||
/* NOR flash does not implement block_isbad */
|
||||
if (mtd->block_isbad == NULL)
|
||||
return 0;
|
||||
|
||||
printk(PRINT_PREF "scanning for bad eraseblocks\n");
|
||||
for (i = 0; i < ebcnt; ++i) {
|
||||
bbt[i] = is_block_bad(i) ? 1 : 0;
|
||||
|
@ -184,7 +188,7 @@ static int __init mtd_readtest_init(void)
|
|||
tmp = mtd->size;
|
||||
do_div(tmp, mtd->erasesize);
|
||||
ebcnt = tmp;
|
||||
pgcnt = mtd->erasesize / mtd->writesize;
|
||||
pgcnt = mtd->erasesize / pgsize;
|
||||
|
||||
printk(PRINT_PREF "MTD device size %llu, eraseblock size %u, "
|
||||
"page size %u, count of eraseblocks %u, pages per "
|
||||
|
|
|
@ -301,6 +301,10 @@ static int scan_for_bad_eraseblocks(void)
|
|||
}
|
||||
memset(bbt, 0 , ebcnt);
|
||||
|
||||
/* NOR flash does not implement block_isbad */
|
||||
if (mtd->block_isbad == NULL)
|
||||
goto out;
|
||||
|
||||
printk(PRINT_PREF "scanning for bad eraseblocks\n");
|
||||
for (i = 0; i < ebcnt; ++i) {
|
||||
bbt[i] = is_block_bad(i) ? 1 : 0;
|
||||
|
@ -309,6 +313,7 @@ static int scan_for_bad_eraseblocks(void)
|
|||
cond_resched();
|
||||
}
|
||||
printk(PRINT_PREF "scanned %d eraseblocks, %d are bad\n", i, bad);
|
||||
out:
|
||||
goodebcnt = ebcnt - bad;
|
||||
return 0;
|
||||
}
|
||||
|
@ -340,7 +345,7 @@ static int __init mtd_speedtest_init(void)
|
|||
tmp = mtd->size;
|
||||
do_div(tmp, mtd->erasesize);
|
||||
ebcnt = tmp;
|
||||
pgcnt = mtd->erasesize / mtd->writesize;
|
||||
pgcnt = mtd->erasesize / pgsize;
|
||||
|
||||
printk(PRINT_PREF "MTD device size %llu, eraseblock size %u, "
|
||||
"page size %u, count of eraseblocks %u, pages per "
|
||||
|
|
|
@ -227,6 +227,10 @@ static int scan_for_bad_eraseblocks(void)
|
|||
}
|
||||
memset(bbt, 0 , ebcnt);
|
||||
|
||||
/* NOR flash does not implement block_isbad */
|
||||
if (mtd->block_isbad == NULL)
|
||||
return 0;
|
||||
|
||||
printk(PRINT_PREF "scanning for bad eraseblocks\n");
|
||||
for (i = 0; i < ebcnt; ++i) {
|
||||
bbt[i] = is_block_bad(i) ? 1 : 0;
|
||||
|
@ -265,7 +269,7 @@ static int __init mtd_stresstest_init(void)
|
|||
tmp = mtd->size;
|
||||
do_div(tmp, mtd->erasesize);
|
||||
ebcnt = tmp;
|
||||
pgcnt = mtd->erasesize / mtd->writesize;
|
||||
pgcnt = mtd->erasesize / pgsize;
|
||||
|
||||
printk(PRINT_PREF "MTD device size %llu, eraseblock size %u, "
|
||||
"page size %u, count of eraseblocks %u, pages per "
|
||||
|
|
Загрузка…
Ссылка в новой задаче