Re: [PATCH v1] usb: core: fix pipe creation for get_bMaxPacketSize0
From: Alan Stern
Date: Thu Mar 06 2025 - 08:44:33 EST
On Wed, Mar 05, 2025 at 10:02:15PM +0000, incansvl wrote:
> Team,
>
> I am experiencing a problem on multiple versions of the 6.x kernel, where initialisation
> of a motherboard usb hub device fails and causes a stream of errors. The performance of the
> machine is badly affected.
>
> I would have considered this most likely a hardware fault except-
>
> 1) I am seeing the same issue on 2 machines of very different age and spec.
The differences may not matter if they use similar hardware components.
> 2) In each case the hub generating errors has no external devices connected to it, so
> the error can't be caused by an external device that has failed. In fact on
> "machine 2", having no devices plugged in seems to be a necessary condition for the
> error to occur (see details below).
>
> I found the discussion of this patch, but I am not clear about this description-
I suspect that patch has nothing to do with your problem. Have you
tried applying (or reverting) it to see if that causes the problem to go
away?
> 4) On both machines the errors relate to a USB root hub that has NO DEVICES connected to it.
> On "machine 2", having a powered USB3.0 hub (which has a number of downstream devices
> connected) plugged in to one port on the hub is enough to suppress the errors, although
> I note the that "bad" port number (hub 2 : port 3) is not enumerated (skipped?).
> (tail of "dmesg -w")
> [ 781.020436] usb usb2-port3: Cannot enable. Maybe the USB cable is bad?
> [ 784.990637] usb usb2-port3: Cannot enable. Maybe the USB cable is bad?
...
Please try collecting a usbmon trace for bus 2 showing the problem.
Ideally the trace should show what happens from system boot-up, but
there's no way to do that. Instead, you can do this (the first command
below disables the bus, the second starts the usbmon trace, and the
third re-enables the bus):
echo 0 >/sys/bus/usb/devices/usb2/bConfigurationValue
cat /sys/kernel/debug/usb/usbmon/2u >usbmon.txt &
echo 1 >/sys/bus/usb/devices/usb2/bConfigurationValue
Then after enough time has passed for the errors to show up, kill the
"cat" process and post the resulting trace file. (Note: If your
keyboard is attached to bus 2, you won't be able to use it to issue the
second and third commands. You could use a network login, or put the
commands into a shell file and run them that way.)
In fact, you should do this twice: The second time, run it on machine 2
with the powered hub plugged in to suppress the errors.
Alan Stern