Hi, I apologize if this has already been reported, I didn't find anything with a quick search in the archives. I have been looking at the EHCI code in 2.6.18 and found this:
In 2.6.18 ehci_irq() [1], starting at line 619 the code looks like this: /* remote wakeup [4.3.1] */ 619 if (status & STS_PCD) { 620 unsigned i = HCS_N_PORTS (ehci->hcs_params); 621 622 /* resume root hub? */ 623 status = readl (&ehci->regs->command); 624 if (!(status & CMD_RUN)) 625 writel (status | CMD_RUN, &ehci->regs->command); 626 <snip, no assignments to status> 644 } 645 646 /* PCI errors [4.15.2.4] */ 647 if (unlikely ((status & STS_FATAL) != 0)) { 648 /* bogus "fatal" IRQs appear on some chips... why? */ 649 status = readl (&ehci->regs->status); 650 dbg_cmd (ehci, "fatal", readl (&ehci->regs->command)); 651 dbg_status (ehci, "fatal", status); 652 if (status & STS_HALT) { 653 ehci_err (ehci, "fatal error\n"); 654 dead: 655 ehci_reset (ehci); 656 writel (0, &ehci->regs->configured_flag); 657 /* generic layer kills/unlinks all urbs, then 658 * uses ehci_stop to clean up the rest 659 */ 660 bh = 1; 661 } 662 } Now, STS_FATAL (Host System Error) is bit 4 in the USBSTS register. If STS_PCD is set line 623 assigns the status variable with the value of USBCMD. Which will, sometimes, trigger the status & STS_FATAL condition since bit 4 in USBCMD is Periodic Schedule Enable. The problem above was fixed by a patch from Alan Stern [2] "Fix root-hub and port suspend/resume problems" but I did not find any comments about the problem above being identified. The code in 2.6.21 still contains: /* PCI errors [4.15.2.4] */ if (unlikely ((status & STS_FATAL) != 0)) { /* bogus "fatal" IRQs appear on some chips... why? */ status = ehci_readl(ehci, &ehci->regs->status); So, if the bogus IRQs were triggered by the assignment of USBCMD to status above, the comment and the re-reading of USBSTS could perhaps be removed? Best regards, Jan [1] http://lxr.linux.no/source/drivers/usb/host/ehci-hcd.c?v=2.6.18#L618 [2] http://surl.se/auaz ------------------------------------------------------------------------- This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/ _______________________________________________ linux-usb-devel@lists.sourceforge.net To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel