public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Daniel Golle <daniel@makrotopia.org>
To: Bart Van Assche <bvanassche@acm.org>
Cc: "Rob Herring" <robh@kernel.org>,
	"Krzysztof Kozlowski" <krzysztof.kozlowski+dt@linaro.org>,
	"Conor Dooley" <conor+dt@kernel.org>,
	"Ulf Hansson" <ulf.hansson@linaro.org>,
	"Jens Axboe" <axboe@kernel.dk>,
	"Dave Chinner" <dchinner@redhat.com>, "Jan Kara" <jack@suse.cz>,
	"Thomas Weißschuh" <linux@weissschuh.net>,
	"Damien Le Moal" <dlemoal@kernel.org>,
	"Li Lingfeng" <lilingfeng3@huawei.com>,
	"Christian Brauner" <brauner@kernel.org>,
	"Christian Heusel" <christian@heusel.eu>,
	"Min Li" <min15.li@samsung.com>,
	"Adrian Hunter" <adrian.hunter@intel.com>,
	"Avri Altman" <avri.altman@wdc.com>,
	"Hannes Reinecke" <hare@suse.de>,
	"Christian Loehle" <CLoehle@hyperstone.com>,
	"Bean Huo" <beanhuo@micron.com>, "Yeqi Fu" <asuk4.q@gmail.com>,
	"Victor Shih" <victor.shih@genesyslogic.com.tw>,
	"Christophe JAILLET" <christophe.jaillet@wanadoo.fr>,
	"Dominique Martinet" <dominique.martinet@atmark-techno.com>,
	"Ricardo B. Marliere" <ricardo@marliere.net>,
	devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-mmc@vger.kernel.org, linux-block@vger.kernel.org
Subject: Re: [PATCH 4/8] block: implement NVMEM provider
Date: Thu, 21 Mar 2024 20:22:10 +0000	[thread overview]
Message-ID: <ZfyW8jTAgclicAWd@makrotopia.org> (raw)
In-Reply-To: <e170642d-9ae8-4d5a-90d9-2837f1bcef9b@acm.org>

Hi Bart,

thank you for looking at the patches!

On Thu, Mar 21, 2024 at 12:44:19PM -0700, Bart Van Assche wrote:
> On 3/21/24 12:34, Daniel Golle wrote:
> > On embedded devices using an eMMC it is common that one or more partitions
> > on the eMMC are used to store MAC addresses and Wi-Fi calibration EEPROM
> > data. Allow referencing the partition in device tree for the kernel and
> > Wi-Fi drivers accessing it via the NVMEM layer.
> 
> Why to store calibration data in a partition instead of in a file on a
> filesystem?

First of all, it's just how it is already in the practical world out
there. The same methods for mass-production are used independently of
the type of flash memory, so vendors don't care if in Linux the flash
ends up as MMC/block (in case of an eMMC) device or MTD device (in
case of SPI-NOR, for example). I can name countless devices of
numerous vendors following this generally very common practise (and
then ending up extracting that using ugly custom drivers, or poking
around in the block devices in early userland, ... none of it is nice,
which is the motivation for this series).
Adtran, GL-iNet, Netgear, ... to name just a few very popular vendors.

The devices are already out there, and the way they store those
details is considered part of the low level firmware which will never
change. Yet it would be nice to run vanilla Linux on them (or
OpenWrt), and make sure things like NFS root can work, and for that
the MAC address needs to be in place already, ie. extracting it in
userland would be too late.

However, I also believe there is nothing wrong with that and using a
filesystem comes with many additional pitfalls, such as being possibly
not cleanly unmounted, the file could be renamed or deleted by the
user, .... All that should not result in a device not having it's
proper MAC address any more.

Why have all the complexity for something as simple as storing 6 bytes
of MAC address?

I will not re-iterate over all that discussion now, you may look at
list archives where this has been explained and discussed also for the
first run of the RFC series last year.

> 
> > diff --git a/MAINTAINERS b/MAINTAINERS
> > index 8c88f362feb55..242a0a139c00a 100644
> > --- a/MAINTAINERS
> > +++ b/MAINTAINERS
> > @@ -3662,6 +3662,11 @@ L:	linux-mtd@lists.infradead.org
> >   S:	Maintained
> >   F:	drivers/mtd/devices/block2mtd.c
> > +BLOCK NVMEM DRIVER
> > +M:	Daniel Golle <daniel@makrotopia.org>
> > +S:	Maintained
> > +F:	block/blk-nvmem.c
> 
> Why to add this functionality to the block layer instead of somewhere
> in the drivers/ directory?

