From: Frank Rowand <frowand.list@gmail.com>
To: Rob Herring <robh+dt@kernel.org>,
Sandeep Patil <sspatil@android.com>,
Saravana Kannan <saravanak@google.com>
Cc: Mark Rutland <mark.rutland@arm.com>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
"Rafael J. Wysocki" <rafael@kernel.org>,
David Collins <collinsd@codeaurora.org>,
devicetree@vger.kernel.org,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
Android Kernel Team <kernel-team@android.com>
Subject: Re: [RESEND PATCH v1 1/5] of/platform: Speed up of_find_device_by_node()
Date: Wed, 12 Jun 2019 09:47:05 -0700 [thread overview]
Message-ID: <da287ff3-5c20-3797-0d05-34bd84fe25ce@gmail.com> (raw)
In-Reply-To: <75be9e83-4d56-6080-7011-0c79b70c8cb9@gmail.com>
On 6/12/19 9:07 AM, Frank Rowand wrote:
> On 6/12/19 6:53 AM, Rob Herring wrote:
>> On Tue, Jun 11, 2019 at 3:52 PM Sandeep Patil <sspatil@android.com> wrote:
>>>
>>> On Tue, Jun 11, 2019 at 01:56:25PM -0700, 'Saravana Kannan' via kernel-team wrote:
>>>> On Tue, Jun 11, 2019 at 8:18 AM Frank Rowand <frowand.list@gmail.com> wrote:
>>>>>
>>>>> Hi Saravana,
>>>>>
>>>>> On 6/10/19 10:36 AM, Rob Herring wrote:
>>>>>> Why are you resending this rather than replying to Frank's last
>>>>>> comments on the original?
>>>>>
>>>>> Adding on a different aspect... The independent replies from three different
>>>>> maintainers (Rob, Mark, myself) pointed out architectural issues with the
>>>>> patch series. There were also some implementation issues brought out.
>>>>> (Although I refrained from bringing up most of my implementation issues
>>>>> as they are not relevant until architecture issues are resolved.)
>>>>
>>>> Right, I'm not too worried about the implementation issues before we
>>>> settle on the architectural issues. Those are easy to fix.
>>>>
>>>> Honestly, the main points that the maintainers raised are:
>>>> 1) This is a configuration property and not describing the device.
>>>> Just use the implicit dependencies coming from existing bindings.
>>>>
>>>> I gave a bunch of reasons for why I think it isn't an OS configuration
>>>> property. But even if that's not something the maintainers can agree
>>>> to, I gave a concrete example (cyclic dependencies between clock
>>>> provider hardware) where the implicit dependencies would prevent one
>>>> of the devices from probing till the end of time. So even if the
>>>> maintainers don't agree we should always look at "depends-on" to
>>>> decide the dependencies, we still need some means to override the
>>>> implicit dependencies where they don't match the real dependency. Can
>>>> we use depends-on as an override when the implicit dependencies aren't
>>>> correct?
>>>>
>>>> 2) This doesn't need to be solved because this is just optimizing
>>>> probing or saving power ("we should get rid of this auto disabling"):
>>>>
>>>> I explained why this patch series is not just about optimizing probe
>>>> ordering or saving power. And why we can't ignore auto disabling
>>>> (because it's more than just auto disabling). The kernel is currently
>>>> broken when trying to use modules in ARM SoCs (probably in other
>>>> systems/archs too, but I can't speak for those).
>>>>
>>>> 3) Concerns about backwards compatibility
>>>>
>>>> I pointed out why the current scheme (depends-on being the only source
>>>> of dependency) doesn't break compatibility. And if we go with
>>>> "depends-on" as an override what we could do to keep backwards
>>>> compatibility. Happy to hear more thoughts or discuss options.
>>>>
>>>> 4) How the "sync_state" would work for a device that supplies multiple
>>>> functionalities but a limited driver.
>>>
>>> <snip>
>>> To be clear, all of above are _real_ problems that stops us from efficiently
>>> load device drivers as modules for Android.
>>>
>>> So, if 'depends-on' doesn't seem like the right approach and "going back to
>>> the drawing board" is the ask, could you please point us in the right
>>> direction?
>>
>> Use the dependencies which are already there in DT. That's clocks,
>> pinctrl, regulators, interrupts, gpio at a minimum. I'm simply not
>> going to accept duplicating all those dependencies in DT. The downside
>> for the kernel is you have to address these one by one and can't have
>> a generic property the driver core code can parse. After that's in
>> place, then maybe we can consider handling any additional dependencies
>> not already captured in DT. Once all that is in place, we can probably
>> sort device and/or driver lists to optimize the probe order (maybe the
>> driver core already does that now?).
>>
>> Get rid of the auto disabling of clocks and regulators in
>> late_initcall. It's simply not a valid marker that boot is done when
>> modules are involved. We probably can't get rid of it as lot's of
>> platforms rely on that, so it will have to be opt out. Make it the
>> platform's responsibility for ensuring a consistent state.
>
> Setting aside modules for one moment, why is there any auto disabling
> of clocks and regulators in late initcall???? Deferred probe processing
> does not begin until deferred_probe_initcall() sets
I failed to mention that deferred_probe_initcall() is a late_initcall.
-Frank
> driver_deferred_probe_enable to true. No late_initcall function
> should ever depend on ordering with respect to any other late_initcall.
> (And yes, I know that among various initcall levels, there have been
> games played to get a certain amount of ordering, but that is at
> best fragile.)
>
> In addition to modules, devicetree overlays need to be considered.
>
> Just as modules can result in a driver appearing after boot finishes,
> overlays can result in new devicetree nodes (and thus dependencies)
> appearing after boot finishes.
>
> -Frank
>
>>
>> Perhaps we need a 'boot done' or 'stop deferring probe' trigger from
>> userspace in order to make progress if dependencies are missing. Or
>> maybe just some timeout would be sufficient. I think this is probably
>> more useful for development than in a shipping product. Even if you
>> could fallback to polling mode instead of interrupts for example, I
>> doubt you would want to in a product.
>>
>> You should also keep in mind that everything needed for a console has
>> to be built in. Maybe Android can say the console isn't needed, but in
>> general we can't.
>>
>> Rob
>> .
>>
>
>
next prev parent reply other threads:[~2019-06-12 16:47 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-06-04 0:32 [RESEND PATCH v1 0/5] Solve postboot supplier cleanup and optimize probe ordering Saravana Kannan
2019-06-04 0:32 ` [RESEND PATCH v1 1/5] of/platform: Speed up of_find_device_by_node() Saravana Kannan
2019-06-10 17:36 ` Rob Herring
2019-06-10 19:15 ` Saravana Kannan
2019-06-10 21:07 ` Rob Herring
2019-06-11 15:18 ` Frank Rowand
2019-06-11 20:56 ` Saravana Kannan
2019-06-11 21:52 ` Sandeep Patil
2019-06-12 13:53 ` Rob Herring
2019-06-12 14:21 ` Greg Kroah-Hartman
2019-06-12 16:53 ` Rob Herring
2019-06-12 17:08 ` Greg Kroah-Hartman
2019-06-12 18:19 ` Rob Herring
2019-06-12 19:29 ` Saravana Kannan
2019-06-12 20:23 ` Frank Rowand
2019-06-12 21:12 ` Rob Herring
2019-06-12 22:10 ` Saravana Kannan
2019-06-12 23:23 ` Rob Herring
2019-06-18 20:47 ` Sandeep Patil
2019-06-18 21:22 ` Saravana Kannan
2019-06-12 17:03 ` Frank Rowand
2019-06-12 16:07 ` Frank Rowand
2019-06-12 16:47 ` Frank Rowand [this message]
2019-06-12 19:03 ` Frank Rowand
2019-06-04 0:32 ` [RESEND PATCH v1 2/5] driver core: Add device links support for pending links to suppliers Saravana Kannan
2019-06-04 0:32 ` [RESEND PATCH v1 3/5] dt-bindings: Add depends-on property Saravana Kannan
2019-06-12 14:45 ` Sudeep Holla
2019-06-04 0:32 ` [RESEND PATCH v1 4/5] of/platform: Add functional dependency link from "depends-on" property Saravana Kannan
2019-06-04 0:32 ` [RESEND PATCH v1 5/5] driver core: Add sync_state driver/bus callback Saravana Kannan
2019-06-12 21:21 ` [RESEND PATCH v1 0/5] Solve postboot supplier cleanup and optimize probe ordering Frank Rowand
2019-06-13 13:19 ` Rob Herring
2019-06-24 22:37 ` Sandeep Patil
2019-06-25 3:53 ` Greg Kroah-Hartman
2019-06-26 4:30 ` Sandeep Patil
2019-06-26 5:49 ` Frank Rowand
2019-06-26 21:30 ` Rob Herring
2019-06-28 2:36 ` Saravana Kannan
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=da287ff3-5c20-3797-0d05-34bd84fe25ce@gmail.com \
--to=frowand.list@gmail.com \
--cc=collinsd@codeaurora.org \
--cc=devicetree@vger.kernel.org \
--cc=gregkh@linuxfoundation.org \
--cc=kernel-team@android.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=rafael@kernel.org \
--cc=robh+dt@kernel.org \
--cc=saravanak@google.com \
--cc=sspatil@android.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;
as well as URLs for NNTP newsgroup(s).