All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Luis R. Rodriguez" <mcgrof@kernel.org>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Kees Cook <keescook@chromium.org>,
	"Luis R. Rodriguez" <mcgrof@kernel.org>,
	Andres Rodriguez <andresx7@gmail.com>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Hans de Goede <hdegoede@redhat.com>,
	David Woodhouse <dwmw2@infradead.org>,
	LKML <linux-kernel@vger.kernel.org>,
	Alex Deucher <alexdeucher@gmail.com>,
	ckoenig.leichtzumerken@gmail.com,
	Kalle Valo <kvalo@codeaurora.org>,
	Arend van Spriel <arend.vanspriel@broadcom.com>
Subject: Re: [PATCH 5/9] firmware: add functions to load firmware without warnings v4
Date: Sat, 21 Apr 2018 19:36:50 +0200	[thread overview]
Message-ID: <20180421173650.GW14440@wotan.suse.de> (raw)
In-Reply-To: <CA+55aFw4WxBDD3YA9Ksj=mxcYmAg7+bnjfuDVtBnzn+0w6mtbw@mail.gmail.com>

On Sat, Apr 21, 2018 at 08:32:00AM -0700, Linus Torvalds wrote:
> On Sat, Apr 21, 2018 at 8:11 AM, Kees Cook <keescook@chromium.org> wrote:
> >
> > What was the objection to using parameters for this? i.e. something
> > like the gfp flags, but have a behavior flag FW_RQ_NOWAIT,
> > FW_RQ_NOWARN, etc?
> 
> The objection was that the patches that I think Luis refers to

There were different topics of discussion, people can conflate the topics
discussed easily as all these topics were discussed around the same time so
best to recap and split them up:

  a) bikeshedding on the name: I suggested long ago we've already passed usage
     of the fw API to things which are *not firmware*, so suggested we use a new
     naming scheme, the last one I recommended was a driver_data_*() prefix.
     Greg last suggested a firmware_*() prefix -- and to rename *all* existing 
     callers with this new prefix as well long term... I am done with bikeshedding
     and frankly don't care anymore. Whatever you folks decide, I just want to
     move on with life, so I am moving along with the firmware_*() prefix.

  b) evolving the API: data driven Vs functional -- where to draw the fine line
       -- this is the topic we are discussing now again --

  c) firmware signing: we've decided against it for now and folks who need it
     can open code it, mainly due to most hw supporting FW signing already

>  (a) passed in a union of random arguments

It split the API into two main routine calls, a sync and an async call,
and also accepted a *structure of parameters* which describe the request
requirements [0].

It turned out this approach was *too data driven*, and Greg advised against
it, asking for a new call *per new functionality*, as is typically done...

[0] https://lkml.kernel.org/r/20170605213937.26215-2-mcgrof@kernel.org

>  (b) changed all the users, even the ones that didn't want to be changed.

That *never happened* actually. The SmPL grammar I provided long ago was for
those who *did* want to change the new API if they had a new *feature* they
wanted to take advantage of. The patches you may have seen were *examples* of
*two drivers* which were converted over just an example with the grammar.

On the last iteration of my series I skipped adding the SmPL helpers, and
only converted *one* driver for *new functionality*.

In the last driver data patch series I only converted iwlwifi as I was changing
it to use the new functionality to replace its own internal recursion set of
calls with an internal deterministic solution which lets drivers call for a
range of API files and lets it use the first one in a range it finds [1],
with this diff stat:

 drivers/net/wireless/intel/iwlwifi/iwl-drv.c | 91 ++++++++++------------------
 1 file changed, 31 insertions(+), 60 deletions(-)

[1] https://lkml.kernel.org/r/20170605213937.26215-6-mcgrof@kernel.org

> they were nasty and illegible and pointless.

Clearly request_firmware_nowait2() is *not* much better... right? So it illustrates
the problem I was hinting which we'd eventually cross...

> Using some single flag field for an extended function, and leaving the
> existing functions alone so that you don't have to convert existing
> users - that would have been fine. That's not what was tried and
> rejected.

Actually it was tried, however the divide was perhaps *too broad* and split
all possible *new* functionality into two calls, a sync and a async call.

A flag based mechanism *is* reasonable to me given I have been an advocate
of such type of mechanism for a long while. It however is against what
Greg requested -- to have a new call *per functionality*.

So feel free to advise... I really just want us to move on.

  Luis

  reply	other threads:[~2018-04-21 17:36 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-04-17 15:32 [PATCH 0/9] Loading optional firmware v3 Andres Rodriguez
2018-04-17 15:32 ` [PATCH 1/9] firmware: some documentation fixes Andres Rodriguez
2018-04-17 20:59   ` Randy Dunlap
2018-04-17 15:33 ` [PATCH 2/9] firmware: wrap FW_OPT_* into an enum Andres Rodriguez
2018-04-21 13:57   ` Luis R. Rodriguez
2018-04-17 15:33 ` [PATCH 3/9] firmware: add kernel-doc for enum fw_opt Andres Rodriguez
2018-04-21 14:26   ` Luis R. Rodriguez
2018-04-17 15:33 ` [PATCH 4/9] firmware: use () to terminate kernel-doc function names Andres Rodriguez
2018-04-17 20:56   ` Randy Dunlap
2018-04-17 15:33 ` [PATCH 5/9] firmware: add functions to load firmware without warnings v4 Andres Rodriguez
2018-04-20 10:28   ` Kalle Valo
2018-04-21 14:32   ` Luis R. Rodriguez
2018-04-21 14:49     ` Luis R. Rodriguez
2018-04-21 15:11       ` Kees Cook
2018-04-21 15:32         ` Linus Torvalds
2018-04-21 17:36           ` Luis R. Rodriguez [this message]
2018-04-22 20:26             ` Luis R. Rodriguez
2018-04-17 15:33 ` [PATCH 6/9] firmware: print firmware name on fallback path Andres Rodriguez
2018-04-17 15:33 ` [PATCH 7/9] drm/amdgpu: use firmware_request_nowarn to load firmware Andres Rodriguez
2018-04-17 15:33 ` [PATCH 8/9] ath10k: use request_firmware_nowarn " Andres Rodriguez
2018-04-20 10:19   ` Kalle Valo
2018-04-20 10:19     ` Kalle Valo
2018-04-20 10:19     ` Kalle Valo
2018-04-17 15:33 ` [PATCH 9/9] brcmfmac: use request_firmware_nowait2 to load firmware without warnings Andres Rodriguez
2018-04-20 10:26   ` Kalle Valo
2018-04-20 10:26     ` Kalle Valo
2018-04-20 19:33     ` Andres Rodriguez
2018-04-21  7:19       ` Kalle Valo
2018-04-21  7:19         ` Kalle Valo
2018-04-21  8:04     ` Arend van Spriel
2018-04-23 13:54       ` Kalle Valo
2018-04-23 13:54         ` Kalle Valo

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=20180421173650.GW14440@wotan.suse.de \
    --to=mcgrof@kernel.org \
    --cc=alexdeucher@gmail.com \
    --cc=andresx7@gmail.com \
    --cc=arend.vanspriel@broadcom.com \
    --cc=ckoenig.leichtzumerken@gmail.com \
    --cc=dwmw2@infradead.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=hdegoede@redhat.com \
    --cc=keescook@chromium.org \
    --cc=kvalo@codeaurora.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=torvalds@linux-foundation.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 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.