All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Luis R. Rodriguez" <mcgrof@kernel.org>
To: "Herbert, Marc" <marc.herbert@intel.com>
Cc: "Luis R. Rodriguez" <mcgrof@kernel.org>,
	Linus Torvalds <torvalds@linux-foundation.org>,
	Bjorn Andersson <bjorn.andersson@linaro.org>,
	Daniel Vetter <daniel.vetter@ffwll.ch>,
	Mimi Zohar <zohar@linux.vnet.ibm.com>,
	Felix Fietkau <nbd@nbd.name>,
	David Woodhouse <dwmw2@infradead.org>,
	Roman Pen <r.peniaev@gmail.com>,
	Ming Lei <ming.lei@canonical.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Michal Marek <mmarek@suse.com>,
	Greg KH <gregkh@linuxfoundation.org>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Vikram Mulukutla <markivx@codeaurora.org>,
	Stephen Boyd <stephen.boyd@linaro.org>,
	Mark Brown <broonie@kernel.org>, Takashi Iwai <tiwai@suse.de>,
	Johannes Berg <johannes@sipsolutions.net>,
	Christian Lamparter <chunkeey@googlemail.com>,
	Hauke Mehrtens <hauke@hauke-m.de>, Jeff Mahoney <jeffm@suse.com>
Subject: Re: [RFC] fs: add userspace critical mounts event support
Date: Wed, 5 Oct 2016 01:28:04 +0200	[thread overview]
Message-ID: <20161004232804.GX3296@wotan.suse.de> (raw)
In-Reply-To: <1324e12e-add0-4acd-3bb0-bf283ed0114c@intel.com>

On Fri, Sep 23, 2016 at 07:51:41PM -0700, Herbert, Marc wrote:
> On 06/09/2016 16:04, Luis R. Rodriguez wrote:
> > They claim that without it there is the race between /lib/firmware
> > being ready and driver asking for the firmware.
> 
> Hope it's understood by now.
> 
> > I was told there were quite a bit of out-of-tree hacks to address
> > this without using the usermode helper,
> 
> There are:
> https://chromium-review.googlesource.com/#/c/354089/
>  wait until SYSTEM_RUNNING before loading DMC firmware.

Jeesh. Good thing its not merged yet upstream, but indeed
I can understand why out of tree kernels are picking these
sorts of solutions up in the meantime.

> > the goal of this patch was to create the discussion needed to a
> > proper resolution to this.
> 
> Sincere thanks.
> 
> >>> On Tue 06 Sep 11:32 PDT 2016, Linus Torvalds wrote:
> >>>
> >>>> On Tue, Sep 6, 2016 at 10:46 AM, Bjorn Andersson
> >>>> Nobody has actually answered the "why don't we just tie the
> >>>> firmware and module together" question.
> >>>
> >>> The answer to this depends on the details of the suggestion; but
> >>> generally there's a much stronger bond between the kernel and the
> >>> driver than between the driver and the firmware in my cases.
> 
> Indeed.
> 
> The i915 DMC firmware is an interesting example. First of all it’s
> _optional_!  It’s critical for battery-powered systems but the i915
> driver works without it.

You obviously may want to upgrade firmware too, and a driver may
want to provide support for a series of old and new firmware.

An alternative idea hinted to me recently was a new system call for
drivers that need firmware early, so we'd have system call deal with
loading *both* the module and firmware -- but indeed optional firmware is one
possible issue that throws a wrench into this. We can surely add a flags
option but not yet sure if that alone would suffice for most of our needs.
You may need code to generate the firmware name dynamically as well, so a
system call would only be useful for a few cases where firmware requirement
information can be inferred by userspace by just looking at the module object.

> Dan wrote:
> > Plus all gpu drivers which need firmware. And yes we must load them
> > at probe because people are generally pissed when they boot their
> > machine and the screen goes black.

Thanks for the clarification BTW.

