next up previous
Next: Bibliography Up: PCI Interrupts for x86 Previous: Acknowledgments

Availability

All of the code for managing PCI interrupts is available in the FreeBSD source tree [3]. The code is split into roughly two parts. First, the code to manage interrupt routing and MSI is contained in the kernel. Second, the code for various utilities to dump interrupt routing tables is contained in userland sources. All of the interrupt routing code and related utilities can be found in FreeBSD 5.2 and later. The MSI code as well as the update to pciconf to display PCI capabilities was added to FreeBSD after FreeBSD 6.2 and will be present in both FreeBSD 6.3 and FreeBSD 7.0.

The PCI-PCI bridge driver is found in src/sys/dev/pci/pci_pci.c. Among other things, this driver contains the code to use the PCI-PCI bridge swizzle to route interrupts across PCI-PCI bridges in add-in cards.

The $PIR interrupt routing code is found in src/sys/i386/include/pc/bios.h and src/sys/i386/pci/pci_pir.c. The source for the pirtool utility is found in the src/tools/tools/pirtool directory.

The MP Table interrupt routing code is present for both amd64 and i386. For amd64 it is found in src/sys/amd64/include/mptable.h, src/sys/amd64/amd64/mptable.c, and src/sys/amd64/amd64/mptable_pci.c. The i386 code is found in the same files but under src/sys/i386. The source for the mptable(8) utility is found in the src/usr.sbin/mptable directory.

The ACPI interrupt routing code is all found in the src/sys/dev/acpica directory. The acpi_pci_link.c file contains the device driver for PCI interrupt link devices. The acpi_pcib.c file contains the code to parse _PRT tables. It will call the PCI interrupt link code when a PCI interrupt is attached to a link device. The source for the acpidump utility is found in the src/usr.sbin/acpi/acpidump utility.

The machine independent code for MSI support is found in src/sys/dev/pci/pci.c and src/sys/dev/pci/pci_pci.c. The MSI support for amd64 and i386 is found in src/sys/amd64/amd64/msi.c and src/sys/i386/i386/msi.c, respectively. The source for the pciconf utility is found in the src/usr.sbin/pciconf directory, with the code to parse PCI capabilities in cap.c.


next up previous
Next: Bibliography Up: PCI Interrupts for x86 Previous: Acknowledgments