lkml.org 
[lkml]   [2001]   [Nov]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patches in this message
/
Date
From
SubjectRe: Vaio IRQ routing / USB problem
[cc to linux-kernel added]

Tom Winkler wrote:
>
> usb-uhci.c: High bandwidth mode enabled
> IRQ for 00:1f.2:3 -> PIRQ 63, mask 0200, excl 0000 -> newirq=9 -> got IRQ
> 10
> PCI: Found IRQ 10 for device 00:1f.2
> IRQ routing conflict for 00:1f.2, have irq 9, want irq 10
> PCI: Setting latency timer of device 00:1f.2 to 64

That's interesting. It's obivously a bios bug:
The USB controller only supports interrupt 9 (mask==0x200 -->bit 9), is
right now running on irq 9 according to the bios data.
But according to the piix irq router, it's connected to irq 10.

First we must figure out where the bios lies. Could you try the attached
patches?
The patches are alternatives, first try option 1, then option 2.


----- 2.4/arch/i386/kernel/pci-irq.c Sat Nov 3 19:51:08 2001
+++ build-2.4/arch/i386/kernel/pci-irq.c Sun Nov 4 14:48:58 2001
@@ -626,7 +626,7 @@
continue;
if (info->irq[pin].link == pirq) {
/* We refuse to override the dev->irq information. Give a warning! */
- if (dev2->irq && dev2->irq != irq) {
+ if (dev2->irq && dev2->irq != irq && 0) {
printk(KERN_INFO "IRQ routing conflict for %s, have irq %d, want irq %d\n",
dev2->slot_name, dev2->irq, irq);
continue;

--- 2.4/arch/i386/kernel/pci-irq.c Sat Nov 3 19:51:08 2001
+++ build-2.4/arch/i386/kernel/pci-irq.c Sun Nov 4 15:09:40 2001
@@ -629,6 +629,18 @@
if (dev2->irq && dev2->irq != irq) {
printk(KERN_INFO "IRQ routing conflict for %s, have irq %d, want irq %d\n",
dev2->slot_name, dev2->irq, irq);
+ if (!strcmp(msg, "Found")) {
+ /* ok, the bios lied. Try to recover */
+ if (r->set && (dev->class >> 8) != PCI_CLASS_DISPLAY_VGA) {
+ printk(KERN_ERR "trying set.\n");
+ if (r->set(pirq_router_dev, dev2, pirq, dev2->irq)) {
+ printk(KERN_ERR "set succedded.\n");
+ eisa_set_level_irq(dev2->irq);
+ } else {
+ printk(KERN_ERR "set failed.\n");
+ }
+ }
+ }
continue;
}
dev2->irq = irq;
\
 
 \ /
  Last update: 2005-03-22 13:12    [from the cache]
©2003-2011 Jasper Spaans