Thread (17 messages) 17 messages, 5 authors, 2021-09-01

Re: [PATCH v2] of: property: fw_devlink: Add support for "phy-handle" property

From: Saravana Kannan <hidden>
Date: 2021-09-01 02:37:49
Also in: linux-amlogic, linux-devicetree, lkml

On Tue, Aug 24, 2021 at 12:31 AM Saravana Kannan [off-list ref] wrote:
On Tue, Aug 24, 2021 at 12:03 AM Marek Szyprowski
[off-list ref] wrote:
quoted
Hi,

On 23.08.2021 20:22, Saravana Kannan wrote:
quoted
On Mon, Aug 23, 2021 at 5:08 AM Marek Szyprowski
[off-list ref] wrote:
quoted
On 18.08.2021 04:17, Saravana Kannan wrote:
quoted
Allows tracking dependencies between Ethernet PHYs and their consumers.

Cc: Andrew Lunn <andrew@lunn.ch>
Cc: netdev@vger.kernel.org
Signed-off-by: Saravana Kannan <redacted>
This patch landed recently in linux-next as commit cf4b94c8530d ("of:
property: fw_devlink: Add support for "phy-handle" property"). It breaks
ethernet operation on my Amlogic-based ARM64 boards: Odroid C4
(arm64/boot/dts/amlogic/meson-sm1-odroid-c4.dts) and N2
(meson-g12b-odroid-n2.dts) as well as Khadas VIM3/VIM3l
(meson-g12b-a311d-khadas-vim3.dts and meson-sm1-khadas-vim3l.dts).

In case of OdroidC4 I see the following entries in the
/sys/kernel/debug/devices_deferred:

ff64c000.mdio-multiplexer
ff3f0000.ethernet

Let me know if there is anything I can check to help debugging this issue.
I'm fairly certain you are hitting this issue because the PHY device
doesn't have a compatible property. And so the device link dependency
is propagated up to the mdio bus. But busses as suppliers aren't good
because busses never "probe".

PHY seems to be one of those cases where it's okay to have the
compatible property but also okay to not have it. You can confirm my
theory by checking for the list of suppliers under
ff64c000.mdio-multiplexer. You'd see mdio@0 (ext_mdio) and if you look
at the "status" file under the folder it should be "dormant". If you
add a compatible property that fits the formats a PHY node can have,
that should also fix your issue (not the solution though).
Where should I look for the mentioned device links 'status' file?

# find /sys -name ff64c000.mdio-multiplexer
/sys/devices/platform/soc/ff600000.bus/ff64c000.mdio-multiplexer
/sys/bus/platform/devices/ff64c000.mdio-multiplexer

# ls -l /sys/devices/platform/soc/ff600000.bus/ff64c000.mdio-multiplexer
total 0
This is the folder I wanted you to check.
quoted
lrwxrwxrwx 1 root root    0 Jan  1 00:04
consumer:platform:ff3f0000.ethernet ->
../../../../virtual/devlink/platform:ff64c000.mdio-multiplexer--platform:ff3f0000.ethernet
But I should have asked to look for the consumer list and not the
supplier list. In any case, we can see that the ethernet is marked as
the consumer of the mdio-multiplexer instead of the PHY device. So my
hunch seems to be right.
quoted
-rw-r--r-- 1 root root 4096 Jan  1 00:04 driver_override
-r--r--r-- 1 root root 4096 Jan  1 00:04 modalias
lrwxrwxrwx 1 root root    0 Jan  1 00:04 of_node ->
../../../../../firmware/devicetree/base/soc/bus@ff600000/mdio-multiplexer@4c000
drwxr-xr-x 2 root root    0 Jan  1 00:02 power
lrwxrwxrwx 1 root root    0 Jan  1 00:04 subsystem ->
../../../../../bus/platform
lrwxrwxrwx 1 root root    0 Jan  1 00:04
supplier:platform:ff63c000.system-controller:clock-controller ->
../../../../virtual/devlink/platform:ff63c000.system-controller:clock-controller--platform:ff64c000.mdio-multiplexer
-rw-r--r-- 1 root root 4096 Jan  1 00:04 uevent
-r--r--r-- 1 root root 4096 Jan  1 00:04 waiting_for_supplier

# cat
/sys/devices/platform/soc/ff600000.bus/ff64c000.mdio-multiplexer/waiting_for_supplier
0

I'm also not sure what compatible string should I add there.
It should have been added to external_phy: ethernet-phy@0. But don't
worry about it (because you need to use a specific format for the
compatible string).
Marek,

Can you give this a shot?
https://lore.kernel.org/lkml/20210831224510.703253-1-saravanak@google.com/ (local)

This is not the main fix for the case you brought up, but it should
fix your issue as a side effect of fixing another issue.

The main fix for your issue would be to teach fw_devlink that
phy-handle always points to the actual DT node that'll become a device
even if it doesn't have a compatible property. I'll send that out
later.

-Saravana
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help