From patchwork Wed Jan 6 09:48:18 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Morten Thunberg Svendsen X-Patchwork-Id: 42287 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id 9D729B6EF7 for ; Wed, 6 Jan 2010 20:51:29 +1100 (EST) Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.69 #1 (Red Hat Linux)) id 1NSSVG-0005RA-Ji; Wed, 06 Jan 2010 09:48:34 +0000 Received: from mail-ew0-f221.google.com ([209.85.219.221]) by bombadil.infradead.org with esmtp (Exim 4.69 #1 (Red Hat Linux)) id 1NSSVA-0005Pb-9y for linux-mtd@lists.infradead.org; Wed, 06 Jan 2010 09:48:32 +0000 Received: by ewy21 with SMTP id 21so9675513ewy.2 for ; Wed, 06 Jan 2010 01:48:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:from:to:cc:subject:date :message-id:x-mailer; bh=UEj5ddMvLSgR2URaZUV2ojeVjkGl5Nlkebua0dVUzgE=; b=RG36rrJkCZ0WF+wOTrunVBW9qMud04vs8dHczOi7CODh3NIMjosojnmKyFSW6VF6Qh HpkCx+0yRU2XtXauFM9u1O8TsKi1v7s5di5jIgPCCpRgTbNyTRvM5sZcrS/+ZVhS/7dq ZXQpyo+UC81Ce4U8TS4lMLm1JiSxDZlFwj8R0= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=from:to:cc:subject:date:message-id:x-mailer; b=IXG/wURosNW+JRrZLyNB14BEJ1fIuSG6bxSscVbO+XPloiZCYVcrvBOXbavXBNDFPo oFztGOPjLyznquCC8LCpZ86zSoCW7hMv2/69T/8c5BNMYEdm5JWgw6iK9i65sLYq1A3W UlcbdKI0FLzya2GDb8hc67dquxXOLcnTTE31s= Received: by 10.216.88.136 with SMTP id a8mr3711244wef.77.1262771306369; Wed, 06 Jan 2010 01:48:26 -0800 (PST) Received: from localhost.localdomain ([72.14.240.164]) by mx.google.com with ESMTPS id x6sm53775363gvf.22.2010.01.06.01.48.24 (version=SSLv3 cipher=RC4-MD5); Wed, 06 Jan 2010 01:48:25 -0800 (PST) From: Morten Thunberg Svendsen To: linux-mtd@lists.infradead.org Subject: [PATCH] [MTD] tests: Fix read, speed and stress tests on NOR flash Date: Wed, 6 Jan 2010 10:48:18 +0100 Message-Id: <1262771298-11320-1-git-send-email-mts.doredevelopment@gmail.com> X-Mailer: git-send-email 1.6.3.3 X-CRM114-Version: 20090807-BlameThorstenAndJenny ( TRE 0.7.6 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20100106_044828_490871_2EF26873 X-CRM114-Status: GOOD ( 12.34 ) X-Spam-Score: 0.0 (/) X-Spam-Report: SpamAssassin version 3.2.5 on bombadil.infradead.org summary: Content analysis details: (0.0 points) pts rule name description ---- ---------------------- -------------------------------------------------- _SUMMARY_ Cc: Morten Thunberg Svendsen X-BeenThere: linux-mtd@lists.infradead.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: linux-mtd-bounces@lists.infradead.org Errors-To: linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org 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. Previous Patch sendt Dec 16, 2009 did not include check on block_isbad, please ignore Signed-off-by: Morten Thunberg Svendsen Acked-by: Artem Bityutskiy --- drivers/mtd/tests/mtd_readtest.c | 6 +++++- drivers/mtd/tests/mtd_speedtest.c | 7 ++++++- drivers/mtd/tests/mtd_stresstest.c | 6 +++++- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/drivers/mtd/tests/mtd_readtest.c b/drivers/mtd/tests/mtd_readtest.c index 79fc453..25c5dd0 100644 --- a/drivers/mtd/tests/mtd_readtest.c +++ b/drivers/mtd/tests/mtd_readtest.c @@ -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 " diff --git a/drivers/mtd/tests/mtd_speedtest.c b/drivers/mtd/tests/mtd_speedtest.c index 141363a..7fbb51d 100644 --- a/drivers/mtd/tests/mtd_speedtest.c +++ b/drivers/mtd/tests/mtd_speedtest.c @@ -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 " diff --git a/drivers/mtd/tests/mtd_stresstest.c b/drivers/mtd/tests/mtd_stresstest.c index 6392047..a99d3cd 100644 --- a/drivers/mtd/tests/mtd_stresstest.c +++ b/drivers/mtd/tests/mtd_stresstest.c @@ -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 "