Re: [RFC PATCH v2] USB: core: emit a device-level modalias
flat view
From: Alan Stern <stern@rowland.harvard.edu>
Date: 2026-10-07 19:17:46
Also in:
linux-usb, lkml
On Wed, Oct 07, 2026 at 09:11:30PM +0200, Giuseppe Piscitelli wrote:
On the first insertion of an iPhone (05ac:12a8) after boot, an already running usbmuxd can select USB configuration 4 before the charging driver apple-mfi-fastcharge loads. usbmuxd is a userspace daemon that uses libusb to communicate with Apple devices; apple-mfi-fastcharge is a USB device driver that enables their higher charging current. USB device uevents have no MODALIAS. The charging module instead loads from an interface uevent. Its registration reprobes the device, unbinds the generic driver and calls usb_set_configuration(udev, -1), tearing down the interfaces and interrupting usbmuxd's transfers. Emit a modalias in the USB device uevent, using wildcards for interface fields because no particular interface is described by this event. This allows udev's kmod builtin to load matching device drivers while handling the device add event, before broadcasting that event to libudev listeners. libusb's udev hotplug backend listens for this broadcast, so usbmuxd sees the arrival after the charging module has finished loading and reprobed the device, rather than before a later interface event loads it. A slow udev worker delays both module loading and the broadcast; it does not reverse this ordering. This addresses hotplug through the udev backend, not clients reading raw kernel events or scanning devices before udev has finished, and does not synchronize later manual module loading. Signed-off-by: Giuseppe Piscitelli <redacted> Assisted-by: OpenAI Codex --- v2: - Explain the iPhone, charging driver and usbmuxd interaction. - Describe synchronous module loading before the libudev broadcast, including the ordering when udev runs slowly and its scope limits. - No code changes.
Much better, thank you. Alan Stern