From: Daniel Golle <daniel@makrotopia.org>
To: Christoph Hellwig <hch@infradead.org>
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>,
"Hannes Reinecke" <hare@suse.de>,
"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 6/6] block: implement NVMEM provider
Date: Fri, 21 Jul 2023 14:31:42 +0100 [thread overview]
Message-ID: <ZLqIvuK2EX2hROJo@makrotopia.org> (raw)
In-Reply-To: <ZLonS7QXLj2lg4Zg@infradead.org>
On Thu, Jul 20, 2023 at 11:35:55PM -0700, Christoph Hellwig wrote:
> > +static int blk_nvmem_reg_read(void *priv, unsigned int from,
> > + void *val, size_t bytes)
> > +{
> > + pgoff_t f_index = from >> PAGE_SHIFT;
> > + struct address_space *mapping;
> > + struct blk_nvmem *bnv = priv;
> > + size_t bytes_left = bytes;
> > + struct folio *folio;
> > + unsigned long offs, to_read;
> > + void *p;
>
> Btw, this function really should be using kern_read on a file
> using filp_open instead of poking into block device internals.
Unfortunately filp_open requires a device inode on a filesystem to be
able to open a block device. What if the root filesystem has not yet
been mounted, or even requires NVMEM (let's say for the Ethernet MAC
address to be known for a nfsroot, nbd or iSCSI to work) to be
available first?
Can you imagine we could implement something like filp_open_bdev which
takes a (struct block_device *) as parameter instead of (const char *)?
That would allow the driver to open and read from the block device
before any filesystems (incl. /dev) become ready.
> That way you can even have a generic file provider that works
> on anything that can be read from.
>
While this could also be useful, it doesn't fulfil the requirement of
making NVMEM available as early as possible for other drivers to use,
e.g. for the Ethernet MAC address.
And it would also heavily deviate from how things work with other types
of flash storage typically used in embedded Linux devices such as SPI
NOR or NAND flash which is represented as MTD device.
Sidenote: block2mtd is also not an option because one cannot reference
block2mtd devices in device tree, hence they cannot serve as NVMEM
providers.
next prev parent reply other threads:[~2023-07-21 13:32 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
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 [this message]
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=ZLqIvuK2EX2hROJo@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=hch@infradead.org \
--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