From: Boris Brezillon <boris.brezillon@collabora.com>
To: Zhuohao Lee <zhuohao@chromium.org>
Cc: drinkcat@chromium.org, bbrezillon@kernel.org, richard@nod.at,
briannorris@chromium.org, marek.vasut@gmail.com,
linux-mtd@lists.infradead.org, computersforpeace@gmail.com,
dwmw2@infradead.org
Subject: Re: [PATCH v6 1/2] mtd: mtdcore: add debugfs nodes for querying the flash name and id
Date: Mon, 3 Jun 2019 13:53:59 +0200 [thread overview]
Message-ID: <20190603135359.3b27998f@collabora.com> (raw)
In-Reply-To: <20190603115053.219438-1-zhuohao@chromium.org>
On Mon, 3 Jun 2019 19:50:52 +0800
Zhuohao Lee <zhuohao@chromium.org> wrote:
> Currently, we don't have vfs nodes for querying the underlying flash name
> and flash id. This information is important especially when we want to
> know the flash detail of the defective system. In order to support the
> query, we add mtd_debugfs_populate() to create two debugfs nodes
> (ie. partname and partid). The upper driver can assign the pointer to
> partname and partid before calling mtd_device_register().
>
> Signed-off-by: Zhuohao Lee <zhuohao@chromium.org>
> ---
> Changes in V6:
> - Create the debugfs only when the partname/partid is not NULL
> - Previous discussion: https://patchwork.ozlabs.org/patch/1109041/
> Changes in V5:
> - Move debugfs_create_dir() to mtd_debugfs_populate()
> - Previous discussion: https://patchwork.ozlabs.org/patch/1107810/
> Changes in V4:
> - Separate the change to two patches. The first patch is adding the general
> handling for the partname and partid in the mtdcore.c. The second patch
> is enabling the two debugfs nodes for spi-nor.
> - Previous discussion: https://patchwork.ozlabs.org/patch/1097377/
> Changes in v3:
> - Add partname and partid to mtd.h and create debugfs inside mtdcore.c
> - Previous discussion: https://patchwork.ozlabs.org/patch/1095731/
> Changes in v2:
> - Change to use debugfs to output flash name and id
> - Previous discussion: https://patchwork.ozlabs.org/patch/1067763/
> ---
> drivers/mtd/mtdcore.c | 90 ++++++++++++++++++++++++++++++++++++-----
> include/linux/mtd/mtd.h | 3 ++
> 2 files changed, 84 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/mtd/mtdcore.c b/drivers/mtd/mtdcore.c
> index 3ef01baef9b6..54a5448fc1ac 100644
> --- a/drivers/mtd/mtdcore.c
> +++ b/drivers/mtd/mtdcore.c
> @@ -357,6 +357,86 @@ static const struct device_type mtd_devtype = {
> .release = mtd_release,
> };
>
> +static int mtd_partid_show(struct seq_file *s, void *p)
> +{
> + struct mtd_info *mtd = s->private;
> +
> + if (!mtd->dbg.partid)
> + return 0;
You forgot to remove this test (and the other on in partname_show()).
> +
> + seq_printf(s, "%s\n", mtd->dbg.partid);
> +
> + return 0;
> +}
> +
> +static int mtd_partid_debugfs_open(struct inode *inode, struct file *file)
> +{
> + return single_open(file, mtd_partid_show, inode->i_private);
> +}
> +
> +static const struct file_operations mtd_partid_debug_fops = {
> + .open = mtd_partid_debugfs_open,
> + .read = seq_read,
> + .llseek = seq_lseek,
> + .release = single_release,
> +};
> +
> +static int mtd_partname_show(struct seq_file *s, void *p)
> +{
> + struct mtd_info *mtd = s->private;
> +
> + if (!mtd->dbg.partname)
> + return 0;
> +
> + seq_printf(s, "%s\n", mtd->dbg.partname);
> +
> + return 0;
> +}
> +
> +static int mtd_partname_debugfs_open(struct inode *inode, struct file *file)
> +{
> + return single_open(file, mtd_partname_show, inode->i_private);
> +}
> +
> +static const struct file_operations mtd_partname_debug_fops = {
> + .open = mtd_partname_debugfs_open,
> + .read = seq_read,
> + .llseek = seq_lseek,
> + .release = single_release,
> +};
> +
> +static struct dentry *dfs_dir_mtd;
> +
> +static void mtd_debugfs_populate(struct mtd_info *mtd)
> +{
> + struct device *dev = &mtd->dev;
> + struct dentry *root, *dent;
> +
> + if (IS_ERR_OR_NULL(dfs_dir_mtd))
> + return;
> +
> + root = mtd->dbg.dfs_dir = debugfs_create_dir(dev_name(dev),
> + dfs_dir_mtd);
> + if (IS_ERR_OR_NULL(root)) {
> + pr_debug("mtd device %s won't show data in debugfs\n",
> + dev_name(dev));
> + return;
> + }
> +
> + if (mtd->dbg.partid) {
> + dent = debugfs_create_file("partid", S_IRUSR, root, mtd,
> + &mtd_partid_debug_fops);
> + if (IS_ERR_OR_NULL(dent))
> + pr_err("cannot create debugfs entry for partid\n");
> + }
> + if (mtd->dbg.partname) {
> + dent = debugfs_create_file("partname", S_IRUSR, root, mtd,
> + &mtd_partname_debug_fops);
> + if (IS_ERR_OR_NULL(dent))
> + pr_err("cannot create debugfs entry for partname\n");
> + }
> +}
> +
> #ifndef CONFIG_MMU
> unsigned mtd_mmap_capabilities(struct mtd_info *mtd)
> {
> @@ -534,8 +614,6 @@ static int mtd_nvmem_add(struct mtd_info *mtd)
> return 0;
> }
>
> -static struct dentry *dfs_dir_mtd;
> -
> /**
> * add_mtd_device - register an MTD device
> * @mtd: pointer to new MTD device info structure
> @@ -621,13 +699,7 @@ int add_mtd_device(struct mtd_info *mtd)
> if (error)
> goto fail_nvmem_add;
>
> - if (!IS_ERR_OR_NULL(dfs_dir_mtd)) {
> - mtd->dbg.dfs_dir = debugfs_create_dir(dev_name(&mtd->dev), dfs_dir_mtd);
> - if (IS_ERR_OR_NULL(mtd->dbg.dfs_dir)) {
> - pr_debug("mtd device %s won't show data in debugfs\n",
> - dev_name(&mtd->dev));
> - }
> - }
> + mtd_debugfs_populate(mtd);
>
> device_create(&mtd_class, mtd->dev.parent, MTD_DEVT(i) + 1, NULL,
> "mtd%dro", i);
> diff --git a/include/linux/mtd/mtd.h b/include/linux/mtd/mtd.h
> index 677768b21a1d..b11afb85d962 100644
> --- a/include/linux/mtd/mtd.h
> +++ b/include/linux/mtd/mtd.h
> @@ -203,6 +203,9 @@ struct module; /* only needed for owner field in mtd_info */
> */
> struct mtd_debug_info {
> struct dentry *dfs_dir;
> +
> + const char *partname;
> + const char *partid;
> };
>
> struct mtd_info {
______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/
prev parent reply other threads:[~2019-06-03 11:54 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-06-03 11:50 [PATCH v6 1/2] mtd: mtdcore: add debugfs nodes for querying the flash name and id Zhuohao Lee
2019-06-03 11:50 ` [PATCH v6 2/2] mtd: spi-nor: enable the debugfs for the partname and partid Zhuohao Lee
2019-06-03 11:57 ` Boris Brezillon
2019-06-03 11:53 ` Boris Brezillon [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190603135359.3b27998f@collabora.com \
--to=boris.brezillon@collabora.com \
--cc=bbrezillon@kernel.org \
--cc=briannorris@chromium.org \
--cc=computersforpeace@gmail.com \
--cc=drinkcat@chromium.org \
--cc=dwmw2@infradead.org \
--cc=linux-mtd@lists.infradead.org \
--cc=marek.vasut@gmail.com \
--cc=richard@nod.at \
--cc=zhuohao@chromium.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).