devicetree-spec.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Daniel Thompson <daniel.thompson-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
To: Arnd Bergmann <arnd-r2nGTMty4D4@public.gmane.org>
Cc: Rob Herring <robherring2-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
	Warner Losh <imp-uzTCJ5RojNnQT0dZR+AlfA@public.gmane.org>,
	Lee Jones <lee.jones-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>,
	Peter Griffin
	<peter.griffin-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>,
	Pawel Moll <pawel.moll-5wv7dgnIgG8@public.gmane.org>,
	Mark Rutland <mark.rutland-5wv7dgnIgG8@public.gmane.org>,
	Ian Campbell
	<ijc+devicetree-KcIKpvwj1kUDXYZnReoRVg@public.gmane.org>,
	Kumar Gala <galak-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>,
	Vinod Koul <vinod.koul-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>,
	"devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
	<devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	Maxime Coquelin <maxime.coquelin-qxv4g6HH51o@public.gmane.org>,
	Patrice Chotard <patrice.chotard-qxv4g6HH51o@public.gmane.org>,
	Ludovic Barre <ludovic.barre-qxv4g6HH51o@public.gmane.org>,
	"devicetree-spec-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
	<devicetree-spec-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>
Subject: Re: st_fdma: Firmware filename in DT?
Date: Mon, 7 Sep 2015 15:36:27 +0100	[thread overview]
Message-ID: <55EDA0EB.1040501@linaro.org> (raw)
In-Reply-To: <1638322.iN3qcjUCN8@wuerfel>

On 07/09/15 13:33, Arnd Bergmann wrote:
> On Monday 07 September 2015 11:30:11 Daniel Thompson wrote:
>>>>
>>>> I would suggest "firmware-names" to be consistent with other naming
>>>> convention and because their can be more than one (either at the same
>>>> time or as fallback). It also leaves "firmware" available if we want
>>>> to have phandle's to firmware embedded in the DT at some point later.
>>>
>>> Having list of strings would certainly make this more flexible than
>>> just a single string, for the same reason as taking the list of
>>> compatible values as the base, so +1 for "firmware-names" over "firmware".
>>
>> I was recently thinking about how DT filenames would interact with
>> incompatible ABI changes to the firmware's register and/or wire protocol.
>>
>> Just for example we start with f/ware ABI A and we create a mainline
>> kernel X that supported it.
>>
>> Vendor now releases a new firmware with ABI B and we update the mainline
>> driver to support ABI A (to avoid breaking old userspaces) and B,
>> eventually releasing kernel Y.
>>
>> The question now is how kernels X and Y should use the DT to generate
>> the filename. It is very desirable that kernels X and Y use *different*
>> filenames because otherwise a single userspace could not support the new
>> feature *and* boot with both X and Y.
>
> Generally speaking, the kernel should shield user space from ABI
> differences in the firmware and still provide the same user space ABI
> (possibly emulated, when the newer firmware removes features of the
> old one). Can you think of a case where a device firmware directly
> defines the user ABI without having kernel visible changes?

I don't mean that the firmware ABI is exposed to userspace.

I mean if you use the same filename for both ABIs (in /lib/firmware) 
then kernel X with lose functionality if it is booted with a userspace 
that has updated to the new firmware (maybe even crash if I can't detect 
at runtime the version of the firmware is has loaded). That sort of 
thing is the pain for distros which support booting with multiple 
kernels (apt-get/dnf simply won't know when it is safe to update the 
firmware binary).


>> Having lists of firmwares can certainly help solve this (providing the
>> list can be used to allow a driver to select for an ABI is supports).
>> However I afraid I find this example argues against having filenames in
>> DT at all because it seems odd to me that, for kernel and userspace to
>> adopt ABI B that must wait until the DT is updated to include support
>> for ABI B. The hardware didn't change...
>
> This is not what I was thinking of for a list of file names: I would not
> want a case where the kernel might pick between multiple incompatible
> files without knowing what they are, especially if the differences
> are ABI relevant.

Nor me.

Personally I prefer an "assertive" driver that imposes a filename for 
the firmwares it needs. Thus if there is an ABI change the driver writer 
can load a completely different firmware file without needing a DT 
update. That said I'm not especially invested either way.

However whatever solution is reached I would quite like to be able to 
boot kernels from either side of an ABI break from a single userspace 
(and get the new features when the kernel supports them).


> However, being very specific would let users intentionally install a
> firmware that is only used on a particular instance of a device that
> they want to behave differently, while the generic firmware would come
> preinstalled with the normal linux-firmware package.

Not sure I follow this. You mean embedding filenames in DT makes it easy 
to something like a vendor/reverse-engineering mode.


