Re: [PATCH v2 3/3] driver core: Replace open-coded list_last_entry()

From: Robin Murphy
Date: Mon Mar 30 2020 - 08:45:39 EST


On 2020-03-30 11:13 am, Sudeep Holla wrote:
On Fri, Mar 27, 2020 at 07:40:25PM +0000, Robin Murphy wrote:
On 2020-03-27 5:56 pm, Naresh Kamboju wrote:
The kernel warning noticed on arm64 juno-r2 device running linux
next-20200326 and next-20200327

I suspect this is the correct expected behaviour manifesting. If you're
using the upstream juno-r2.dts, the power domain being waited for here is
provided by SCPI, however unless you're using an SCP firmware from at least
3 years ago you won't actually have SCPI since they switched it to the newer
SCMI protocol, which is not yet supported upstream for Juno. See what
happened earlier in the log:

[ 2.741206] scpi_protocol scpi: incorrect or no SCP firmware found
[ 2.747586] scpi_protocol: probe of scpi failed with error -110

Thus this is the "waiting for a dependency which will never appear" case,
for which I assume the warning is intentional,

Is that the case ?

Previously we used to get the warning:
"amba xx: ignoring dependency for device, assuming no driver"

Now we have the kernel warning in addition to the above.

AFAICS the difference is down to whether deferred_probe_timeout has expired or not - I'm not familiar enough with this code to know *exactly* what the difference is supposed to represent, nor which change has actually pushed the Juno case from one state to the other (other than it almost certainly can't be $SUBJECT - if this series is to blame at all I'd assume it would be down to patch #1/3, but there's a bunch of other rework previously queued in -next that is probably also interacting)

since the system is essentially broken (i.e. the hardware/firmware doesn't
actually match what the DT describes).


Not sure if we can term it as "essentially broken". Definitely not 100%
functional but not broken if the situation like on Juno where SCP firmware
is fundamental for all OSPM but not essential for boot and other minimum
set of functionality.

It's "broken" in the sense that the underlying system is *not* the system described in the DT. Yes, all the parts that still happen to line up will mostly still function OK, but those that don't will fundamentally not work as the kernel has been told to expect. I'm not sure what you prefer to call "not working as the kernel expects", but I call it "broken" ;)

Robin.