Message ID | 20230105094620.30774-1-ashok.reddy.soma@amd.com |
---|---|
State | Accepted, archived |
Commit | cfb82f7c123e411b8cfb5d58c2c666f54cb9b66a |
Delegated to: | Dario Binacchi |
Headers | show |
Series | [v2] mtd: nand: Mark reserved blocks | expand |
Hi On Thu, Jan 5, 2023 at 10:46 AM Ashok Reddy Soma <ashok.reddy.soma@amd.com> wrote: > > Reserved blocks are used for storing bad block tables. With "nand bad" > command, these reserved blocks are shown as bad blocks. This is leading > to confusion when compared with Linux bad blocks. Hence, display > "bbt reserved" when printing reserved blocks with "nand bad" command. > > To acheive this, return 2 which represents reserved from nand_isbad_bbt() > instead of 1 in case of reserved blocks and catch it in cmd/nand.c. > > "nand bad" command display's hexadecimal numbers, so add "0x" prefix. > > Example log will show up as below. > > ZynqMP> nand bad > > Device 0 bad blocks: > 0x00400000 > 0x16800000 > 0x16c00000 > 0x17000000 > 0x3d800000 > 0x3e400000 > 0xe8400000 > 0xff000000 (bbt reserved) > 0xff400000 (bbt reserved) > 0xff800000 (bbt reserved) > 0xffc00000 (bbt reserved) > 0x116800000 > 0x116c00000 > 0x1ff000000 (bbt reserved) > 0x1ff400000 (bbt reserved) > 0x1ff800000 (bbt reserved) > 0x1ffc00000 (bbt reserved) > > Signed-off-by: Ashok Reddy Soma <ashok.reddy.soma@amd.com> > Reviewed-by: Michael Trimarchi <michael@amarulasolutions.com> > --- > > Changes in v2: > - Changed "Reserved for bbt" to (bbt reserved) > - Updated description and the log in the description > Acked-By: Michael Trimarchi <michael@amarulasolutions.com> > cmd/nand.c | 9 ++++++--- > drivers/mtd/nand/raw/nand_bbt.c | 3 ++- > 2 files changed, 8 insertions(+), 4 deletions(-) > > diff --git a/cmd/nand.c b/cmd/nand.c > index 9a723f5757..b41e54ec42 100644 > --- a/cmd/nand.c > +++ b/cmd/nand.c > @@ -567,9 +567,12 @@ static int do_nand(struct cmd_tbl *cmdtp, int flag, int argc, > > if (strcmp(cmd, "bad") == 0) { > printf("\nDevice %d bad blocks:\n", dev); > - for (off = 0; off < mtd->size; off += mtd->erasesize) > - if (nand_block_isbad(mtd, off)) > - printf(" %08llx\n", (unsigned long long)off); > + for (off = 0; off < mtd->size; off += mtd->erasesize) { > + ret = nand_block_isbad(mtd, off); > + if (ret) > + printf(" 0x%08llx%s\n", (unsigned long long)off, > + ret == 2 ? "\t (bbt reserved)" : ""); > + } > return 0; > } > > diff --git a/drivers/mtd/nand/raw/nand_bbt.c b/drivers/mtd/nand/raw/nand_bbt.c > index 911472e91e..cd451870a6 100644 > --- a/drivers/mtd/nand/raw/nand_bbt.c > +++ b/drivers/mtd/nand/raw/nand_bbt.c > @@ -1330,6 +1330,7 @@ int nand_isreserved_bbt(struct mtd_info *mtd, loff_t offs) > * @mtd: MTD device structure > * @offs: offset in the device > * @allowbbt: allow access to bad block table region > + * Return: 0 - good block, 1- bad block, 2 - reserved block > */ > int nand_isbad_bbt(struct mtd_info *mtd, loff_t offs, int allowbbt) > { > @@ -1348,7 +1349,7 @@ int nand_isbad_bbt(struct mtd_info *mtd, loff_t offs, int allowbbt) > case BBT_BLOCK_WORN: > return 1; > case BBT_BLOCK_RESERVED: > - return allowbbt ? 0 : 1; > + return allowbbt ? 0 : 2; > } > return 1; > } > -- > 2.17.1 >
Hi Dario, On 1/5/23 10:46, Ashok Reddy Soma wrote: > Reserved blocks are used for storing bad block tables. With "nand bad" > command, these reserved blocks are shown as bad blocks. This is leading > to confusion when compared with Linux bad blocks. Hence, display > "bbt reserved" when printing reserved blocks with "nand bad" command. > > To acheive this, return 2 which represents reserved from nand_isbad_bbt() > instead of 1 in case of reserved blocks and catch it in cmd/nand.c. > > "nand bad" command display's hexadecimal numbers, so add "0x" prefix. > > Example log will show up as below. > > ZynqMP> nand bad > > Device 0 bad blocks: > 0x00400000 > 0x16800000 > 0x16c00000 > 0x17000000 > 0x3d800000 > 0x3e400000 > 0xe8400000 > 0xff000000 (bbt reserved) > 0xff400000 (bbt reserved) > 0xff800000 (bbt reserved) > 0xffc00000 (bbt reserved) > 0x116800000 > 0x116c00000 > 0x1ff000000 (bbt reserved) > 0x1ff400000 (bbt reserved) > 0x1ff800000 (bbt reserved) > 0x1ffc00000 (bbt reserved) > > Signed-off-by: Ashok Reddy Soma <ashok.reddy.soma@amd.com> > Reviewed-by: Michael Trimarchi <michael@amarulasolutions.com> > --- Are you going to apply this patch? Thanks, Michal
Hi Il gio 2 feb 2023, 14:21 Michal Simek <monstr@monstr.eu> ha scritto: > Hi Dario, > > On 1/5/23 10:46, Ashok Reddy Soma wrote: > > Reserved blocks are used for storing bad block tables. With "nand bad" > > command, these reserved blocks are shown as bad blocks. This is leading > > to confusion when compared with Linux bad blocks. Hence, display > > "bbt reserved" when printing reserved blocks with "nand bad" command. > > > > To acheive this, return 2 which represents reserved from nand_isbad_bbt() > > instead of 1 in case of reserved blocks and catch it in cmd/nand.c. > > > > "nand bad" command display's hexadecimal numbers, so add "0x" prefix. > > > > Example log will show up as below. > > > > ZynqMP> nand bad > > > > Device 0 bad blocks: > > 0x00400000 > > 0x16800000 > > 0x16c00000 > > 0x17000000 > > 0x3d800000 > > 0x3e400000 > > 0xe8400000 > > 0xff000000 (bbt reserved) > > 0xff400000 (bbt reserved) > > 0xff800000 (bbt reserved) > > 0xffc00000 (bbt reserved) > > 0x116800000 > > 0x116c00000 > > 0x1ff000000 (bbt reserved) > > 0x1ff400000 (bbt reserved) > > 0x1ff800000 (bbt reserved) > > 0x1ffc00000 (bbt reserved) > > > > Signed-off-by: Ashok Reddy Soma <ashok.reddy.soma@amd.com> > > Reviewed-by: Michael Trimarchi <michael@amarulasolutions.com> > > --- > > Are you going to apply this patch? > Applied already Michael > > Thanks, > Michal > > -- > Michal Simek, Ing. (M.Eng), OpenPGP -> KeyID: FE3D1F91 > w: www.monstr.eu p: +42-0-721842854 > Maintainer of Linux kernel - Xilinx Microblaze > Maintainer of Linux kernel - Xilinx Zynq ARM and ZynqMP/Versal ARM64 SoCs > U-Boot custodian - Xilinx Microblaze/Zynq/ZynqMP/Versal/Versal NET SoCs > >
On 2/2/23 14:44, Michael Nazzareno Trimarchi wrote: > Hi > > Il gio 2 feb 2023, 14:21 Michal Simek <monstr@monstr.eu > <mailto:monstr@monstr.eu>> ha scritto: > > Hi Dario, > > On 1/5/23 10:46, Ashok Reddy Soma wrote: > > Reserved blocks are used for storing bad block tables. With "nand bad" > > command, these reserved blocks are shown as bad blocks. This is leading > > to confusion when compared with Linux bad blocks. Hence, display > > "bbt reserved" when printing reserved blocks with "nand bad" command. > > > > To acheive this, return 2 which represents reserved from nand_isbad_bbt() > > instead of 1 in case of reserved blocks and catch it in cmd/nand.c. > > > > "nand bad" command display's hexadecimal numbers, so add "0x" prefix. > > > > Example log will show up as below. > > > > ZynqMP> nand bad > > > > Device 0 bad blocks: > > 0x00400000 > > 0x16800000 > > 0x16c00000 > > 0x17000000 > > 0x3d800000 > > 0x3e400000 > > 0xe8400000 > > 0xff000000 (bbt reserved) > > 0xff400000 (bbt reserved) > > 0xff800000 (bbt reserved) > > 0xffc00000 (bbt reserved) > > 0x116800000 > > 0x116c00000 > > 0x1ff000000 (bbt reserved) > > 0x1ff400000 (bbt reserved) > > 0x1ff800000 (bbt reserved) > > 0x1ffc00000 (bbt reserved) > > > > Signed-off-by: Ashok Reddy Soma <ashok.reddy.soma@amd.com > <mailto:ashok.reddy.soma@amd.com>> > > Reviewed-by: Michael Trimarchi <michael@amarulasolutions.com > <mailto:michael@amarulasolutions.com>> > > --- > > Are you going to apply this patch? > > > Applied already I looked at u-boot-nand-flash git repo and I can't see it. Where's the repo where this is merged? Thanks, Michal
Hi Michal, On Thu, Feb 2, 2023 at 3:50 PM Michal Simek <michal.simek@amd.com> wrote: > > > > On 2/2/23 14:44, Michael Nazzareno Trimarchi wrote: > > Hi > > > > Il gio 2 feb 2023, 14:21 Michal Simek <monstr@monstr.eu > > <mailto:monstr@monstr.eu>> ha scritto: > > > > Hi Dario, > > > > On 1/5/23 10:46, Ashok Reddy Soma wrote: > > > Reserved blocks are used for storing bad block tables. With "nand bad" > > > command, these reserved blocks are shown as bad blocks. This is leading > > > to confusion when compared with Linux bad blocks. Hence, display > > > "bbt reserved" when printing reserved blocks with "nand bad" command. > > > > > > To acheive this, return 2 which represents reserved from nand_isbad_bbt() > > > instead of 1 in case of reserved blocks and catch it in cmd/nand.c. > > > > > > "nand bad" command display's hexadecimal numbers, so add "0x" prefix. > > > > > > Example log will show up as below. > > > > > > ZynqMP> nand bad > > > > > > Device 0 bad blocks: > > > 0x00400000 > > > 0x16800000 > > > 0x16c00000 > > > 0x17000000 > > > 0x3d800000 > > > 0x3e400000 > > > 0xe8400000 > > > 0xff000000 (bbt reserved) > > > 0xff400000 (bbt reserved) > > > 0xff800000 (bbt reserved) > > > 0xffc00000 (bbt reserved) > > > 0x116800000 > > > 0x116c00000 > > > 0x1ff000000 (bbt reserved) > > > 0x1ff400000 (bbt reserved) > > > 0x1ff800000 (bbt reserved) > > > 0x1ffc00000 (bbt reserved) > > > > > > Signed-off-by: Ashok Reddy Soma <ashok.reddy.soma@amd.com > > <mailto:ashok.reddy.soma@amd.com>> > > > Reviewed-by: Michael Trimarchi <michael@amarulasolutions.com > > <mailto:michael@amarulasolutions.com>> > > > --- > > > > Are you going to apply this patch? > > > > > > Applied already > > I looked at u-boot-nand-flash git repo and I can't see it. > Where's the repo where this is merged? > > Thanks, > Michal > > Applied to nand-next. Thanks and regards, Dario
diff --git a/cmd/nand.c b/cmd/nand.c index 9a723f5757..b41e54ec42 100644 --- a/cmd/nand.c +++ b/cmd/nand.c @@ -567,9 +567,12 @@ static int do_nand(struct cmd_tbl *cmdtp, int flag, int argc, if (strcmp(cmd, "bad") == 0) { printf("\nDevice %d bad blocks:\n", dev); - for (off = 0; off < mtd->size; off += mtd->erasesize) - if (nand_block_isbad(mtd, off)) - printf(" %08llx\n", (unsigned long long)off); + for (off = 0; off < mtd->size; off += mtd->erasesize) { + ret = nand_block_isbad(mtd, off); + if (ret) + printf(" 0x%08llx%s\n", (unsigned long long)off, + ret == 2 ? "\t (bbt reserved)" : ""); + } return 0; } diff --git a/drivers/mtd/nand/raw/nand_bbt.c b/drivers/mtd/nand/raw/nand_bbt.c index 911472e91e..cd451870a6 100644 --- a/drivers/mtd/nand/raw/nand_bbt.c +++ b/drivers/mtd/nand/raw/nand_bbt.c @@ -1330,6 +1330,7 @@ int nand_isreserved_bbt(struct mtd_info *mtd, loff_t offs) * @mtd: MTD device structure * @offs: offset in the device * @allowbbt: allow access to bad block table region + * Return: 0 - good block, 1- bad block, 2 - reserved block */ int nand_isbad_bbt(struct mtd_info *mtd, loff_t offs, int allowbbt) { @@ -1348,7 +1349,7 @@ int nand_isbad_bbt(struct mtd_info *mtd, loff_t offs, int allowbbt) case BBT_BLOCK_WORN: return 1; case BBT_BLOCK_RESERVED: - return allowbbt ? 0 : 1; + return allowbbt ? 0 : 2; } return 1; }