On Mon, Aug 23, 2021 at 6:16 AM Andrew Lunn <andrew@xxxxxxx> wrote: > > On Mon, Aug 23, 2021 at 02:08:48PM +0200, Marek Szyprowski wrote: > > Hi, > > > > On 18.08.2021 04:17, Saravana Kannan wrote: > > > Allows tracking dependencies between Ethernet PHYs and their consumers. > > > > > > Cc: Andrew Lunn <andrew@xxxxxxx> > > > Cc: netdev@xxxxxxxxxxxxxxx > > > Signed-off-by: Saravana Kannan <saravanak@xxxxxxxxxx> > > > > 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. > > Hi Marek > > Please try this. Completetly untested, not even compile teseted: > > diff --git a/drivers/of/property.c b/drivers/of/property.c > index 0c0dc2e369c0..7c4e257c0a81 100644 > --- a/drivers/of/property.c > +++ b/drivers/of/property.c > @@ -1292,6 +1292,7 @@ DEFINE_SIMPLE_PROP(resets, "resets", "#reset-cells") > DEFINE_SIMPLE_PROP(leds, "leds", NULL) > DEFINE_SIMPLE_PROP(backlight, "backlight", NULL) > DEFINE_SIMPLE_PROP(phy_handle, "phy-handle", NULL) > +DEFINE_SIMPLE_PROP(mdio_parent_bus, "mdio-parent-bus", NULL); > DEFINE_SUFFIX_PROP(regulators, "-supply", NULL) > DEFINE_SUFFIX_PROP(gpio, "-gpio", "#gpio-cells") > > @@ -1381,6 +1382,7 @@ static const struct supplier_bindings of_supplier_bindings[] = { > { .parse_prop = parse_leds, }, > { .parse_prop = parse_backlight, }, > { .parse_prop = parse_phy_handle, }, > + { .parse_prop = parse_mdio_parent_bus, }, > { .parse_prop = parse_gpio_compat, }, > { .parse_prop = parse_interrupts, }, > { .parse_prop = parse_regulators, }, Looking at the code, I'm fairly certain that the device that corresponds to a DT node pointed to by mdio-parent-bus will be a "bus" device that's registered with the mdio_bus_class. If my understanding is right, then Nak for this patch. It'll break a lot of probes. TL;DR is that stateful/managed device links don't make sense for devices that are never probed/bound to a driver. I plan to improve device links to try and accommodate these cases nicely, but that's in my TO DO list. Until that's completed, this patch will break stuff. -Saravana