Date: Wed, 6 Apr 2005 23:52:13 -0700 (PDT) From: Doug White <dwhite@gumbysoft.com> To: freebsd-current@freebsd.org Subject: Potential source of interrupt aliasing Message-ID: <20050406233405.O47071@carver.gumbysoft.com>
next in thread | raw e-mail | index | archive | help
Hey folks, After looking at Intel docs for the last several days I've uncovered what may be the source of our interrupt aliasing problem. In order to support non-APIC mode operation, IOAPICs servicing other PCI busses than the primary in the system support so-called "boot interrupt" operation. In this mode (which is enabled by default) if they receive an interrupt and it is masked in the IOAPIC (again the default), it will trigger the boot interrupt signal instead. This signal is usually a dedicated pin on the bridge and is attached to the IOAPIC in the ICH that also gets the ISA interrupts from the 8259s. In the Intel WV2 board, the boot interrupt line from the P64H2 PCI-PCI bridge is tied to PIRQA on the ICH -- which is tied to intpin 16 on its IOAPIC. Typically the USB controllers are mapped to this IRQ as well. Where this becomes a problem is our strategy of masking interrupts in the IOAPIC for devices whose ithread is active. If the same device interrupts again, its interrupt is diverted over the boot interrupt signal (because its masked) and shows up as an interrupt on IRQ16. The docs _imply_ that this is supposed to be disabled when APIC mode is enabled, but I don't think thats the case for most chipsets. The Intel P64H2 and PXH PCI-PCI bridge docs I've read don't have a disable register, although newer IO hubs (like the 6300ESB) do to quell it on their interrupt sources. A quick hack would be to blacklist intpin 16 on the first IOAPIC and bump any PCI devices that ACPI says are claiming that interrupt. I don't know how difficult this is to do with ACPI. How to handle this for ATPIC mode is a little difficult since the boot interrupt either gets routed to IRQ9 or ends up as a stray on IRQ7 (on my SCB2 at least -- other boards may vary). If anyone else has thought this through and can prove me wrong, please do so ... its late and my brain hurts from reading Intel docs :-) -- Doug White | FreeBSD: The Power to Serve dwhite@gumbysoft.com | www.FreeBSD.org
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20050406233405.O47071>