Simply because we need notifications about appearing and disappearing
block devices, or a way to iterate over all block devices in a system.
For both there isn't currently any other interface than using a
class_interface for that, and that requires access to &block_class
which is considered a block subsystem internal.

Also note that the same is true for the MTD NVMEM provider (in
drivers/mtd/mtdcore.c) as well as the UBI NVMEM provider (in
drivers/mtd/ubi/nvmem.c), both are considered an integral part of
their corresponding subsystems -- despite the fact that in those cases
this wouldn't even be stricktly needed as for MTD we got
register_mtd_user() and for UBI we'd have
ubi_register_volume_notifier().

Doing it differently for block devices would hence not only complicate
things unnessesarily, it would also be inconsistent.

  reply	other threads:[~2024-03-21 20:22 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-03-21 19:31 [PATCH 0/8] block: implement NVMEM provider Daniel Golle
2024-03-21 19:32 ` [PATCH 1/8] dt-bindings: block: add basic bindings for block devices Daniel Golle
2024-03-21 19:39   ` Bart Van Assche
2024-03-21 20:26     ` Daniel Golle
2024-03-21 19:33 ` [PATCH 2/8] block: partitions: populate fwnode Daniel Golle
2024-03-21 19:33 ` [PATCH 3/8] block: add new genhd flag GENHD_FL_NVMEM Daniel Golle
2024-03-22 17:49   ` Bart Van Assche
2024-03-22 18:07     ` Daniel Golle
2024-03-22 19:22       ` Bart Van Assche
2024-04-18 22:51         ` Daniel Golle
2024-03-21 19:34 ` [PATCH 4/8] block: implement NVMEM provider Daniel Golle
2024-03-21 19:44   ` Bart Van Assche
2024-03-21 20:22     ` Daniel Golle [this message]
2024-03-22 17:52       ` Bart Van Assche
2024-03-22 18:11         ` Daniel Golle
2024-03-21 19:34 ` [PATCH 5/8] dt-bindings: mmc: mmc-card: add block device nodes Daniel Golle
2024-03-21 19:35 ` [PATCH 6/8] mmc: core: set card fwnode_handle Daniel Golle
2024-03-21 19:35 ` [PATCH 7/8] mmc: block: set fwnode of disk devices Daniel Golle
2024-03-21 19:36 ` [PATCH 8/8] mmc: block: set GENHD_FL_NVMEM Daniel Golle
2024-03-22 17:52 ` [PATCH 0/8] block: implement NVMEM provider Bart Van Assche
2024-03-22 18:02   ` Daniel Golle
2024-03-22 19:19     ` Bart Van Assche
2024-03-25 15:10 ` Rob Herring
2024-03-25 15:38   ` Daniel Golle
2024-03-26 20:24     ` Rob Herring
2024-03-26 21:28       ` Daniel Golle
2024-03-27 12:33         ` Rob Herring
2024-03-25 15:12 ` Rob Herring
2024-03-25 15:46   ` Daniel Golle

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=ZfyW8jTAgclicAWd@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=beanhuo@micron.com \
    --cc=brauner@kernel.org \
    --cc=bvanassche@acm.org \
    --cc=christian@heusel.eu \
    --cc=christophe.jaillet@wanadoo.fr \
    --cc=conor+dt@kernel.org \
    --cc=dchinner@redhat.com \
    --cc=devicetree@vger.kernel.org \
    --cc=dlemoal@kernel.org \
    --cc=dominique.martinet@atmark-techno.com \
    --cc=hare@suse.de \
    --cc=jack@suse.cz \
    --cc=krzysztof.kozlowski+dt@linaro.org \
    --cc=lilingfeng3@huawei.com \
    --cc=linux-block@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mmc@vger.kernel.org \
    --cc=linux@weissschuh.net \
    --cc=min15.li@samsung.com \
    --cc=ricardo@marliere.net \
    --cc=robh@kernel.org \
    --cc=ulf.hansson@linaro.org \
    --cc=victor.shih@genesyslogic.com.tw \
    /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