mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Daniel Golle <daniel@makrotopia.org>
To: Ming Lei <ming.lei@redhat.com>
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>,
	"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 0/6] nvmem: add block device NVMEM provider
Date: Fri, 21 Jul 2023 12:08:56 +0100	[thread overview]
Message-ID: <ZLpnSK8sfZnEkcgj@makrotopia.org> (raw)
In-Reply-To: <ZLpCscTMc8h16Tyd@ovpn-8-26.pek2.redhat.com>

On Fri, Jul 21, 2023 at 04:32:49PM +0800, Ming Lei wrote:
> On Wed, Jul 19, 2023 at 11:01:14PM +0100, Daniel Golle wrote:
> > On embedded devices using an eMMC it is common that one or more (hw/sw)
> > partitions on the eMMC are used to store MAC addresses and Wi-Fi
> > calibration EEPROM data.
> > 
> > Implement an NVMEM provider backed by block devices as typically the
> > NVMEM framework is used to have kernel drivers read and use binary data
> > from EEPROMs, efuses, flash memory (MTD), ...
> > 
> > In order to be able to reference hardware partitions on an eMMC, add code
> > to bind each hardware partition to a specific firmware subnode.
> > 
> > This series is meant to open the discussion on how exactly the device tree
> > schema for block devices and partitions may look like, and even if using
> > the block layer to back the NVMEM device is at all the way to go -- to me
> > it seemed to be a good solution because it will be reuable e.g. for NVMe.
> 
> Just wondering why you don't use request_firmware() in drivers which consume
> the data, then the logic can be moved out of kernel, and you needn't to deal
> with device tree & block device.

The thing is: Why should the OS need to know about how to read
calibration to be fed into a wireless driver on a specific
hardware/firmware?

Or even worse: The MAC address of the main Ethernet interface? What if
for one of many possible reasons the extraction script in userland gets
broken and you would need to recover the system via SSH (because it's a
router or switch and doesn't even have any local console)?

Having information about the location of firmware artifacts be supplied
by the firmware (via device tree) seems to be the natural choice, and
also how it is done for devices booting off NOR or NAND flash by using
the NVMEM framework. Why should eMMC be the exception?

> 
> Or Android doesn't support udev and initrd?

Yes, sure, but then the OS ROM needs to know about and handle a lot of
very device-specific details in userland and if (unlike Android) the
same OS ROM should run on many devices that would mean it will have to
ship all of them in a huge initrd or root filesystem.

Also using userspace mechanics to acquire things as basic as a MAC
address seems overly complex and much more fragile than having the
firmware instruct the kernel via device tree to do so.

Hence, within the OpenWrt project, we've been working for years now to
push for Device Tree and lately for use of the NVMEM framework, exactly
to **reduce** the amount of hardware-specific knowledge in userland and
get rid of shell scripts acting as hotplug handlers for firmware
requests and such.

  reply	other threads:[~2023-07-21 11:11 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-07-19 22:01 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
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 [this message]
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=ZLpnSK8sfZnEkcgj@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

all inboxes | Powered by JetHome®