Am Di, 2003-08-19 um 16.32 schrieb Christophe Saout: > Some days ago after updating the kernel source from bkcvs my system > started behaving very strange. When compiling something (without make > -j) the mouse cursor sometimes got *very* jumpy and even hangs for some > time, also xmms likes to skip. It seems like the whole system freezes > for some time. Argh! I am so stupid. I found the problem... it's my harddisk suddenly running in non-dma mode (ok, well, I didn't really investigate the problem). While doing an lspci I found that some of my onboard-devices (usb controllers and ide controller) had assigned irq -19. Well, negative interrupt numbers, I didn't know those existed. ;-) The board is a VIA KT400 (lspci attached). A quick lookup in errno.h showed that this could be a -ENODEV. A grep in the acpi directory showed that returning ENODEV is quite common. After taking a look in the latest acpi patches I found the problem in the nvidia patch. In drivers/acpi/pci_link.c in acpi_pci_link_get_irq there is -ENODEV returned but everywhere else 0 is returned on failure. This function is used from pci_irq.c and only checked whether false or not (in the second case the return value is used as irq number, that's where the -19 is coming from). So changing this: --- pci_link.c.orig 2003-08-27 02:34:46.650631336 +0200 +++ pci_link.c 2003-08-27 02:13:31.000000000 +0200 @@ -517,7 +517,7 @@ } if (acpi_pci_link_allocate(link)) { - return -ENODEV; + return_VALUE(0); } if (!link->irq.active) { helps. Well, the USB interrupts are still where they were before the patch broke my acpi interrupt routing. The problem is that the USB controllers were not working correctly. I've got no usb devices, so I haven't checked if they are working now (but I think all controllers should be on one irq line, not three?). BTW: The problem also triggered an error message with a typo in the apic code: --- mpparse.c.orig 2003-08-27 02:39:26.536082280 +0200 +++ mpparse.c 2003-08-27 02:38:22.549809672 +0200 @@ -850,7 +850,7 @@ return i; } - printk(KERN_ERR "ERROR: Unable to locate IOAPIC for IRQ %d/n", irq); + printk(KERN_ERR "ERROR: Unable to locate IOAPIC for IRQ %d\n", irq); return -1; } My lspci -vvv output (after the patch) is attached as well as the boot output from the kernel (before and after my "fix"). -- Christophe Saout Please avoid sending me Word or PowerPoint attachments. See http://www.fsf.org/philosophy/no-word-attachments.html