Re: soft lockup in 2.6.26-rc1+git, on Fire V100 - USB again

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

 



From: Meelis Roos <mroos@xxxxx>
Date: Thu, 21 Aug 2008 23:04:21 +0300 (EEST)

> Does this mean that the looping used up all the stack??

I think it does, there are similar messages right before the wedge
in some of your other traces.

I wonder if the PCI write gets posted.

I took a look at the commit that moved the OHCI_INTR_RHSC disabling
code to ohci_irq() (from ohci_hub_status_data()) and the code wasn't
copied exactly:

commit 052ac01aeb84d8427ba8ac3d70991ac01b009b59
Author: Alan Stern <stern@xxxxxxxxxxxxxxxxxxx>
Date:   Fri Oct 27 10:33:11 2006 -0400

    USB: OHCI: disable RHSC inside interrupt handler
    
    This patch (as808b) moves the Root Hub Status Change interrupt-disable
    code in ohci-hcd back into the interrupt handler proper, to avoid the
    chance of adverse interactions with mediocre hardware implementations.
    
    It also deletes the root-hub status timer from within the interrupt-enable
    routine.  There's no need to poll for status any more once interrupts are
    re-enabled.
    
    Signed-off-by: Alan Stern <stern@xxxxxxxxxxxxxxxxxxx>
    Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxx>

The old code goes:

-		ohci_writel (ohci, OHCI_INTR_RHSC, &ohci->regs->intrdisable);
-		(void) ohci_readl (ohci, &ohci->regs->intrdisable);

The new code goes:

+		ohci_writel(ohci, OHCI_INTR_RHSC, &regs->intrdisable);

I guess it is expected that the ohci_hub_status_data() call will always
do some kind of ohci_readl() to flush the write.

It's a long shot, but does this patch fix the problem?

diff --git a/drivers/usb/host/ohci-hcd.c b/drivers/usb/host/ohci-hcd.c
index 8990196..51065b7 100644
--- a/drivers/usb/host/ohci-hcd.c
+++ b/drivers/usb/host/ohci-hcd.c
@@ -809,6 +809,7 @@ static irqreturn_t ohci_irq (struct usb_hcd *hcd)
 		 * re-enables it.
 		 */
 		ohci_writel(ohci, OHCI_INTR_RHSC, &regs->intrdisable);
+		(void) ohci_readl (ohci, &regs->intrdisable);
 		usb_hcd_poll_rh_status(hcd);
 	}
 
--
To unsubscribe from this list: send the line "unsubscribe sparclinux" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Kernel Development]     [DCCP]     [Linux ARM Development]     [Linux]     [Photo]     [Yosemite Help]     [Linux ARM Kernel]     [Linux SCSI]     [Linux x86_64]     [Linux Hams]

  Powered by Linux