lkml.org 
[lkml]   [2021]   [Oct]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: are device names part of sysfs ABI? (was Re: devicename part of LEDs under ethernet MAC / PHY)
    On Mon, Oct 04, 2021 at 09:04:38AM +0200, Marek Behún wrote:
    > Hi Greg,
    >
    > On Mon, 4 Oct 2021 08:37:37 +0200
    > Greg Kroah-Hartman <gregkh@linuxfoundation.org> wrote:
    >
    > > On Sun, Oct 03, 2021 at 10:53:38PM +0200, Marek Behún wrote:
    > > > Hello Greg,
    > > >
    > > > could you give your opinion on this discussion?
    > >
    > > What discussion? Top posting ruins that :(
    >
    > Sorry, the discussion is here
    > https://lore.kernel.org/linux-leds/20211001144053.3952474a@thinkpad/T/
    > But the basic question is below, so you don't need to read the
    > discussion.
    >
    > > > Are device names (as returned by dev_name() function) also part of
    > > > sysfs ABI? Should these names be stable across reboots / kernel
    > > > upgrades?
    > >
    > > Stable in what exact way?
    >
    > Example:
    > - Board has an ethernet PHYs that is described in DT, and therefore
    > has stable sysfs path (derived from DT path), something like
    > /sys/devices/.../mdio_bus/f1072004.mdio-mii/f1072004.mdio-mii:01

    None of the numbers there are "stable", right?

    > - The PHY has a subnode describing a LED.
    > The LED subsystem has a different naming scheme (it uses DT node name
    > as a last resort). When everything is okay, the dev_name() of the LED
    > will be something like
    > ethphy42:green:link

    Wonderful, but the "42" means nothing.

    > - Now suppose that the PHY driver is unloaded and loaded again. The PHY
    > sysfs path is unchanged, but the LED will now be named
    > ethphy43:green:link
    >
    > Is this OK?

    Yup!

    The "link" should point to the device it is associated with, right? You
    need to have some way to refer to the device.

    > > Numbering of devices (where a dynamic value is part of a name, like the
    > > "42" in "usb42"), is never guaranteed to be stable, but the non-number
    > > part of the name (like "usb" is in "usb42") is stable, as that is what
    > > you have properly documented in the Documentation/ABI/ files defining
    > > the bus and class devices, right?
    >
    > It does make sense for removable devices like USB. What I am asking
    > is whether it is also OK for devices that have stable DT nodes.

    Any device can be "removed" from the system and added back thanks to the
    joy of the driver model :)

    Also, what prevents your DT from renumbering things in an update to it
    in the future? The kernel doesn't care, and userspace should be able to
    handle it.

    Again, any numbering scheme is NEVER stable, just because it feels like
    it is at the moment for your device, you should NEVER rely on that, but
    instead rely on the attributes of the device to determine what it is and
    where it is in the device hierarchy (serial number, position location,
    partition name, etc.) in order to know what it associated with.

    And again, this is 1/2 of the whole reason _why_ we created the unified
    driver model in the kernel. Don't try to go back to the nightmare that
    we had in the 2.4 and earlier kernel days please.

    thanks,

    greg k-h

    \
     
     \ /
      Last update: 2021-10-04 09:11    [W:3.868 / U:0.984 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site