Subject: ACPI interrupt code testers wanted
To: None <port-i386@netbsd.org, port-amd64@netbsd.org>
From: Frank van der Linden <fvdl@netbsd.org>
List: port-amd64
Date: 03/21/2006 00:30:30
Hi folks,

There have been some issues with what looks like interrupt routing with
NetBSD/amd64 and some motherboards, most notably nforce4.

The first issue is that MPS (the MPBIOS option) doesn't work right on
those boards, simply because the BIOS tables seem wrong. Ok, no problem,
MPS is an old standard, and we should be using ACPI. So, let's use it.

The second problem is that there are/were a few issues with ACPI interrupt
routing in some situations.

Lastly, there are issues on i386 laptops with interrupt routing, and the old
PCIBIOS fixups sometimes don't work right newer laptops.

So, I've made a few changes to the ACPI interrupt handling, and incorporated
the FreeBSD ACPI PCI link device code, with some modifications. The latter
might be interesting to test for i386 laptops users with interrupt routing
problems, although there are also ioapic-using systems out there with
ACPI PCI link devices in their ACPI setup.

Anyway, I'd like people to test the code. It contains some verbose handling,
and will a number of sets of info during autoconf. If you have an i386 or
amd64 system, and know it has ACPI, I'd be grateful if you could test this
and let me know the results, i.e.: Did it work? Is the interrupt routing
any different from the kernel your normally use? Can you send me the
dmesg output for the tested kernel, and, if the routing is different,
the output of your other, normal kernel as well?

The files are in
	ftp://ftp.netbsd.org/pub/NetBSD/misc/fvdl/acpi
		/i386
			/netbsd.i386.acpi.bz2
			/netbsd.i386.acpilap.bz2
			/netbsd.i386.acpimp.bz2
		/amd64
			/netbsd.amd64.acpi.bz2
			/netbsd.amd64.acpimp.bz2
		/diff
			acpi-interrupt.diff
			acpi_pci_link.c

Should you wish to compile your own kernel: the diff is against sources
about a week old, so the Coverity commits may have caused conflicts if
you apply it. The file acpi_pci_link.c goes in sys/dev/acpi.

Note that the kernels were compiled without MPBIOS, PCIBIOS_INTR_FIXUP
or ACPI_INTR_FIXUP. The code obsoletes the latter, and I didn't want
any intereference from the former two.

- Frank