Daniel.

  reply	other threads:[~2015-09-07 14:36 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20150903144944.GC7093@griffinp-ThinkPad-X1-Carbon-2nd>
2015-09-03 21:45 ` st_fdma: Firmware filename in DT? Rob Herring
     [not found]   ` <CAL_JsqKQqbAQCPR6xuR2Ke5gEdX4kQYb29-W3qNaZqjM_JBoYg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-09-04  6:59     ` Lee Jones
2015-09-04  9:20       ` Peter Griffin
2015-09-04 10:21         ` Lee Jones
2015-09-04 13:04           ` Arnd Bergmann
     [not found]             ` <201509041504.38412.arnd-r2nGTMty4D4@public.gmane.org>
2015-09-04 13:26               ` Lee Jones
2015-09-04 13:44                 ` Rob Herring
     [not found]                   ` <CAL_Jsq+XpBV+BMMq1gYnvKtv6O5mjqVw6zsP4G-4Za3cQm9PzQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-09-04 13:54                     ` Lee Jones
2015-09-04 14:36                       ` Warner Losh
2015-09-05  9:17                 ` Arnd Bergmann
     [not found]                   ` <201509051117.59751.arnd-r2nGTMty4D4@public.gmane.org>
2015-09-08  3:14                     ` David Gibson
2015-09-04 14:30               ` Warner Losh
     [not found]                 ` <C93CEE95-AF30-4B2D-BD96-66733B282414-uzTCJ5RojNnQT0dZR+AlfA@public.gmane.org>
2015-09-05  8:58                   ` Arnd Bergmann
     [not found]                     ` <CANCZdfrLbbN_nGJ8WLsBHHGuM3SxGgiLgjkZ+YG4zP4BBA68YQ@mail.gmail.com>
     [not found]                       ` <CANCZdfrLbbN_nGJ8WLsBHHGuM3SxGgiLgjkZ+YG4zP4BBA68YQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-09-07 12:41                         ` Arnd Bergmann
2015-09-04 14:27           ` Warner Losh
     [not found]             ` <5E0DCAA5-DB90-4682-92F2-061A07FE973E-uzTCJ5RojNnQT0dZR+AlfA@public.gmane.org>
2015-09-04 19:04               ` Rob Herring
     [not found]                 ` <CAL_Jsq+bw1TcXt0c8L4BSvwWK82L2cG-qdw369EkvxWe-5RXbQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-09-05  9:25                   ` Arnd Bergmann
     [not found]                     ` <201509051125.43527.arnd-r2nGTMty4D4@public.gmane.org>
2015-09-07 10:30                       ` Daniel Thompson
     [not found]                         ` <55ED6733.7050807-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2015-09-07 12:33                           ` Arnd Bergmann
2015-09-07 14:36                             ` Daniel Thompson [this message]
     [not found]                               ` <55EDA0EB.1040501-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2015-09-07 15:59                                 ` Arnd Bergmann
2015-09-10 14:18                                 ` Peter Griffin
2015-09-11  9:17                                   ` Lee Jones
2015-09-11  9:21                                     ` Arnd Bergmann
2015-09-11  9:39                                       ` Lee Jones
2015-09-11  9:46                                     ` Peter Griffin
2015-09-11 10:25                                       ` Lee Jones
2015-09-11 12:31                                         ` Peter Griffin
2015-09-04 16:19           ` Daniel Thompson
2015-09-04  8:46     ` Peter Griffin
2015-09-08  2:57     ` David Gibson

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=55EDA0EB.1040501@linaro.org \
    --to=daniel.thompson-qsej5fyqhm4dnm+yrofe0a@public.gmane.org \
    --cc=arnd-r2nGTMty4D4@public.gmane.org \
    --cc=devicetree-spec-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=galak-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org \
    --cc=ijc+devicetree-KcIKpvwj1kUDXYZnReoRVg@public.gmane.org \
    --cc=imp-uzTCJ5RojNnQT0dZR+AlfA@public.gmane.org \
    --cc=lee.jones-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org \
    --cc=ludovic.barre-qxv4g6HH51o@public.gmane.org \
    --cc=mark.rutland-5wv7dgnIgG8@public.gmane.org \
    --cc=maxime.coquelin-qxv4g6HH51o@public.gmane.org \
    --cc=patrice.chotard-qxv4g6HH51o@public.gmane.org \
    --cc=pawel.moll-5wv7dgnIgG8@public.gmane.org \
    --cc=peter.griffin-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org \
    --cc=robherring2-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
    --cc=vinod.koul-ral2JQCrhuEAvxtiuMwx3w@public.gmane.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).