Hi Alan, Happy New Year! I removed the previous short patch to ehci-q.c and applied this second one. After some extensive testing, I could not reproduce the issue and dmesg showed the ususl "async off" and "async on" messages, the second as soon as I started to read the HDDs. Performance wise, it seems to me better than ever, I mean I saw regular transfer of above 4000 KB/sec per disk. Even with 2 processes reading the 10 HDDs, the data rate was about 3800 KB/sec. Next step? Thanks, bye, pg On Mon, Dec 17, 2012 at 02:59:21PM -0500, Alan Stern wrote: > 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); -- piergiorgio -- 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