39 lines
1.2 KiB
Diff
39 lines
1.2 KiB
Diff
From: Wu Zhangjin <wuzj@lemote.com>
|
|
Date: Mon, 4 Jan 2010 11:33:02 +0800
|
|
Subject: USB: Fix the mouse problem when copying large amounts of data
|
|
|
|
When copying large amounts of data between the USB storage devices and
|
|
the hard disk, the USB mouse will not work, this patch fixes it.
|
|
|
|
[NOTE: This problem have been found in the Loongson family machines, not
|
|
sure whether it is producible on other platforms]
|
|
|
|
Signed-off-by: Hu Hongbing <huhb@lemote.com>
|
|
Signed-off-by: Wu Zhangjin <wuzhangjin@gmail.com>
|
|
|
|
---
|
|
drivers/usb/host/ohci-hcd.c | 10 +++++++---
|
|
1 file changed, 7 insertions(+), 3 deletions(-)
|
|
|
|
Index: linux-stable/drivers/usb/host/ohci-hcd.c
|
|
===================================================================
|
|
--- linux-stable.orig/drivers/usb/host/ohci-hcd.c
|
|
+++ linux-stable/drivers/usb/host/ohci-hcd.c
|
|
@@ -829,9 +829,13 @@ static irqreturn_t ohci_irq (struct usb_
|
|
}
|
|
|
|
if (ints & OHCI_INTR_WDH) {
|
|
- spin_lock (&ohci->lock);
|
|
- dl_done_list (ohci);
|
|
- spin_unlock (&ohci->lock);
|
|
+ if (ohci->hcca->done_head == 0) {
|
|
+ ints &= ~OHCI_INTR_WDH;
|
|
+ } else {
|
|
+ spin_lock (&ohci->lock);
|
|
+ dl_done_list (ohci);
|
|
+ spin_unlock (&ohci->lock);
|
|
+ }
|
|
}
|
|
|
|
if (quirk_zfmicro(ohci) && (ints & OHCI_INTR_SF)) {
|