On Mon, 17 Dec 2012, Piergiorgio Sartor wrote: > Hi Alan, > > I applied the latest patch, changing the unlinking > behavior of EHCI. > > I tested quite extensively and I could not see the > issue (as expected). At a certain point I lost 3 HDDs, > but this is something I saw before (it happens very > seldom, maybe future debugging) and it was not really > locking the EHCI driver. > > Another thing is that the read performance was around > about 10% slower that the usual one. > I saw 3700~3800 KB/sec per HDD, while, under normal > conditions, I saw 4100~4200 KB/sec per HDD. The slower performance might be caused by all the idle QHs remaining on the async list. The controller has to look at them because they are on the list, even though they aren't being used, and that could slow it down. > I think that's all, how do you want to proceed now? Below is another patch, which is meant to replace the previous one. This changes the behavior to be like the driver was before the troublesome commit: Only one idle QH will be unlinked from the async schedule at a time. > Please note that shortly I'll not be anymore with > my PC, until January, so we can take it easy. > > In this respect, I wish you Merry Christmas and > Happy New Year. Enjoy your holidays too. Alan Stern Index: usb-3.7/drivers/usb/host/ehci-q.c =================================================================== --- usb-3.7.orig/drivers/usb/host/ehci-q.c +++ usb-3.7/drivers/usb/host/ehci-q.c @@ -1279,8 +1279,9 @@ static void unlink_empty_async(struct eh if (list_empty(&qh->qtd_list) && qh->qh_state == QH_STATE_LINKED) { - if (!stopped && qh->unlink_cycle == - ehci->async_unlink_cycle) + if (!stopped && (qh->unlink_cycle == + ehci->async_unlink_cycle || + ehci->async_unlink)) check_unlinks_later = true; else single_unlink_async(ehci, qh); -- 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