Thread (32 messages) 32 messages, 7 authors, 2022-11-17

Re: [PATCH net-next v2 00/11] net: pcs: Add support for devices probed in the "usual" manner

From: Rob Herring <robh+dt@kernel.org>
Date: 2022-11-17 13:39:16
Also in: linux-arm-kernel, linux-devicetree, linuxppc-dev, lkml

On Mon, Nov 14, 2022 at 1:53 PM Vladimir Oltean [off-list ref] wrote:
On Mon, Nov 14, 2022 at 01:08:03PM -0500, Sean Anderson wrote:
quoted
On 11/14/22 12:23, Vladimir Oltean wrote:
quoted
On Thu, Nov 10, 2022 at 11:56:15AM -0500, Sean Anderson wrote:
quoted
these will probably be in device trees for a year before the kernel
starts using them. But once that is done, we are free to require them.
Sorry, you need to propose something that is not "we can break compatibility
with today's device trees one year from now".
But only if the kernel gets updated and not the device tree. When can
such a situation occur? Are we stuck with this for the next 10 years all
because someone may have a device tree which they compiled in 2017, and
*insist* on using the latest kernel with? Is this how you run your
systems?
I'm a developer (and I work on other platforms than the ones you're
planning to break), so the answer to this question doesn't mean a thing.
quoted
We don't get the device tree from firmware on this platform; usually it
is bundled with the kernel in a FIT or loaded from the same disk
partition as the kernel. I can imagine that they might not always be
updated at exactly the same time, but this is nuts.
What does "this" platform mean exactly? There are many platforms to
which you've added compatible strings to keep things working assuming a
dtb update, many of them very old. And those to which you did are not by
far all that exist. There is no requirement that all platform device
trees are upstreamed to the Linux kernel.
quoted
The original device tree is broken because it doesn't include compatible
strings for devices on a generic bus. There's no way to fix that other
than hard-coding the driver. This can be done for some buses, but this
is an MDIO bus and we already assume devices without compatibles are
PHYs.
Let's be clear about this. It's "broken" in the sense that you don't like
the way in which it works, not in the sense that it results in a system
that doesn't work. And not having a compatible string is just as broken
as it is for other devices with detectable device IDs, like Ethernet
PHYs in general, PCI devices, etc.

The way in which that works here, specifically, is that a generic PHY driver
is bound to the Lynx PCS devices, driver which does nothing since nobody
calls phy_attach_direct() to it. Then, using fwnode_mdio_find_device(),
you follow the pcsphy-handle and you get a reference to the mdio_device
(parent class of phy_device) object that resulted from the generic PHY
driver probing on the PCS, and you program the PCS to do what you want.

The PHY core does assume that mdio_devices without compatible strings
are phy_devices, but also makes exceptions (and warns about it) - see
commit ae461131960b ("of: of_mdio: Add a whitelist of PHY compatibilities.").
Maybe the reverse exception could also be made, and a warning for that
be added as well.
quoted
In the next version of this series, I will include a compatibility
function which can bind a driver automatically if one is missing when
looking up a phy. But I would really like to have an exit strategy.
You'll have to get agreement from higher level maintainers than me that
the strategy "wait one year, break old device trees" is okay. Generally
we wouldn't have answers to this kind of questions that depend on whom
you ask. Otherwise.. we would all know whom to ask and whom not to ;)
A window of time can work, but only when there's other reasons
everyone must update the firmware/DT.
Sadly I haven't found anything "official" in either Documentation/devicetree/usage-model.rst
or Documentation/process/submitting-patches.rst. Maybe I missed it?
Documentation/devicetree/bindings/ABI.rst

The exact policy depends on the platform (or family of platforms). In
short, if *anyone* cares, then compatibility should not be broken.
Vladimir uses platforms in question and cares, so don't break the
platforms.

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