Message ID | Yn1ibyUeXZttNX2a@makrotopia.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | partition parser for U-Boot's uImage.FIT | expand |
Hi Daniel, daniel@makrotopia.org wrote on Thu, 12 May 2022 20:39:27 +0100: > Add Kconfig boolean CONFIG_MTD_BLOCK_PARTITIONS and enable block > partition parsers on non-NAND mtdblock devices in case it is selected. > > Signed-off-by: Daniel Golle <daniel@makrotopia.org> > --- > drivers/mtd/Kconfig | 11 +++++++++++ > drivers/mtd/mtd_blkdevs.c | 4 +++- > 2 files changed, 14 insertions(+), 1 deletion(-) > > diff --git a/drivers/mtd/Kconfig b/drivers/mtd/Kconfig > index 796a2eccbef0b8..12874dec15692a 100644 > --- a/drivers/mtd/Kconfig > +++ b/drivers/mtd/Kconfig > @@ -69,6 +69,17 @@ config MTD_BLOCK_RO > You do not need this option for use with the DiskOnChip devices. For > those, enable NFTL support (CONFIG_NFTL) instead. > > +config MTD_BLOCK_PARTITIONS > + bool "Scan for partitions on MTD block devices" > + depends on MTD_BLOCK || MTD_BLOCK_RO > + default y if FIT_PARTITION > + help > + Scan MTD block devices for partitions (ie. MBR, GPT, uImage.FIT, ...). > + (NAND devices are omitted, ubiblock should be used instead when) > + > + Unless your MTD partitions contain sub-partitions mapped using a > + partition table, say no. > + > comment "Note that in some cases UBI block is preferred. See MTD_UBI_BLOCK." > depends on MTD_BLOCK || MTD_BLOCK_RO > > diff --git a/drivers/mtd/mtd_blkdevs.c b/drivers/mtd/mtd_blkdevs.c > index f7317211146550..c67ce2e6fbeb0a 100644 > --- a/drivers/mtd/mtd_blkdevs.c > +++ b/drivers/mtd/mtd_blkdevs.c > @@ -359,7 +359,9 @@ int add_mtd_blktrans_dev(struct mtd_blktrans_dev *new) > } else { > snprintf(gd->disk_name, sizeof(gd->disk_name), > "%s%d", tr->name, new->devnum); > - gd->flags |= GENHD_FL_NO_PART; > + > + if (!IS_ENABLED(CONFIG_MTD_BLOCK_PARTITIONS) || mtd_type_is_nand(new->mtd)) > + gd->flags |= GENHD_FL_NO_PART; I really wonder if we need this in mtdblock ? Isn't ubiblock enough? Anyhow, Acked-by: Miquel Raynal <miquel.raynal@bootlin.com> I'll let Richard ack the ubiblock patch. Thanks, Miquèl
On Fri, Jun 03, 2022 at 03:48:04PM +0200, Miquel Raynal wrote: > Hi Daniel, > > daniel@makrotopia.org wrote on Thu, 12 May 2022 20:39:27 +0100: > > > Add Kconfig boolean CONFIG_MTD_BLOCK_PARTITIONS and enable block > > partition parsers on non-NAND mtdblock devices in case it is selected. > > > > Signed-off-by: Daniel Golle <daniel@makrotopia.org> > > --- > > drivers/mtd/Kconfig | 11 +++++++++++ > > drivers/mtd/mtd_blkdevs.c | 4 +++- > > 2 files changed, 14 insertions(+), 1 deletion(-) > > > > diff --git a/drivers/mtd/Kconfig b/drivers/mtd/Kconfig > > index 796a2eccbef0b8..12874dec15692a 100644 > > --- a/drivers/mtd/Kconfig > > +++ b/drivers/mtd/Kconfig > > @@ -69,6 +69,17 @@ config MTD_BLOCK_RO > > You do not need this option for use with the DiskOnChip devices. For > > those, enable NFTL support (CONFIG_NFTL) instead. > > > > +config MTD_BLOCK_PARTITIONS > > + bool "Scan for partitions on MTD block devices" > > + depends on MTD_BLOCK || MTD_BLOCK_RO > > + default y if FIT_PARTITION > > + help > > + Scan MTD block devices for partitions (ie. MBR, GPT, uImage.FIT, ...). > > + (NAND devices are omitted, ubiblock should be used instead when) > > + > > + Unless your MTD partitions contain sub-partitions mapped using a > > + partition table, say no. > > + > > comment "Note that in some cases UBI block is preferred. See MTD_UBI_BLOCK." > > depends on MTD_BLOCK || MTD_BLOCK_RO > > > > diff --git a/drivers/mtd/mtd_blkdevs.c b/drivers/mtd/mtd_blkdevs.c > > index f7317211146550..c67ce2e6fbeb0a 100644 > > --- a/drivers/mtd/mtd_blkdevs.c > > +++ b/drivers/mtd/mtd_blkdevs.c > > @@ -359,7 +359,9 @@ int add_mtd_blktrans_dev(struct mtd_blktrans_dev *new) > > } else { > > snprintf(gd->disk_name, sizeof(gd->disk_name), > > "%s%d", tr->name, new->devnum); > > - gd->flags |= GENHD_FL_NO_PART; > > + > > + if (!IS_ENABLED(CONFIG_MTD_BLOCK_PARTITIONS) || mtd_type_is_nand(new->mtd)) > > + gd->flags |= GENHD_FL_NO_PART; > > I really wonder if we need this in mtdblock ? Isn't ubiblock enough? One of the ideas behind this series is to be able to use the exact same image (which includes a rootfs filesystem sub-image) on devices with different boot storage options instead of having to write kernel and root filesystems separately in a storage-type specific manner. So the very same uImage.FIT on devices with block-based storage can be written into a GPT partition (see 3/5), on devices with NAND flash where UBI is used into a UBI volume (see 5/5) and on devices with NOR flash into an MTD partition (this patch). > > Anyhow, > Acked-by: Miquel Raynal <miquel.raynal@bootlin.com> Thank you for the review! > > I'll let Richard ack the ubiblock patch. > > Thanks, > Miquèl > > ______________________________________________________ > Linux MTD discussion mailing list > http://lists.infradead.org/mailman/listinfo/linux-mtd/
diff --git a/drivers/mtd/Kconfig b/drivers/mtd/Kconfig index 796a2eccbef0b8..12874dec15692a 100644 --- a/drivers/mtd/Kconfig +++ b/drivers/mtd/Kconfig @@ -69,6 +69,17 @@ config MTD_BLOCK_RO You do not need this option for use with the DiskOnChip devices. For those, enable NFTL support (CONFIG_NFTL) instead. +config MTD_BLOCK_PARTITIONS + bool "Scan for partitions on MTD block devices" + depends on MTD_BLOCK || MTD_BLOCK_RO + default y if FIT_PARTITION + help + Scan MTD block devices for partitions (ie. MBR, GPT, uImage.FIT, ...). + (NAND devices are omitted, ubiblock should be used instead when) + + Unless your MTD partitions contain sub-partitions mapped using a + partition table, say no. + comment "Note that in some cases UBI block is preferred. See MTD_UBI_BLOCK." depends on MTD_BLOCK || MTD_BLOCK_RO diff --git a/drivers/mtd/mtd_blkdevs.c b/drivers/mtd/mtd_blkdevs.c index f7317211146550..c67ce2e6fbeb0a 100644 --- a/drivers/mtd/mtd_blkdevs.c +++ b/drivers/mtd/mtd_blkdevs.c @@ -359,7 +359,9 @@ int add_mtd_blktrans_dev(struct mtd_blktrans_dev *new) } else { snprintf(gd->disk_name, sizeof(gd->disk_name), "%s%d", tr->name, new->devnum); - gd->flags |= GENHD_FL_NO_PART; + + if (!IS_ENABLED(CONFIG_MTD_BLOCK_PARTITIONS) || mtd_type_is_nand(new->mtd)) + gd->flags |= GENHD_FL_NO_PART; } set_capacity(gd, ((u64)new->size * tr->blksize) >> 9);
Add Kconfig boolean CONFIG_MTD_BLOCK_PARTITIONS and enable block partition parsers on non-NAND mtdblock devices in case it is selected. Signed-off-by: Daniel Golle <daniel@makrotopia.org> --- drivers/mtd/Kconfig | 11 +++++++++++ drivers/mtd/mtd_blkdevs.c | 4 +++- 2 files changed, 14 insertions(+), 1 deletion(-)