RE: A question about ohci_irq()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Alan,

	I trace into it and found the ohci->hcca->done_head is 0 when
handling OHCI_INTR_WDH interrupt, that will cause the mouse hang. I do
not know why ohci->hcca->done_head will be 0 when ohci_irq() is
triggered. Can you give me some explanation for that? Because from the
2.6.22 kernel source, I found that when entering the ohci_irq()
function, the code will justify if the ohci->hcca->done_head is 0. The
2.6.27 kernel does not have that part code.

	So right now , I change the ohci_irq() code as below referring
the 2.6.22 kernel source:

	--ints = ohci_readl(ohci, &regs->intrstatus);
	++if((ohci->hcca->done_head!=0)
	++	&& !(hc32_to_cpup(ohci, &ohci->hcca->done_head)
	++		& 0x0a)){
	++		int = OHCI_INTR_WDH;
	++else{
	++		ints = ohci_readl(ohci, &regs->intrstatus);
	++		ints &= 0xfffffffd;
	++	}

	Using the ints&0xfffffffd can make the ohci_irq omit the
OHCI_INTR_WDH interrupt if the ohci->hcca->done_head is 0. Now the test
result it fine.


Thanks,
Frank


-----Original Message-----
From: Huang, FrankR 
Sent: Tuesday, December 29, 2009 2:45 PM
To: 'Alan Stern'
Cc: USB list
Subject: RE: A question about ohci_irq()

Alan,

	In the dl_done_list() function in /drivers/usb/host/ohci-q.c
file,
	Before the moment of mouse hang, the dl_reverse_done_list(ohci)
function return value is 0. That will give td a 0 value. After that, the
mouse hang. Why the 0 value will be got from the dl_reverse_done_list?


Thanks,
Frank 

-----Original Message-----
From: Alan Stern [mailto:stern@xxxxxxxxxxxxxxxxxxx] 
Sent: Tuesday, December 29, 2009 11:41 AM
To: Huang, FrankR
Cc: USB list
Subject: RE: A question about ohci_irq()

On Mon, 28 Dec 2009, Huang, FrankR wrote:

> Alan,
> 
> 	Thanks.I know the reason why the two irq functions are triggered
> at the same time.
> 	Below is dmesg result.
> 	I insert a USB mouse and USB disk to the ports.
> 	And the delay posision for ohci_irq() is :
> 			ints = ohci_readl(ohci, &regs->intrstatus);
> 			+ udelay(100);
> 	When the mouse is hang, the ohci_irq() has no response.

What do you mean by "has no response"?

Alan Stern



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

[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux