hello. What happens if you boot without acpi? (boot -2) This looks like a problem similar to one I had with my Dell laptop. I filed a pr about it. See below.
Does this help? -Brian Hello. Well, it turns out that there isn't a fix in the BIOS for this problem, but I was able to whip up a quick patch which I've submitted as kern/37538, which allows me to use both the sound and wireless cards at full speed with ACPI enabled. The problem is that while the BIOS properly routes the interrupt for these two devices, it doesn't actually report that the interrupt is valid for these devices in its table. So, when NetBSD tries to verify the verasity of the interrupts, it can't, and so it tries to reroute the interrupts to other irq's, with less than satisfactory results. With this patch, you can add options ACPI_BELIEVE_BIOS to your kernel config, and the kernel will just assume that what the BIOS says is true is accurate with respect to irq assignments. I am by no means an ACPI expert, so if there's abetter way to achieve this result, I'm all for it. However, if not, then I'd like to see this patch incorporated into the tree for NetBSD-4 and beyond, sinceI've verified that the problem persists all the way through today's -current sources. The complete bug report is available on the bug query web page, but I'll include the patch below, since it's so short. Comments? -thanks -Brian Index: acpi_pci_link.c =================================================================== RCS file: /cvsroot/src/sys/dev/acpi/acpi_pci_link.c,v retrieving revision 1.7 diff -u -r1.7 acpi_pci_link.c --- acpi_pci_link.c 24 Sep 2006 06:03:20 -0000 1.7 +++ acpi_pci_link.c 14 Dec 2007 06:03:25 -0000 @@ -369,6 +369,17 @@ { int i; +#ifdef ACPI_BELIEVE_BIOS + /* + *Some BIOS's route the interrupts correctly for the devices + *they configure, but don't report that those interrupts are valid in + *their interrupt table. If this option is true, assume the BIOS + *did the right thing, and always return valid. + *Fixes interrupt problems with ACPI and the Dell D400 laptop + */ + return(TRUE); +#endif + /* Invalid interrupts are never valid. */ if (!PCI_INTERRUPT_VALID(irq)) return (FALSE);