From: Daniel Golle <daniel@makrotopia.org>
To: Hannes Reinecke <hare@suse.de>
Cc: "Jens Axboe" <axboe@kernel.dk>,
"Ulf Hansson" <ulf.hansson@linaro.org>,
"Miquel Raynal" <miquel.raynal@bootlin.com>,
"Richard Weinberger" <richard@nod.at>,
"Vignesh Raghavendra" <vigneshr@ti.com>,
"Dave Chinner" <dchinner@redhat.com>,
"Matthew Wilcox" <willy@infradead.org>,
"Thomas Weißschuh" <linux@weissschuh.net>,
"Jan Kara" <jack@suse.cz>, "Damien Le Moal" <dlemoal@kernel.org>,
"Ming Lei" <ming.lei@redhat.com>, "Min Li" <min15.li@samsung.com>,
"Christian Loehle" <CLoehle@hyperstone.com>,
"Adrian Hunter" <adrian.hunter@intel.com>,
"Jack Wang" <jinpu.wang@ionos.com>,
"Florian Fainelli" <f.fainelli@gmail.com>,
"Yeqi Fu" <asuk4.q@gmail.com>,
"Avri Altman" <avri.altman@wdc.com>,
"Hans de Goede" <hdegoede@redhat.com>,
"Ye Bin" <yebin10@huawei.com>,
"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
"Rafał Miłecki" <rafal@milecki.pl>,
linux-block@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-mmc@vger.kernel.org, linux-mtd@lists.infradead.org
Subject: Re: [RFC PATCH 3/6] block: add new genhd flag GENHD_FL_NO_NVMEM
Date: Thu, 20 Jul 2023 15:28:23 +0100 [thread overview]
Message-ID: <ZLlEhxspjyMPl29b@makrotopia.org> (raw)
In-Reply-To: <f6256c2c-0fd5-764b-92ec-343b99e79c36@suse.de>
On Thu, Jul 20, 2023 at 04:03:22PM +0200, Hannes Reinecke wrote:
> On 7/20/23 15:47, Daniel Golle wrote:
> > On Thu, Jul 20, 2023 at 10:24:18AM +0200, Hannes Reinecke wrote:
> > > On 7/20/23 00:03, Daniel Golle wrote:
> > > > Add new flag to destinguish block devices which should not act as an
> > > > NVMEM provider, such as for example an emulated block device on top of
> > > > an MTD partition which already acts as an NVMEM provider itself.
> > > >
> > > > Signed-off-by: Daniel Golle <daniel@makrotopia.org>
> > > > ---
> > > > include/linux/blkdev.h | 3 +++
> > > > 1 file changed, 3 insertions(+)
> > > >
> > > > diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h
> > > > index 2f5371b8482c0..e853d1815be15 100644
> > > > --- a/include/linux/blkdev.h
> > > > +++ b/include/linux/blkdev.h
> > > > @@ -80,11 +80,14 @@ struct partition_meta_info {
> > > > * ``GENHD_FL_NO_PART``: partition support is disabled. The kernel will not
> > > > * scan for partitions from add_disk, and users can't add partitions manually.
> > > > *
> > > > + * ``GENHD_FL_NO_NVMEM``: NVMEM emulation is disabled. The kernel will not
> > > > + * emulate an NVMEM device on top of this disk.
> > > > */
> > > > enum {
> > > > GENHD_FL_REMOVABLE = 1 << 0,
> > > > GENHD_FL_HIDDEN = 1 << 1,
> > > > GENHD_FL_NO_PART = 1 << 2,
> > > > + GENHD_FL_NO_NVMEM = 1 << 3,
> > > > };
> > > > enum {
> > > Please reverse this flag. Most of the devices will not have an NVMEM
> > > partition, and we shouldn't require each and every driver to tag their
> > > devices.
> > > So please use GENHD_FL_NVMEM and only set this flag on devices which really
> > > have an NVMEM partition.
> >
> > The idea here was to exclude all those devices which already implement
> > an NVMEM provider on a lower layer themselves, such as MTD.
> > In this cases it would be ambigous if the OF node represents the
> > NVMEM device registered by the MTD framework or if blk-nvmem should be
> > used.
> >
> Hmm; not sure if I follow.
> In the end, it doesn't really matter whether you check for
> GENHD_FL_NO_NVMEM or !GENHD_FL_NVMEM.
> With the difference being that in the former case you have to
> tag 99% of all existing block devices, and in the latter you
> have to tag 1%.
That's not exactly true. In the current case I only have to flag MTD
(and UBI in future, I'm working on a UBI NVMEM provider as well) with
GENHD_FL_NO_NVMEM, so a 'compatible = "nvmem-cells"' in the
corresponding device tree node should not result in blk-nvmem creating
an NVMEM device based on the (mtd/ubi)block device, simply because the
MTD framework (and UBI in future) will already have created their own
NVMEM device attached to the very same device tree node.
In all other cases of block devices, the compatible string can be used
to unambigously decide whether an NVMEM device should be created or
not. blk-nvmem is opt-in, so unless the device is flagged by
'compatible = "nvmem-cells"' it will not do anything.
For all devices which anyway do not have any device tree representation
it won't do anything (think: loop, nbd, ...), we would not need to opt
them out using GENHD_FL_NO_NVMEM. Also all other drivers which do not
already bring their own NVMEM implementation won't need GENHD_FL_NO_NVMEM,
the absence of 'compatible = "nvmem-cells"' is enough to indicate that
they should not be considered as NVMEM providers.
The way you are suggesting will require that, in addition to selecting
the targetted block device in device tree, the block driver will also
have to set GENHD_FL_NVMEM. Hence we will need changes in MMC, NVMe
and potentially also SATA disk drivers setting GENHD_FL_NVMEM when
registering the disk.
>
> > In all other cases device tree can unambigously indicate whether a
> > block device should serve as NVMEM provider (and right, most of them
> > never will).
> >
> > However, reversing the logic seems fine just as well.
>
> Thanks. Please do.
Either way is fine with me, just 99% vs. 1% is not the right argument
in this case.
next prev parent reply other threads:[~2023-07-20 14:29 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-07-19 22:01 [RFC PATCH 0/6] nvmem: add block device NVMEM provider Daniel Golle
2023-07-19 22:02 ` [RFC PATCH 1/6] mmc: core: set card fwnode_handle Daniel Golle
2023-07-19 22:02 ` [RFC PATCH 2/6] mmc: block: set fwnode of disk devices Daniel Golle
2023-08-07 13:48 ` Ulf Hansson
2023-08-08 1:02 ` Daniel Golle
2023-08-08 10:59 ` Ulf Hansson
2023-07-19 22:03 ` [RFC PATCH 3/6] block: add new genhd flag GENHD_FL_NO_NVMEM Daniel Golle
2023-07-20 8:24 ` Hannes Reinecke
2023-07-20 13:47 ` Daniel Golle
2023-07-20 14:03 ` Hannes Reinecke
2023-07-20 14:28 ` Daniel Golle [this message]
2023-07-20 14:34 ` Hannes Reinecke
2023-07-19 22:03 ` [RFC PATCH 4/6] mtd: blkdevs: set GENHD_FL_NO_NVMEM Daniel Golle
2023-07-20 6:04 ` Miquel Raynal
2023-07-19 22:03 ` [RFC PATCH 5/6] mtd: ubi: block: " Daniel Golle
2023-07-19 22:04 ` [RFC PATCH 6/6] block: implement NVMEM provider Daniel Golle
2023-07-19 23:04 ` Damien Le Moal
2023-07-20 0:14 ` Daniel Golle
2023-07-20 7:04 ` Christoph Hellwig
2023-07-20 16:02 ` Daniel Golle
2023-07-21 6:31 ` Christoph Hellwig
2023-07-21 10:40 ` Daniel Golle
2023-07-21 11:11 ` Greg Kroah-Hartman
2023-07-21 11:30 ` Daniel Golle
2023-07-21 11:39 ` Greg Kroah-Hartman
2023-07-21 13:03 ` Daniel Golle
2023-07-21 6:35 ` Christoph Hellwig
2023-07-21 13:31 ` Daniel Golle
2023-07-20 7:09 ` [RFC PATCH 0/6] nvmem: add block device " Christoph Hellwig
2023-07-20 15:30 ` Bart Van Assche
2023-07-20 18:03 ` Daniel Golle
2023-07-21 8:32 ` Ming Lei
2023-07-21 11:08 ` Daniel Golle
2023-07-21 11:10 ` Greg Kroah-Hartman
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=ZLlEhxspjyMPl29b@makrotopia.org \
--to=daniel@makrotopia.org \
--cc=CLoehle@hyperstone.com \
--cc=adrian.hunter@intel.com \
--cc=asuk4.q@gmail.com \
--cc=avri.altman@wdc.com \
--cc=axboe@kernel.dk \
--cc=dchinner@redhat.com \
--cc=dlemoal@kernel.org \
--cc=f.fainelli@gmail.com \
--cc=gregkh@linuxfoundation.org \
--cc=hare@suse.de \
--cc=hdegoede@redhat.com \
--cc=jack@suse.cz \
--cc=jinpu.wang@ionos.com \
--cc=linux-block@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mmc@vger.kernel.org \
--cc=linux-mtd@lists.infradead.org \
--cc=linux@weissschuh.net \
--cc=min15.li@samsung.com \
--cc=ming.lei@redhat.com \
--cc=miquel.raynal@bootlin.com \
--cc=rafal@milecki.pl \
--cc=richard@nod.at \
--cc=ulf.hansson@linaro.org \
--cc=vigneshr@ti.com \
--cc=willy@infradead.org \
--cc=yebin10@huawei.com \
/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