Hi,

This mail is for RFC regarding the persist resume of some USB 2.0 devices,

Problem Summary: Problem has been observed for some USB 2.0 devices while 
resuming from sleep. When the USB  “persist” feature is enabled through sysfs 
it is expected to retain its previous mount point across sleep and resume 
states, it works fine for most of the USB 2.0 mass storage devices, but for 
some USB 2.0 pendrives such as (Transcend Jet flash 16 GB & Alcor micro 
corporation) it seems to fail and re-enumeration happens resulting in creation 
of new device data structure. This problem seems to be similar to the problem 
faced with USB 3.0 devices which is mentioned in below link

http://marc.info/?l=linux-usb&m=140566728011240&w=2



In the above mentioned link the problem is observed with USB 3.0 devices, but 
in this case it is observed with USB 2.0 mass storage devices.While resuming 
from sleep, a USB disconnect message and re enumeration messages are seen 
resulting in the reset of “persist ” variable in sysfs.



In the above mentioned link a fix is proposed and that patch was merged in 
mainline kernel, but the patch restricts the timeout only to USB 3.0 devices. I 
am not sure why it was restricted to USB 3.0 devices, but the same issue seems 
to appear for USB 2.0 devices too.



The below patch removes the restriction for USB 3.0 devices and makes the time 
out applicable to all USB devices.



Signed-off-by: vasudevan,krishna prasath 
<[email protected]>

---

 drivers/usb/core/hub.c |    2 +-

 1 file changed, 1 insertion(+), 1 deletion(-)



diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c

index d2bd9d7..b2b709d 100644

--- a/drivers/usb/core/hub.c

+++ b/drivers/usb/core/hub.c

@@ -3320,7 +3320,7 @@ int usb_port_resume(struct usb_device *udev, pm_message_t 
msg)



               clear_bit(port1, hub->busy_bits);



-              if (udev->persist_enabled && hub_is_superspeed(hub->hdev))

+             if (udev->persist_enabled)

                               status = wait_for_ss_port_enable(udev, hub, 
&port1, &portchange,

                                                             &portstatus);



--

1.7.10.4



RESULT:

This patch has been tested with USB 2.0 devices(Transcend & Alcor micro corp.) 
that were facing this issue and after applying this patch, both the USB 2.0 
devices seems to work fine without any issues for all tested sleep-resume 
cycles .







Thanks & Regards,

Krishna








--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to