Re: [GIT PULL] interconnect changes for 5.5

From: Bjorn Andersson
Date: Sat Nov 09 2019 - 15:28:04 EST


On Sat, Nov 9, 2019 at 12:48 AM Greg Kroah-Hartman
<gregkh@xxxxxxxxxxxxxxxxxxx> wrote:
>
> On Fri, Nov 08, 2019 at 05:36:46PM -0800, Bjorn Andersson wrote:
> > On Fri, Nov 8, 2019 at 2:39 AM Greg Kroah-Hartman
> > <gregkh@xxxxxxxxxxxxxxxxxxx> wrote:
> > >
> > > On Thu, Nov 07, 2019 at 05:42:13PM +0200, Georgi Djakov wrote:
> > > > Hi Greg,
> > > >
> > > > On 11/7/19 16:21, Greg Kroah-Hartman wrote:
> > > > > On Thu, Nov 07, 2019 at 02:46:53PM +0200, Georgi Djakov wrote:
> > > > >> Hi Greg,
> > > > >>
> > > > >> This is a pull request with interconnect patches for the 5.5 merge window.
> > > > >> All patches have been for a while in linux-next without reported issues. The
> > > > >> details are in the signed tag. Please consider pulling into char-misc-next.
> > > > >
> > > > > I don't know about
> > > > > 0003-interconnect-Disallow-interconnect-core-to-be-built-.patch here.
> > > > > Shouldn't you just fix up the dependancies of subsystems that rely on
> > > > > this? We are moving more and more to kernels that "just work" with
> > > > > everything as modules, even on arm64 systems. So forbiding the
> > > > > interconnect code from being able to be built as a module does not feel
> > > > > good to me at all.
> > > >
> > > > Thank you for commenting on this! The initial idea was to keep everything as
> > > > modular as possible. The reasons behind this change is that other core
> > > > frameworks like cpufreq (and possibly others) want to call the interconnect
> > > > APIs. Some of these frameworks are built-in only and it would be easier to
> > > > handle dependencies if interconnect core built-in too. Now each user that
> > > > can be built-in has to specify in Kconfig that it depends on INTERCONNECT ||
> > > > !INTERCONNECT.
> > >
> > > That's fine, when those subsystems start to use those apis, that
> > > dependency needs to be added. Nothing new here, and you forcing it to
> > > either be "on or off" isn't going to change that. Let's do it correctly
> > > please.
> > >
> >
> > Please no!
> >
> > Making our frameworks tristate means that we can no longer rely on
> > include file stubs (as framework=m, client=y will fail), so every
> > single client must add the "depends on framework || framework=n" - in
> > contrast to nothing the framework itself is bool.
>
> What's wrong with a single "depends on framework"? If your code relies
> on this framework, you should depend on it, right?

As your question shows, everyone gets this wrong and the build breaks
all the time (it's not "depends on framework", it's "depends on
framework || framework=n" - and everyone you'll talk to will be
puzzled as to why this is).

But consistently introducing this for clocks, regulators, pinctrl,
resets, etc should be a task so large that people will come out
educated from it - or whatever it is that one feels after fixing
thousands of Kconfig entries.

> Include file stubs
> feels odd for a core functionality, if you can live without that
> functionality, then sure, don't depend on it and all should be just
> fine.
>

Odd or not, it's what we have in all these frameworks.

Regards,
Bjorn

> thanks,
>
> greg k-h