> > On top of that a lot of people
> > want their gpu drivers to be built-in, but can't ship the firmware
> > blobs in the kernel image because gpl. Yep, there's a bit a
> > contradiction there ...
> 
> Eppur si muove:
> 1) As Dan just wrote, users expect the screen to light up as soon as they
> press the power button so the i915 driver is built-in
> 2) ... yet they’ll never notice the nanojoules of battery loss caused
> by the DMC firmware being on a filesystem and loaded a tiny bit later.
> 
> SoCs and platforms have become some new kind of distributed systems
> where other processors run their own, specific software/OS/firmware.
> From this perspective the kernel plays a role similar to a boot server;
> and choke point. Granted: booting various and heterogeneous
> distributed systems doesn’t look like a simple problem to solve
> generically. Yet at the moment the kernel  doesn’t help by not
> even supporting something as basic as being told when the files it’s
> (unfortunately) in charge to deploy to other nodes become available and
> ready to deploy.

When you consider the problem more from a directed acyclic graph point of view
you soon realize the issue is really about the *need* for certain files upon
driver load and the lack of of semantics for a deterministic assurance that
when we look for files its a valid hunt. What you describe in terms of
SoCs is just that the complexity of the DAG increases considerably.

> It can’t be assumed that the driver and the firmware are two parts of
> the same software piece whereas they actually run on two different
> processors, are most likely developed and validated by completely
> different teams and released on different lifecycles. Especially in
> the Linux case.
> 
> I hope this distributed systems analogy captures the essence of the
> examples and rationales detailed elsewhere in this thread.

You also need to upgrade firmware, and users should be able to opt-in
for firmware, and pick any firmware, or roll back to older versions
as they see fit.

  Luis

  reply	other threads:[~2016-10-04 23:28 UTC|newest]

