Hi Piotr, Piotr Sroka <piotrs@xxxxxxxxxxx> wrote on Thu, 19 Sep 2019 13:41:35 +0100: > Change calculating of position page containing BBM > > If none of BBM flags is set then function nand_bbm_get_next_page > reports EINVAL. It causes that BBM is not read at all during scanning > factory bad blocks. The result is that the BBT table is build without > checking factory BBM at all. For Micron flash memories none of this > flag is set if page size is different than 2048 bytes. "none of these flags are set" > > This patch changes the nand_bbm_get_next_page function. "Address this regression by changing the nand_bbm_get_next_page_function." > It will return 0 if none of BBM flag is set and page parameter is 0. no BBM flag is set > After that modification way of discovering factory bad blocks will work > similar as in kernel version 5.1. > Fixes + stable tags would be great! > Signed-off-by: Piotr Sroka <piotrs@xxxxxxxxxxx> > --- > drivers/mtd/nand/raw/nand_base.c | 8 ++++++-- > 1 file changed, 6 insertions(+), 2 deletions(-) > > diff --git a/drivers/mtd/nand/raw/nand_base.c b/drivers/mtd/nand/raw/nand_base.c > index 5c2c30a7dffa..f64e3b6605c6 100644 > --- a/drivers/mtd/nand/raw/nand_base.c > +++ b/drivers/mtd/nand/raw/nand_base.c > @@ -292,12 +292,16 @@ int nand_bbm_get_next_page(struct nand_chip *chip, int page) > struct mtd_info *mtd = nand_to_mtd(chip); > int last_page = ((mtd->erasesize - mtd->writesize) >> > chip->page_shift) & chip->pagemask; > + unsigned int bbm_flags = NAND_BBM_FIRSTPAGE | NAND_BBM_SECONDPAGE > + | NAND_BBM_LASTPAGE; > > + if (page == 0 && !(chip->options & bbm_flags)) > + return 0; > if (page == 0 && chip->options & NAND_BBM_FIRSTPAGE) > return 0; > - else if (page <= 1 && chip->options & NAND_BBM_SECONDPAGE) > + if (page <= 1 && chip->options & NAND_BBM_SECONDPAGE) > return 1; > - else if (page <= last_page && chip->options & NAND_BBM_LASTPAGE) > + if (page <= last_page && chip->options & NAND_BBM_LASTPAGE) > return last_page; > > return -EINVAL; Lookgs good otherwise. Thanks, Miquèl ______________________________________________________ Linux MTD discussion mailing list http://lists.infradead.org/mailman/listinfo/linux-mtd/