On Fri, Feb 28, 2025 at 07:50:25AM +0000, Pawel Laszczak wrote: > The xHC resources allocated for USB devices are not released in correct > order after resuming in case when while suspend device was reconnected. > > This issue has been detected during the fallowing scenario: > - connect hub HS to root port > - connect LS/FS device to hub port > - wait for enumeration to finish > - force host to suspend > - reconnect hub attached to root port > - wake host > > For this scenario during enumeration of USB LS/FS device the Cadence xHC > reports completion error code for xHC commands because the xHC resources > used for devices has not been properly released. > XHCI specification doesn't mention that device can be reset in any order > so, we should not treat this issue as Cadence xHC controller bug. > Similar as during disconnecting in this case the device resources should > be cleared starting form the last usb device in tree toward the root hub. > To fix this issue usbcore driver should call hcd->driver->reset_device > for all USB devices connected to hub which was reconnected while > suspending. > > Fixes: 3d82904559f4 ("usb: cdnsp: cdns3 Add main part of Cadence USBSSP DRD Driver") > cc: <stable@xxxxxxxxxxxxxxx> > Signed-off-by: Pawel Laszczak <pawell@xxxxxxxxxxx> > > --- > Changelog: > v3: > - Changed patch title > - Corrected typo > - Moved hub_hc_release_resources above mutex_lock(hcd->address0_mutex) > > v2: > - Replaced disconnection procedure with releasing only the xHC resources Reviewed-by: Alan Stern <stern@xxxxxxxxxxxxxxxxxxx>