errors with split transactions & powernow

<[email protected]>
Newsgroups gmane.linux.usb.devel
Message-ID <DFEF91B22ED07447AB6AA4B237F913F925884B@ausx3mpc125.aus.amer.dell.com>
Hello... While running minor stress on a system, I'm seeing messages
like this quite frequently:

usb 3-1.1: reset full speed USB device using ehci_hcd and address 5

These messages are occurring for all 4 of my low/full speed HID devices
that are connected to a USB2.0 hub (so all are using split transactions
on an interrupt pipe).  This is occurring on an AMD system, and the
problem only occurs when the processors are changing speed
(powernow/cpufreq must be enabled).

I added a few printks, and the failures are all because the EHCI
controller is setting QTD_STS_MMF (missed micro-frame), which means that
the EHCI controller started a split transaction but wasn't able to
complete it in time.

I think this is happening because the EHCI controller is getting delayed
trying reading main memory while the processors are changing speed (this
is where the cpufreq/powernow stuff comes in).  If this happens between
the start & complete parts of a split transaction, the EHCI controller
can't complete the split transaction in time, and it sets QTD_STS_MMF,
causing ehci-hcd to return -EPROTO to the hid-core driver.

The function hid_io_error() in hid-core will in theory retry this
transaction every so often for up to a second, but, in reality, the
transaction isn't getting retried at all before the second is up,
because the system is loaded fairly heavily and the code that retries
the transaction is called by a timer and not run immediately in the
interrupt handler.

Could anyone recommend a good way to fix this?

It seems to me that ehci-hcd itself should perhaps retry a transaction
immediately--at least a couple of times--if it gets QTD_STS_MMF.  If
that is wrong for some reason, it might be nice if there was some way
for hid-core (et al?) to know what's going on so it could opt to
resubmit the URB right away--or at least not reset the device so
hastily--if this is the cause of the URB failure... -EPROTO covers
several other errors, too.

Thanks in advance for any advice!
Stuart

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
[email protected]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.