diff options
author | Stuart_Hayes@Dell.com <Stuart_Hayes@Dell.com> | 2007-05-03 11:58:49 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2007-07-12 19:29:45 -0400 |
commit | 196705c9bbc03540429b0f7cf9ee35c2f928a534 (patch) | |
tree | 37ddc23737bced60a8defc52f643f362e2744908 /drivers/usb/host/ehci-q.c | |
parent | ec22559e0b7a05283a3413bda5d177e42c950e23 (diff) |
USB: EHCI cpufreq fix
EHCI controllers that don't cache enough microframes can get MMF errors
when CPU frequency changes occur between the start and completion of
split interrupt transactions, due to delays in reading main memory
(caused by CPU cache snoop delays).
This patch adds a cpufreq notifier to the EHCI driver that will
inactivate split interrupt transactions during frequency transitions.
It was tested on Intel ICH7 and Serverworks/Broadcom HT1000 EHCI
controllers.
Signed-off-by: Stuart Hayes <stuart_hayes@dell.com>
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/usb/host/ehci-q.c')
-rw-r--r-- | drivers/usb/host/ehci-q.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/usb/host/ehci-q.c b/drivers/usb/host/ehci-q.c index e7fbbd00e7cd..903510beb299 100644 --- a/drivers/usb/host/ehci-q.c +++ b/drivers/usb/host/ehci-q.c | |||
@@ -311,6 +311,10 @@ qh_completions (struct ehci_hcd *ehci, struct ehci_qh *qh) | |||
311 | struct urb *urb; | 311 | struct urb *urb; |
312 | u32 token = 0; | 312 | u32 token = 0; |
313 | 313 | ||
314 | /* ignore QHs that are currently inactive */ | ||
315 | if (qh->hw_info1 & __constant_cpu_to_le32(QH_INACTIVATE)) | ||
316 | break; | ||
317 | |||
314 | qtd = list_entry (entry, struct ehci_qtd, qtd_list); | 318 | qtd = list_entry (entry, struct ehci_qtd, qtd_list); |
315 | urb = qtd->urb; | 319 | urb = qtd->urb; |
316 | 320 | ||