On Wed, 21 Nov 2012, Sarah Sharp wrote: > USB 3.0 hubs and roothubs will automatically transition a failed hot > reset to a warm (BH) reset. In that case, the warm reset change bit > will be set, and the link state change bit may also be set. Change > hub_port_finish_reset to unconditionally clear those change bits for USB > 3.0 hubs. If these bits are not cleared, we may lose port change events > from the roothub. > > This commit should be backported to kernels as old as 3.2, that contain > the commit 75d7cf72ab9fa01dc70877aa5c68e8ef477229dc "usbcore: refine > warm reset logic". > > Signed-off-by: Sarah Sharp <sarah.a.sharp@xxxxxxxxxxxxxxx> > Cc: stable@xxxxxxxxxxxxxxx > --- > drivers/usb/core/hub.c | 6 +++--- > 1 files changed, 3 insertions(+), 3 deletions(-) > > diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c > index a815fd2..7f8f10e 100644 > --- a/drivers/usb/core/hub.c > +++ b/drivers/usb/core/hub.c > @@ -2580,16 +2580,16 @@ static void hub_port_finish_reset(struct usb_hub *hub, int port1, > clear_port_feature(hub->hdev, > port1, USB_PORT_FEAT_C_RESET); > /* FIXME need disconnect() for NOTATTACHED device */ > - if (warm) { > + if (hub_is_superspeed(hub->hdev)) { > clear_port_feature(hub->hdev, port1, > USB_PORT_FEAT_C_BH_PORT_RESET); > clear_port_feature(hub->hdev, port1, > USB_PORT_FEAT_C_PORT_LINK_STATE); It would be nice to avoid sending these requests (and the one above) if the feature bits are already clear. Unfortunately that's a little difficult to achieve the way the code is structured now. Some refactoring may be in order. Alan Stern -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html