Hi Nicco/ TC, as we chatted few days ago on #openmandriva-cooker channel, I've ported the patch made by Sarah Sharper (over 3.10.x family) to our last kernel version. For those who lost the discussion, this spins around a misintepretation of USB2.0 spec, whereas this tell us O.S. should await a MINIMUM of 10msec it was implemented as a MAXIMUM of 10msec which causes a timeout on some slower USB devices, consquently disconnecting its USB hub from system. If you have any doubt please refer to:
http://marc.info/?l=linux-usb&m=137714769606183&w=2 -> official patch sent to kernel-ml; https://plus.google.com/u/0/116960357493251979546/posts/RZpndv4BCCD -> Sarah Sharper (usbcore mantainer) explanation o her g+ account; --- linux-3.13.9/drivers/usb/core/hub.c 2014-04-03 16:02:51.000000000 -0300 +++ linux-3.13.9-devel/drivers/usb/core/hub.c 2014-04-04 10:50:50.069306549 -0300 @@ -43,6 +43,8 @@ #define USB_VENDOR_GENESYS_LOGIC 0x05e3 #define HUB_QUIRK_CHECK_PORT_AUTOSUSPEND 0x01 +#define TRSMRCY 20 + static inline int hub_is_superspeed(struct usb_device *hdev) { return (hdev->descriptor.bDeviceProtocol == USB_HUB_PR_SS); @@ -3216,8 +3218,11 @@ */ status = hub_port_status(hub, port1, &portstatus, &portchange); - /* TRSMRCY = 10 msec */ - msleep(10); + /* + * benatto: this avoid slower USB devices to timeout when + * resume from suspend. 20 seconds put os on safe side + */ + msleep(TRSMRCY); } SuspendCleared: @@ -4601,8 +4606,7 @@ } if (udev) { - /* TRSMRCY = 10 msec */ - msleep(10); + msleep(TRSMRCY); usb_lock_device(udev); ret = usb_remote_wakeup(udev); Is there any objection to this patch? Whether not, Nicco could you apply it? Cheers mates! Marco A Benatto Mandriva OEM Team