From: "Luis R. Rodriguez" <mcgrof@kernel.org>
To: Greg KH <gregkh@linuxfoundation.org>,
Julia Lawall <julia.lawall@lip6.fr>
Cc: "Luis R. Rodriguez" <mcgrof@kernel.org>,
wagi@monom.org, dwmw2@infradead.org, rafal@milecki.pl,
arend.vanspriel@broadcom.com, rjw@rjwysocki.net,
yi1.li@linux.intel.com, atull@opensource.altera.com,
moritz.fischer@ettus.com, pmladek@suse.com,
johannes.berg@intel.com, emmanuel.grumbach@intel.com,
luciano.coelho@intel.com, kvalo@codeaurora.org, luto@kernel.org,
jkosina@suse.cz, torvalds@linux-foundation.org,
keescook@chromium.org, takahiro.akashi@linaro.org,
dhowells@redhat.com, pjones@redhat.com, hdegoede@redhat.com,
alan@linux.intel.com, tytso@mit.edu, NeilBrown <neilb@suse.com>,
Christoph Hellwig <hch@lst.de>,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH v9 1/5] firmware: add extensible driver data params
Date: Sat, 24 Jun 2017 00:43:38 +0200 [thread overview]
Message-ID: <20170623224338.GX21846@wotan.suse.de> (raw)
In-Reply-To: <20170623155123.GB3565@kroah.com>
On Fri, Jun 23, 2017 at 11:51:23PM +0800, Greg KH wrote:
> On Mon, Jun 19, 2017 at 09:35:22PM +0200, Luis R. Rodriguez wrote:
> > > I agree, that's what I'm saying here. I just do not see that happening
> > > with your patch set at all. It's adding more code, a more complex way
> > > to interact with the subsystem, and not making driver writer lives any
> > > easier at all that I can see.
> >
> > There are two things to consider:
> >
> > a) The current design of the firmware API, and interfaces with exported symbols
> >
> > The case for the driver data API was that we were being super sloppy with extensions,
> > to the point was making the internal code base very bug prone and full or redirect
> > conditionals with #ifdefery nightmware stuff.
> >
> > b) Features of the firmware API
> >
> > These have to be evaluated on a case by case basis.
>
> Wait, no, you didn't address my main complaint at all here. You are
> adding complexity for no perceived gain at all with this patch set.
>
> Now you might feel that this series gets you moving forward toward an
> end goal of reduced complexity and wonderfulness, but you know how
> kernel development works, you have to justify _all_ of your changes, not
> just some future end result that is not even presented here.
My point was that a) was already complex, so to say what I'm adding
to address a) is complex would be unfair, so rather the question should
be if its less complex, or if there are valid technical issues I'd like
to hear them.
> <wall of text snipped>
>
> I, and others I know, have told you to work on simplifying your
> responses, and descriptions, of patches. Take the extra time to make a
> shorter answer. You will get better results, as I dread having to read
> and respond to them currently.
Sure, point taken!
> I know you have spent a lot of time and effort on this work, but as it
> stands, this crazy new interface (data-driven api vs. the traditional
> procedural apis we know and love in Linux), is not acceptable at all.
Ah, yes! Here is what I believe seems to be the *crux* issue of these patch
series and I'm happy we have finally landed on it. Yes, indeed the new API
proposed here provides more flexibility, and it does so by embracing a
"data driven" API Vs the traditional procedural APIs we have seen for
*the firmware API*. If by data-driven you mean using structs to drive the
requirements, instead of adding more API per new feature.
I would strongly disagree that we always prefer adding new functional APIs
loosely. I think this should be reviewed on a case by case basis and it should
be up to the maintainer who has better visibility into the history of the code,
and what is coming. A quick git log grep found a recent commit example where we
take on a flexible API on other *random* places in Linux. Refer to for example
the change form bioset_create_nobvec() to bioset_create() and use flags in the
patch titled "blk: replace bioset_create_nobvec() with a flags arg to
bioset_create()", present on linux-next [0] followed by "blk: make the bioset
rescue_workqueue optional." [1] which also extends the flags and uses them.
To argue that we *still* need to keep doing a functional approach for the
firmware API and keep adding new routines for new features, seems insane to me
at this point -- if that is what you were suggesting...
Also, the reason *why* I think this discussion is important is that it also
implicates the amount of collateral evolutions needed per API. If you embrace
data-driven API (or flags, or structs for APIs) you should see less patches
due to collateral evolutions. In a way its my own resolution to mitigate
*unnecessary* collateral evolutions by proper architecture. Where that line is
drawn should be up to the designers of the API.
For system calls, for instance, I think its well accepted we *never* want to
make inflexible APIs. There is strong history for why that is the case. We
cannot compare system calls to exported symbols, at all, but we can learn a bit
from the flexibility efforts on them for exported symbols as well. Its *real
news* to me that we *always* prefer a procedural preferences for APIs /
exported symbols.
[0] https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=011067b05668b05aae88e5a24cff0ca0a67ca0b0
[1] https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=47e0fb461fca1a68a566c82fcc006cc787312d8c
> It's also blocking real bug fixes and features that people want
> addressed, which isn't acceptable.
What? What bugs ? I have addressed *every single* stable issue in queue and
have sent patches for them and they do not depend in any way on any of this
series! In fact I've taken liberty to go to great lengths to ensure *stable*
proposals *get proper review* so we *do the right thing*. Case in point was the
recent -ERESTART crap which in the end we ended up moving towards preferring
adding new swait API for stable for it.
I have ZERO stable fixes pending on my queue! Please name the bug pending.
In so far as features.. yes ! This delays adding new features because the crux
of the discussion is *how* to add them, a flag or new parameter in a struct
*or* do we add yet-another-API-call? I'm making a case for the first.
> Please take the time to step back, and see if you really want to spend
> the effort into creating something that you can easily justify and break
> down into acceptable patches. If so, great, do it, but as it stands
> today, that is not what you have done here, at all.
AKASHI addressed how to break down the patches further. I will take that on!
Your point above on data-driven Vs functional however still deserves some
discussion as otherwise the effort on the changes I've made are pointless.
Luis
next prev parent reply other threads:[~2017-06-23 22:43 UTC|newest]
Thread overview: 98+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-03-30 3:25 [PATCH v6 0/5] firmware: add driver data API Luis R. Rodriguez
2017-03-30 3:25 ` [PATCH v6 1/5] firmware: add extensible driver data params Luis R. Rodriguez
2017-04-06 7:26 ` Luca Coelho
2017-04-27 2:05 ` Luis R. Rodriguez
2017-03-30 3:25 ` [PATCH v6 2/5] firmware: add extensible driver data API Luis R. Rodriguez
2017-04-10 12:42 ` Coelho, Luciano
2017-04-11 8:01 ` takahiro.akashi
2017-04-27 3:23 ` Luis R. Rodriguez
2017-04-27 3:16 ` Luis R. Rodriguez
2017-04-27 5:44 ` Luca Coelho
2017-04-27 8:04 ` Luis R. Rodriguez
2017-04-27 6:09 ` Luca Coelho
2017-04-27 10:31 ` Luis R. Rodriguez
2017-04-13 9:36 ` AKASHI Takahiro
2017-04-28 0:51 ` Luis R. Rodriguez
2017-04-28 3:19 ` AKASHI Takahiro
2017-04-29 4:36 ` Luis R. Rodriguez
2017-03-30 3:25 ` [PATCH v6 3/5] test: add new driver_data load tester Luis R. Rodriguez
2017-04-11 8:32 ` AKASHI Takahiro
2017-04-28 1:45 ` Luis R. Rodriguez
2017-05-11 10:46 ` AKASHI Takahiro
2017-05-11 17:11 ` Luis R. Rodriguez
2017-05-17 22:45 ` Li, Yi
2017-05-19 18:31 ` Luis R. Rodriguez
2017-05-11 18:12 ` Luis R. Rodriguez
2017-05-11 18:26 ` Luis R. Rodriguez
2017-05-11 18:32 ` Luis R. Rodriguez
2017-05-12 0:28 ` AKASHI Takahiro
2017-05-12 15:59 ` Luis R. Rodriguez
2017-05-17 9:08 ` AKASHI Takahiro
2017-05-17 15:38 ` Luis R. Rodriguez
2017-05-12 0:20 ` AKASHI Takahiro
2017-05-12 15:52 ` Luis R. Rodriguez
2017-05-13 18:46 ` Luis R. Rodriguez
2017-03-30 3:25 ` [PATCH v6 4/5] iwlwifi: convert to use driver data API Luis R. Rodriguez
2017-04-10 13:19 ` Luca Coelho
2017-04-28 0:56 ` Luis R. Rodriguez
2017-04-28 12:17 ` Luca Coelho
2017-03-30 3:25 ` [PATCH v6 5/5] brcmfmac: don't warn user if requested nvram fails Luis R. Rodriguez
2017-04-27 0:49 ` Luis R. Rodriguez
2017-05-02 8:49 ` [PATCH v7 0/5] firmware: add driver data API Luis R. Rodriguez
2017-05-02 8:49 ` [PATCH v7 1/5] firmware: add extensible driver data params Luis R. Rodriguez
2017-05-11 18:17 ` Li, Yi
2017-05-11 18:28 ` Luis R. Rodriguez
2017-05-02 8:49 ` [PATCH v7 2/5] firmware: add extensible driver data API Luis R. Rodriguez
2017-05-02 8:49 ` [PATCH v7 3/5] test: add new driver_data load tester Luis R. Rodriguez
2017-05-11 10:10 ` AKASHI Takahiro
2017-05-11 17:00 ` Luis R. Rodriguez
2017-05-15 18:23 ` [PATCH v8] " Luis R. Rodriguez
2017-05-02 8:49 ` [PATCH v7 4/5] firmware: document the extensible driver data API Luis R. Rodriguez
2017-05-02 8:49 ` [PATCH v7 5/5] iwlwifi: convert to use " Luis R. Rodriguez
2017-05-19 19:10 ` [PATCH v8 0/5] firmware: add " Luis R. Rodriguez
2017-05-19 19:10 ` [PATCH v8 1/5] firmware: add extensible driver data params Luis R. Rodriguez
2017-05-19 19:10 ` [PATCH v8 2/5] firmware: add extensible driver data API Luis R. Rodriguez
2017-05-19 19:10 ` [PATCH v8 3/5] test: add new driver_data load tester Luis R. Rodriguez
2017-05-19 19:10 ` [PATCH v8 4/5] firmware: document the extensible driver data API Luis R. Rodriguez
2017-05-19 19:10 ` [PATCH v8 5/5] iwlwifi: convert to use " Luis R. Rodriguez
2017-06-05 21:33 ` [PATCH v8 0/5] firmware: add " Luis R. Rodriguez
2017-06-05 21:39 ` [PATCH v9 " Luis R. Rodriguez
2017-06-05 21:39 ` [PATCH v9 1/5] firmware: add extensible driver data params Luis R. Rodriguez
2017-06-13 9:05 ` Greg KH
2017-06-13 10:31 ` Rafał Miłecki
2017-06-13 13:17 ` Greg KH
2017-06-13 14:12 ` Rafał Miłecki
2017-06-13 15:32 ` Luis R. Rodriguez
2017-06-13 15:50 ` Greg KH
2017-06-13 19:40 ` Luis R. Rodriguez
2017-06-14 15:57 ` Li, Yi
2017-06-17 19:38 ` Greg KH
2017-06-19 7:33 ` Johannes Berg
2017-06-19 19:41 ` Luis R. Rodriguez
2017-06-20 1:26 ` AKASHI Takahiro
2017-06-19 19:35 ` Luis R. Rodriguez
2017-06-23 15:51 ` Greg KH
2017-06-23 22:43 ` Luis R. Rodriguez [this message]
2017-06-23 23:09 ` Linus Torvalds
2017-06-24 0:48 ` Luis R. Rodriguez
2017-06-24 12:39 ` Greg KH
2017-06-26 17:33 ` Luis R. Rodriguez
2017-06-26 18:19 ` Rafał Miłecki
2017-06-26 21:29 ` Luis R. Rodriguez
2017-06-27 2:28 ` Vikram Mulukutla
2017-06-27 17:25 ` Luis R. Rodriguez
2017-06-24 12:40 ` Greg KH
2017-06-26 15:50 ` Luis R. Rodriguez
2017-06-23 15:59 ` Greg KH
2017-06-23 22:47 ` Luis R. Rodriguez
2017-06-19 22:51 ` Li, Yi
2017-06-20 1:48 ` AKASHI Takahiro
2017-06-20 15:20 ` Li, Yi
2017-06-20 16:27 ` Vikram Mulukutla
2017-06-20 17:22 ` Luis R. Rodriguez
2017-06-21 0:49 ` AKASHI Takahiro
2017-06-23 16:33 ` Luis R. Rodriguez
2017-06-05 21:39 ` [PATCH v9 2/5] firmware: add extensible driver data API Luis R. Rodriguez
2017-06-05 21:39 ` [PATCH v9 3/5] test: add new driver_data load tester Luis R. Rodriguez
2017-06-05 21:39 ` [PATCH v9 4/5] firmware: document the extensible driver data API Luis R. Rodriguez
2017-06-05 21:39 ` [PATCH v9 5/5] iwlwifi: convert to use " 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=20170623224338.GX21846@wotan.suse.de \
--to=mcgrof@kernel.org \
--cc=alan@linux.intel.com \
--cc=arend.vanspriel@broadcom.com \
--cc=atull@opensource.altera.com \
--cc=dhowells@redhat.com \
--cc=dwmw2@infradead.org \
--cc=emmanuel.grumbach@intel.com \
--cc=gregkh@linuxfoundation.org \
--cc=hch@lst.de \
--cc=hdegoede@redhat.com \
--cc=jkosina@suse.cz \
--cc=johannes.berg@intel.com \
--cc=julia.lawall@lip6.fr \
--cc=keescook@chromium.org \
--cc=kvalo@codeaurora.org \
--cc=linux-kernel@vger.kernel.org \
--cc=luciano.coelho@intel.com \
--cc=luto@kernel.org \
--cc=moritz.fischer@ettus.com \
--cc=neilb@suse.com \
--cc=pjones@redhat.com \
--cc=pmladek@suse.com \
--cc=rafal@milecki.pl \
--cc=rjw@rjwysocki.net \
--cc=takahiro.akashi@linaro.org \
--cc=torvalds@linux-foundation.org \
--cc=tytso@mit.edu \
--cc=wagi@monom.org \
--cc=yi1.li@linux.intel.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®