Hi Stefan, On Tue, Mar 16, 2021 at 01:36:26PM +0100, Stefan Riedmueller wrote: > The blocks containing the bad block table can become bad as well. So > make sure to skip any blocks that are marked bad when searching for the > bad block table. The file is a more or less direct copy from the kernel. Does the problem exist in the kernel as well? Sascha > > Signed-off-by: Stefan Riedmueller <s.riedmueller@xxxxxxxxx> > --- > drivers/mtd/nand/nand_bbt.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/drivers/mtd/nand/nand_bbt.c b/drivers/mtd/nand/nand_bbt.c > index a86b5b2da38e..0b48373e6a0b 100644 > --- a/drivers/mtd/nand/nand_bbt.c > +++ b/drivers/mtd/nand/nand_bbt.c > @@ -528,6 +528,7 @@ static int search_bbt(struct nand_chip *this, uint8_t *buf, > { > u64 targetsize = nanddev_target_size(&this->base); > struct mtd_info *mtd = nand_to_mtd(this); > + struct nand_bbt_descr *bd = this->badblock_pattern; > int i, chips; > int startblock, block, dir; > int scanlen = mtd->writesize + mtd->oobsize; > @@ -563,6 +564,9 @@ static int search_bbt(struct nand_chip *this, uint8_t *buf, > int actblock = startblock + dir * block; > loff_t offs = (loff_t)actblock << this->bbt_erase_shift; > > + /* Check if block is marked bad */ > + if (scan_block_fast(this, bd, offs, buf)) > + continue; > /* Read first page */ > scan_read(this, buf, offs, mtd->writesize, td); > if (!check_pattern(buf, scanlen, mtd->writesize, td)) { > -- > 2.25.1 > > > _______________________________________________ > barebox mailing list > barebox@xxxxxxxxxxxxxxxxxxx > http://lists.infradead.org/mailman/listinfo/barebox > -- Pengutronix e.K. | | Steuerwalder Str. 21 | http://www.pengutronix.de/ | 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox