diff mbox series

mtd: Create partname and partid debug files for child MTDs

Message ID 20210430065057.32018-1-oss@malat.biz
State Accepted
Delegated to: Miquel Raynal
Headers show
Series mtd: Create partname and partid debug files for child MTDs | expand

Commit Message

Petr Malat April 30, 2021, 6:50 a.m. UTC
Partname and partid are set by the upper driver (spi-nor) on the master
MTD. If this MTD is partitioned and CONFIG_MTD_PARTITIONED_MASTER is
disabled, the master MTD is not instantiated and partname and partid
aren't available to the userspace.

Always read the partname and partid from the master MTD, they describe
the HW, which can't differ between master and its children.

Signed-off-by: Petr Malat <oss@malat.biz>
---
 drivers/mtd/mtdcore.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

Comments

Michael Walle April 30, 2021, 7:02 a.m. UTC | #1
Hi Petr,

Am 2021-04-30 08:50, schrieb Petr Malat:
> Partname and partid are set by the upper driver (spi-nor) on the master
> MTD. If this MTD is partitioned and CONFIG_MTD_PARTITIONED_MASTER is
> disabled, the master MTD is not instantiated and partname and partid
> aren't available to the userspace.

You might have a look at:
https://lore.kernel.org/linux-mtd/20210429155713.28808-1-michael@walle.cc/

This is just for spi-nor though, but attaches the properties to the
flash device instead of the mtd device.

-michael
Petr Malat May 6, 2021, 2:57 p.m. UTC | #2
Hi!
On Fri, Apr 30, 2021 at 09:02:14AM +0200, Michael Walle wrote:
> > Partname and partid are set by the upper driver (spi-nor) on the master
> > MTD. If this MTD is partitioned and CONFIG_MTD_PARTITIONED_MASTER is
> > disabled, the master MTD is not instantiated and partname and partid
> > aren't available to the userspace.
> 
> You might have a look at:
> https://lore.kernel.org/linux-mtd/20210429155713.28808-1-michael@walle.cc/
Thanks, I used it to replace my hack to dump SFDP with print_hex_dump.
As it seems I'm not the only one interested in SFDP in userspace I
have pushed my SFDP parser to github https://github.com/petris/sfdp-parser

> This is just for spi-nor though, but attaches the properties to the
> flash device instead of the mtd device.
Currently, no other driver is using it. If your change makes it in,
debugfs attributes can be removed (or extended to cover other drivers
as well).
  Petr
Miquel Raynal May 10, 2021, 10:43 a.m. UTC | #3
On Fri, 2021-04-30 at 06:50:57 UTC, Petr Malat wrote:
> Partname and partid are set by the upper driver (spi-nor) on the master
> MTD. If this MTD is partitioned and CONFIG_MTD_PARTITIONED_MASTER is
> disabled, the master MTD is not instantiated and partname and partid
> aren't available to the userspace.
> 
> Always read the partname and partid from the master MTD, they describe
> the HW, which can't differ between master and its children.
> 
> Signed-off-by: Petr Malat <oss@malat.biz>

Applied to https://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux.git mtd/next, thanks.

Miquel
diff mbox series

Patch

diff --git a/drivers/mtd/mtdcore.c b/drivers/mtd/mtdcore.c
index 2d6423d89a17..66fa7f702174 100644
--- a/drivers/mtd/mtdcore.c
+++ b/drivers/mtd/mtdcore.c
@@ -361,6 +361,7 @@  static struct dentry *dfs_dir_mtd;
 
 static void mtd_debugfs_populate(struct mtd_info *mtd)
 {
+	struct mtd_info *master = mtd_get_master(mtd);
 	struct device *dev = &mtd->dev;
 	struct dentry *root;
 
@@ -370,12 +371,12 @@  static void mtd_debugfs_populate(struct mtd_info *mtd)
 	root = debugfs_create_dir(dev_name(dev), dfs_dir_mtd);
 	mtd->dbg.dfs_dir = root;
 
-	if (mtd->dbg.partid)
-		debugfs_create_file("partid", 0400, root, mtd,
+	if (master->dbg.partid)
+		debugfs_create_file("partid", 0400, root, master,
 				    &mtd_partid_debug_fops);
 
-	if (mtd->dbg.partname)
-		debugfs_create_file("partname", 0400, root, mtd,
+	if (master->dbg.partname)
+		debugfs_create_file("partname", 0400, root, master,
 				    &mtd_partname_debug_fops);
 }