Thread overview: 144+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-06-16 22:54 [PATCH v2 0/5] firmware: add SmPL grammar to avoid issues Luis R. Rodriguez
2016-06-16 22:54 ` [PATCH v2 1/5] MAINTAINERS: extend firmware_class maintainer list Luis R. Rodriguez
2016-06-16 22:54 ` [Cocci] [PATCH v2 2/5] firmware: annotate thou shalt not request fw on init or probe Luis R. Rodriguez
2016-06-16 22:54   ` Luis R. Rodriguez
2016-06-16 22:54   ` Luis R. Rodriguez
2016-08-24  6:55   ` [Cocci] " Daniel Vetter
2016-08-24  6:55     ` Daniel Vetter
2016-08-24  6:55     ` Daniel Vetter
2016-08-24 20:39     ` [Cocci] " Luis R. Rodriguez
2016-08-24 20:39       ` Luis R. Rodriguez
2016-08-24 20:39       ` Luis R. Rodriguez
2016-08-25 11:05       ` [Cocci] " Daniel Vetter
2016-08-25 11:05         ` Daniel Vetter
2016-08-25 11:05         ` Daniel Vetter
2016-08-25 19:41         ` [Cocci] " Luis R. Rodriguez
2016-08-25 19:41           ` Luis R. Rodriguez
2016-08-25 19:41           ` Luis R. Rodriguez
2016-08-25 20:10           ` [Cocci] " Daniel Vetter
2016-08-25 20:10             ` Daniel Vetter
2016-08-25 20:10             ` Daniel Vetter
2016-08-25 20:25             ` [Cocci] " Luis R. Rodriguez
2016-08-25 20:25               ` Luis R. Rodriguez
2016-08-25 20:25               ` Luis R. Rodriguez
2016-08-25 20:30           ` [Cocci] " Dmitry Torokhov
2016-08-25 20:30             ` Dmitry Torokhov
2016-08-25 20:30             ` Dmitry Torokhov
2016-09-02 23:59           ` Luis R. Rodriguez
2016-09-02 23:59             ` Luis R. Rodriguez
2016-09-03  0:20             ` [RFC] fs: add userspace critical mounts event support Luis R. Rodriguez
2016-09-03  0:20               ` Luis R. Rodriguez
2016-09-03  4:11               ` Linus Torvalds
2016-09-03  4:11                 ` Linus Torvalds
2016-09-03  4:20                 ` Dmitry Torokhov
2016-09-03  4:20                   ` Dmitry Torokhov
2016-09-03  4:41                   ` Linus Torvalds
2016-09-03  4:41                     ` Linus Torvalds
2016-09-03 17:49                     ` Dmitry Torokhov
2016-09-03 17:49                       ` Dmitry Torokhov
2016-09-03 18:01                       ` Linus Torvalds
2016-09-03 18:01                         ` Linus Torvalds
2016-09-03 18:10                         ` Dmitry Torokhov
2016-09-03 18:10                           ` Dmitry Torokhov
2016-09-06 21:52                           ` Luis R. Rodriguez
2016-09-06 21:52                             ` Luis R. Rodriguez
2016-09-06 22:28                             ` Bjorn Andersson
2016-09-06 22:28                               ` Bjorn Andersson
2016-09-06 23:14                               ` Luis R. Rodriguez
2016-09-06 23:14                                 ` Luis R. Rodriguez
2016-09-24  1:37                           ` Herbert, Marc
2016-09-24  1:37                             ` Herbert, Marc
2016-09-24 17:41                             ` Dmitry Torokhov
2016-09-24 17:41                               ` Dmitry Torokhov
2016-10-05  0:00                               ` Luis R. Rodriguez
2016-10-05  0:12                                 ` Linus Torvalds
2016-10-05  0:24                                   ` Luis R. Rodriguez
2016-10-05  0:32                                     ` Linus Torvalds
2016-10-05 17:38                                       ` Luis R. Rodriguez
2016-10-05  1:48                                   ` Josh Triplett
2016-10-05  1:58                                     ` Linus Torvalds
2016-09-24  1:37                           ` Herbert, Marc
2016-09-24  1:37                           ` Herbert, Marc
2016-09-06 17:46                 ` Bjorn Andersson
2016-09-06 17:46                   ` Bjorn Andersson
2016-09-06 18:32                   ` Linus Torvalds
2016-09-06 18:32                     ` Linus Torvalds
2016-09-06 21:11                     ` Bjorn Andersson
2016-09-06 21:11                       ` Bjorn Andersson
2016-09-06 21:50                       ` Linus Torvalds
2016-09-06 21:50                         ` Linus Torvalds
2016-09-06 23:04                         ` Luis R. Rodriguez
2016-09-06 23:04                           ` Luis R. Rodriguez
2016-09-24  2:51                           ` Herbert, Marc
2016-10-04 23:28                             ` Luis R. Rodriguez [this message]
2016-09-06 22:32                     ` Luis R. Rodriguez
2016-09-06 22:32                       ` Luis R. Rodriguez
2016-09-14  2:38               ` Rob Landley
2016-09-14  2:38                 ` Rob Landley
2016-10-05 18:00                 ` Luis R. Rodriguez
2016-10-05 18:00                   ` Luis R. Rodriguez
2016-10-05 18:08                   ` Linus Torvalds
2016-10-05 18:08                     ` Linus Torvalds
2016-10-05 19:46                     ` Luis R. Rodriguez
2016-10-05 19:46                       ` Luis R. Rodriguez
2016-11-08 22:47                       ` Luis R. Rodriguez
2016-11-08 22:47                         ` Luis R. Rodriguez
2016-11-09  9:13                         ` Daniel Wagner
2016-11-09  9:13                           ` Daniel Wagner
2016-11-09 11:21                           ` Andy Lutomirski
2016-11-09 11:21                             ` Andy Lutomirski
2016-11-09 23:53                             ` Luis R. Rodriguez
2016-11-09 23:53                               ` Luis R. Rodriguez
2016-11-29 21:54                             ` Luis R. Rodriguez
2016-11-29 21:54                               ` Luis R. Rodriguez
2016-11-09 23:40                         ` Luis R. Rodriguez
2016-11-09 23:40                           ` Luis R. Rodriguez
2016-11-15  9:28                         ` Johannes Berg
2016-11-15  9:28                           ` Johannes Berg
2016-11-29 21:10                           ` Tom Gundersen
2016-11-29 21:10                             ` Tom Gundersen
2016-11-29 21:37                             ` Luis R. Rodriguez
2016-11-29 21:37                               ` Luis R. Rodriguez
2016-11-30  8:18                               ` Johannes Berg
2016-11-30  8:18                                 ` Johannes Berg
2016-06-16 22:54 ` [PATCH v2 3/5] firmware: update usermode helper docs and add SmPL report Luis R. Rodriguez
2016-06-16 22:54 ` [PATCH v2 4/5] firmware: add usermode helper DECLARE_FW_LOADER_USER() annotation Luis R. Rodriguez
2016-06-16 22:54 ` [PATCH v2 5/5] firmware: fix fw cache to avoid usermode helper on suspend Luis R. Rodriguez
2016-07-07  0:56 ` [PATCH v2 0/5] firmware: add SmPL grammar to avoid issues Luis R. Rodriguez
2016-07-13 21:47   ` Luis R. Rodriguez
2016-07-28  0:41     ` Luis R. Rodriguez
2016-08-03 14:50       ` Luis R. Rodriguez
2016-08-03 15:04         ` Greg KH
2016-08-03 17:06           ` Luis R. Rodriguez
2016-08-03 19:32             ` Greg KH
2016-08-03 19:46               ` Luis R. Rodriguez
2016-07-13 23:52   ` Fengguang Wu
2016-07-14  2:15     ` Luis R. Rodriguez
2016-07-14  2:23       ` Fengguang Wu
2016-07-14  3:08         ` Luis R. Rodriguez
2016-07-14  3:35           ` Fengguang Wu
2016-08-24  0:45 ` [PATCH v3 " mcgrof
2016-08-24  0:45   ` [PATCH v3 1/5] MAINTAINERS: extend firmware_class maintainer list mcgrof
2016-08-24  0:45   ` [Cocci] [PATCH v3 2/5] firmware: annotate thou shalt not request fw on init or probe mcgrof at kernel.org
2016-08-24  0:45     ` mcgrof
2016-08-24  0:45     ` mcgrof
2016-08-24  8:17     ` [Cocci] " Gabriel Paubert
2016-08-24  8:17       ` Gabriel Paubert
2016-08-24  8:17       ` Gabriel Paubert
2016-09-02 18:26       ` Luis R. Rodriguez
2016-09-02 18:26         ` Luis R. Rodriguez
2016-08-24  0:45   ` [PATCH v3 3/5] firmware: update usermode helper docs and add SmPL report mcgrof
2016-08-24  0:45   ` [PATCH v3 4/5] firmware: add usermode helper DECLARE_FW_LOADER_USER() annotation mcgrof
2016-08-24  0:45   ` [PATCH v3 5/5] firmware: fix fw cache to avoid usermode helper on suspend mcgrof
2016-08-31  7:03     ` Daniel Wagner
2016-09-02 18:13       ` Luis R. Rodriguez
2016-09-07  0:42   ` [PATCH v4 0/5] firmware: add SmPL grammar to avoid issues Luis R. Rodriguez
2016-09-07  0:42     ` [PATCH v4 1/5] MAINTAINERS: extend firmware_class maintainer list Luis R. Rodriguez
2016-09-07  6:43       ` Greg KH
2016-09-08 14:58         ` Luis R. Rodriguez
2016-09-08 15:25         ` Ming Lei
2016-09-07  0:42     ` [PATCH v4 2/5] firmware: annotate thou shalt not request fw on init or probe Luis R. Rodriguez
2016-09-07  0:42       ` Luis R. Rodriguez
2016-09-07  0:42     ` [PATCH v4 3/5] firmware: update usermode helper docs and add SmPL report Luis R. Rodriguez
2016-09-07  0:42     ` [PATCH v4 4/5] firmware: add usermode helper DECLARE_FW_LOADER_USER() annotation Luis R. Rodriguez
2016-09-07  0:42     ` [PATCH v4 5/5] firmware: fix fw cache to avoid usermode helper on suspend Luis R. Rodriguez

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=20161004232804.GX3296@wotan.suse.de \
    --to=mcgrof@kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=bjorn.andersson@linaro.org \
    --cc=broonie@kernel.org \
    --cc=chunkeey@googlemail.com \
    --cc=daniel.vetter@ffwll.ch \
    --cc=dwmw2@infradead.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=hauke@hauke-m.de \
    --cc=jeffm@suse.com \
    --cc=johannes@sipsolutions.net \
    --cc=linux-kernel@vger.kernel.org \
    --cc=marc.herbert@intel.com \
    --cc=markivx@codeaurora.org \
    --cc=ming.lei@canonical.com \
    --cc=mmarek@suse.com \
    --cc=nbd@nbd.name \
    --cc=r.peniaev@gmail.com \
    --cc=stephen.boyd@linaro.org \
    --cc=tiwai@suse.de \
    --cc=torvalds@linux-foundation.org \
    --cc=zohar@linux.vnet.ibm.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.