On Wed, Dec 17, 2014 at 03:05:58PM -0500, Michael D. Burkey wrote: > I have run into an issue that I wonder if anyone else has seen. > > We have our kernel stored in NAND flash and have it partition and have > the nand0.kernel and nand0.kernel.bb entries. > > As I understand it, the nand0.kernel.bb entry is the correct one to > use for day to day operations as it handles bad blocks. > > The issue comes when I try erasing the kernel prior to updating it on > a SOM with a known bad block inside the kernel area. > > Doing an erase of nand0.kernel works fine and skips the bad block. > > Doing an erase of nand0.kernel.bb however generates an error message: > > nand: nand_erase_nand: attempt to erase a bad block at page > 0x00000bc0 > > It then exits with an "erase: I/O error". > > Specifically, it looks like an attempt to erase a .bb device calls > nand_erase_nand() (in nand_base.c) which then uses > nand_block_checkbad() to determine if the block is bad and then just > generates an error exit rather than attempting to skip the bad block. > > To me, this seems wrong. > > Shouldn't an attempt to erase a .bb NAND device actually HANDLE the > bad blocks by skipping them rather than simply erroring out? You are absolutely right. This must be a bug. Sascha -- Pengutronix e.K. | | Industrial Linux Solutions | http://www.pengutronix.de/ | Peiner Str. 6-8, 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