| 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)) { |