Re: [PATCH v5 2/3] Documentation: ABI: document DEVICE_ENUMERATION_FAILURE uevent

Greg KH <[email protected]>
Newsgroups org.kernel.vger.linux-usb,org.kernel.vger.linux-kernel
Message-ID <2026072747-snowshoe-outrank-7a49@gregkh>
On Mon, Jul 27, 2026 at 01:32:32PM +0000, Akshay Gujar wrote:
> On Sat, Jul 25, 2026 at 07:21:30AM +0200, Greg KH wrote:
> > > > > +What:          DEVICE_ENUMERATION_FAILURE
> > > > > +Date:          July 2026
> > > > > +KernelVersion: 7.3
> > > > > +Description:
> > > > > +               Some devices may be detected but fail to enumerate
> > > > > +               due to protocol-level errors or invalid responses.
> > > > > +
> > > > > +               A KOBJ_CHANGE uevent includes the following environment
> > > > > +               variable when this occurs:
> > > > > +
> > > > > +                 DEVICE_ENUMERATION_FAILURE=<dev_name>
> > > > > +
> > > > > +               The value is the kernel device name of the device for
> > > > > +               which enumeration failed, as returned by dev_name().
> > > > > +
> > > > > +               Example (USB):
> > > > > +
> > > > > +               ACTION=change
> > > > > +               SUBSYSTEM=usb
> > > > > +               DEVTYPE=usb_interface
> > > > 
> > > > This will be the port device, not the usb interface, right?
> > > 
> > > No, DEVTYPE=usb_interface is correct, the example was captured on
> > > real hardware. The uevent is not emitted from the port device itself.
> > > usb_port devices have no bus or class, so dev_uevent_filter()
> > > drops any event from them.It is emitted from the port's parent, 
> > > the hub's usb_interface device, while the failing port is identified in the payload instead.
> 
> > So shouldn't we fix the fact that usb_ports are not on the bus and add
> > them to one?  Would that make things more obvious here as to what port
> > the issue is happening on, and potentially allow userspace to actually
> > figure out which physical port the problem is?
> 
> Adding usb_port devices to usb_bus_type does not fit. usb_device_match()
> only handles usb_device and usb_interface, so ports would fall through
> unmatched, and bus-managed binding would conflict with the existing
> usb_port_driver assignment.

We can change usb_device_match() to not do that :)

> Userspace can already resolve the physical port directly from the
> event today:
> 
>   DEVPATH=/devices/.../usb1/1-0:1.0
>   DEVICE_ENUMERATION_FAILURE=usb1-port1
> 
> which corresponds to:
>   -> /sys/devices/.../usb1/1-0:1.0/usb1-port1
> 
> Appending the payload name to DEVPATH gives the exact sysfs path to
> the failing port on the hub.

That feels odd, as the port is the device having the problem.

> I dropped the DEVPATH line from the documentation example by mistake.
> Will restore it in v6 so the emitter/payload relationship is clear.

Ok, maybe your next version will make more sense, as I'm confused now :)

thanks,

greg k-h
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.