Message ID | 4F38C740.4050409@denx.de |
---|---|
State | Superseded |
Delegated to: | Scott Wood |
Headers | show |
On 02/13/2012 02:18 AM, Heiko Schocher wrote: > Hello Christian, Scott, > > current mainline code of U-Boot: > > commit 9a3aae22edf1eda6326cc51c28631ca5c23b7706 > Author: Christian Riesch <christian.riesch@omicron.at> > Date: Thu Feb 2 00:44:42 2012 +0000 > > arm, davinci: Add support for the Calimain board from OMICRON electronics > > This patch adds support for the Calimain board from > OMICRON electronics GmbH. The board features a Texas Instruments AM1808 > SoC, 128 MB DDR2 memory, and 64 MB NOR flash memory connected to CS2 and > CS3. > > Signed-off-by: Christian Riesch <christian.riesch@omicron.at> > > shows now on startup the following printfs on the enbw_cmc board: > > > > U-Boot 2011.12-00331-ga400f85 (Feb 13 2012 - 08:49:17) > > I2C: ready > [...] > NAND: Bad block table found at page 65472, version 0x01 > Bad block table found at page 65408, version 0x01 > nand_read_bbt: Bad block at 0x000002980000 > nand_read_bbt: Bad block at 0x000003240000 > 128 MiB > MMC: davinci: 0 > > Found with "git bisect" the reason: > > [hs@pollux u-boot]$ git bisect good > 2a8e0fc8b3dc31a3c571e439fbf04b882c8986be is the first bad commit > commit 2a8e0fc8b3dc31a3c571e439fbf04b882c8986be > Author: Christian Hitz <christian.hitz@aizo.com> > Date: Wed Oct 12 09:32:02 2011 +0200 > > nand: Merge changes from Linux nand driver > > [backport from linux commit 02f8c6aee8df3cdc935e9bdd4f2d020306035dbe] > > This patch synchronizes the nand driver with the Linux 3.0 state. > > Signed-off-by: Christian Hitz <christian.hitz@aizo.com> > Cc: Scott Wood <scottwood@freescale.com> > [scottwood@freescale.com: minor fixes] > Signed-off-by: Scott Wood <scottwood@freescale.com> > > :040000 040000 5ab34f43b64379528b9ef2652c8481fdab1a927a b453a49035e179dfb5f31c3164a1b7d3d62d66d6 M drivers > :040000 040000 b59a7f3136da038b4b49c48cd0958e140a09ed66 a8fd298715a562fda0a350e6f732c1072ca7d410 M include > [hs@pollux u-boot]$ > > Looking in this patch, it seems to me, this is the "reason": > > diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c > index 758b53f..ed2640c 100644 > --- a/drivers/mtd/nand/nand_base.c > +++ b/drivers/mtd/nand/nand_base.c > [...] > @@ -2992,9 +3145,10 @@ int nand_scan_tail(struct mtd_info *mtd) > > /* Check, if we should skip the bad block table scan */ > if (chip->options & NAND_SKIP_BBTSCAN) > - chip->options |= NAND_BBT_SCANNED; > + return 0; > > - return 0; > + /* Build bad block table */ > + return chip->scan_bbt(mtd); > } > > /** > > ... This printfs in the startoutput are suboptimal ... maybe we apply > the following patch: The problem isn't (just) the prints, which have always been there, but when we do the scanning. I suspect this patch accidentally reversed a U-Boot local change to defer bad block scanning to first use. -Scott
Hello Scott, Scott Wood wrote: > On 02/13/2012 02:18 AM, Heiko Schocher wrote: >> Hello Christian, Scott, >> >> current mainline code of U-Boot: >> >> commit 9a3aae22edf1eda6326cc51c28631ca5c23b7706 >> Author: Christian Riesch <christian.riesch@omicron.at> >> Date: Thu Feb 2 00:44:42 2012 +0000 >> >> arm, davinci: Add support for the Calimain board from OMICRON electronics >> >> This patch adds support for the Calimain board from >> OMICRON electronics GmbH. The board features a Texas Instruments AM1808 >> SoC, 128 MB DDR2 memory, and 64 MB NOR flash memory connected to CS2 and >> CS3. >> >> Signed-off-by: Christian Riesch <christian.riesch@omicron.at> >> >> shows now on startup the following printfs on the enbw_cmc board: >> >> >> >> U-Boot 2011.12-00331-ga400f85 (Feb 13 2012 - 08:49:17) >> >> I2C: ready >> [...] >> NAND: Bad block table found at page 65472, version 0x01 >> Bad block table found at page 65408, version 0x01 >> nand_read_bbt: Bad block at 0x000002980000 >> nand_read_bbt: Bad block at 0x000003240000 >> 128 MiB >> MMC: davinci: 0 >> >> Found with "git bisect" the reason: >> >> [hs@pollux u-boot]$ git bisect good >> 2a8e0fc8b3dc31a3c571e439fbf04b882c8986be is the first bad commit >> commit 2a8e0fc8b3dc31a3c571e439fbf04b882c8986be >> Author: Christian Hitz <christian.hitz@aizo.com> >> Date: Wed Oct 12 09:32:02 2011 +0200 >> >> nand: Merge changes from Linux nand driver >> >> [backport from linux commit 02f8c6aee8df3cdc935e9bdd4f2d020306035dbe] >> >> This patch synchronizes the nand driver with the Linux 3.0 state. >> >> Signed-off-by: Christian Hitz <christian.hitz@aizo.com> >> Cc: Scott Wood <scottwood@freescale.com> >> [scottwood@freescale.com: minor fixes] >> Signed-off-by: Scott Wood <scottwood@freescale.com> >> >> :040000 040000 5ab34f43b64379528b9ef2652c8481fdab1a927a b453a49035e179dfb5f31c3164a1b7d3d62d66d6 M drivers >> :040000 040000 b59a7f3136da038b4b49c48cd0958e140a09ed66 a8fd298715a562fda0a350e6f732c1072ca7d410 M include >> [hs@pollux u-boot]$ >> >> Looking in this patch, it seems to me, this is the "reason": >> >> diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c >> index 758b53f..ed2640c 100644 >> --- a/drivers/mtd/nand/nand_base.c >> +++ b/drivers/mtd/nand/nand_base.c >> [...] >> @@ -2992,9 +3145,10 @@ int nand_scan_tail(struct mtd_info *mtd) >> >> /* Check, if we should skip the bad block table scan */ >> if (chip->options & NAND_SKIP_BBTSCAN) >> - chip->options |= NAND_BBT_SCANNED; >> + return 0; >> >> - return 0; >> + /* Build bad block table */ >> + return chip->scan_bbt(mtd); >> } >> >> /** >> >> ... This printfs in the startoutput are suboptimal ... maybe we apply >> the following patch: > > The problem isn't (just) the prints, which have always been there, but > when we do the scanning. I suspect this patch accidentally reversed a > U-Boot local change to defer bad block scanning to first use. Yes, seems so. So there are two points to decide: - Do we need this prints? I vote for moving them to debug output - Do we move scanning back to first use? I vote for moving to "first use" bye, Heiko
On 02/14/2012 12:38 AM, Heiko Schocher wrote: > Hello Scott, > > Scott Wood wrote: >> The problem isn't (just) the prints, which have always been there, but >> when we do the scanning. I suspect this patch accidentally reversed a >> U-Boot local change to defer bad block scanning to first use. > > Yes, seems so. So there are two points to decide: > > - Do we need this prints? I vote for moving them to debug output That's fine, but not related to this patch. > - Do we move scanning back to first use? I vote for moving to "first use" Yes, this is a regression introduced by this patch and should be fixed. -Scott
diff --git a/drivers/mtd/nand/nand_bbt.c b/drivers/mtd/nand/nand_bbt.c index 2b730e0..bf12df8 100644 --- a/drivers/mtd/nand/nand_bbt.c +++ b/drivers/mtd/nand/nand_bbt.c @@ -259,10 +259,10 @@ static int read_bbt(struct mtd_info *mtd, uint8_t *buf, int page, int num, mtd->ecc_stats.bbtblocks++; continue; } - /* Leave it for now, if its matured we can move this - * message to MTD_DEBUG_LEVEL0 */ - printk(KERN_DEBUG "nand_read_bbt: Bad block at 0x%012llx\n", - (loff_t)((offs << 2) + (act >> 1)) << this->bbt_erase_shift); + MTDDEBUG(MTD_DEBUG_LEVEL0, "nand_read_bbt: " \ + "Bad block at 0x%012llx\n", + (loff_t)((offs << 2) + (act >> 1)) + << this->bbt_erase_shift); /* Factory marked bad or worn out ? */ if (tmp == 0) this->bbt[offs + (act >> 3)] |= 0x3 << (act & 0x06); @@ -651,8 +651,9 @@ static int search_bbt(struct mtd_info *mtd, uint8_t *buf, struct nand_bbt_descr if (td->pages[i] == -1) printk(KERN_WARNING "Bad block table not found for chip %d\n", i); else - printk(KERN_DEBUG "Bad block table found at page %d, version 0x%02X\n", td->pages[i], - td->version[i]); + MTDDEBUG(MTD_DEBUG_LEVEL0, "Bad block table found " \ + "at page %d, version 0x%02X\n", td->pages[i], + td->version[i]); } return 0; }