Firmware Test Suite - pciirq test
This test dumps and sanity checks the legacy BIOS PCI IRQ Routing Table, described in pages 233-238 of the PCI System Architecture, Fourth Edition, Mindshare, Inc.(1999)
The PCI IRQ Routing Table only really knows about ISA IRQs and is generally not used with APIC. This is a legacy BIOS table.
Currently six specific tests are performed:
- Check for a valid Compatible PCI Interrupt Router ID
- Check for a correctly sized table
- Check reserved fields are zero
- Check for a connected link if a slot bitmap is defined
- Check for a slot bitmap if a connected link is defined
- Check for the more than 1 instance of this table
Typical output from this test is as follows:
Check PCI IRQ Routing Table. -------------------------------------------------------------------------------- Test 1 of 1: PCI IRQ Routing Table. This test tries to find and sanity check the PCI IRQ Routing Table, as defined by http://www.microsoft.com/taiwan/whdc/archive/pciirq.mspx and described in pages 233-238 of PCI System Architecture, Fourth Edition, Mindshare, Inc. (1999). NOTE: The PCI IRQ Routing Table only really knows about ISA IRQs and is generally not used with APIC. Found PCI IRQ Routing Table at 0x000fbc40 Signature : $PIR Version : 0x0100 (1.0) Table Size : 0x01c0 bytes (26 slot entries) PCI Router ID : 00:1f.0 PCI Exclusive IRQs : 0x0000 (none) Compatible PCI Router : 8086:122e Miniport Data : 0x00000000 (none) Reserved : 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 Checksum : 0xe1 Bus:Dev Slot INTA# INTB# INTC# INTD# 00:1b 00 6a/8c80 00:04 00 60/8c80 61/8c80 62/8c80 63/8c80 00:06 00 63/8c80 60/8c80 61/8c80 62/8c80 00:1d 00 6b/8c80 63/8c80 60/8c80 62/8c80 00:1a 00 60/8c80 69/8c80 62/8c80 63/8c80 00:19 00 68/8c80 00:16 00 60/8c80 63/8c80 62/8c80 61/8c80 00:00 00 60/8c80 61/8c80 62/8c80 63/8c80 00:02 00 60/8c80 00:1f 00 69/8c80 63/8c80 62/8c80 60/8c80 00:07 00 60/8c80 ef:00 04 60/8c80 61/8c80 62/8c80 63/8c80 00:01 00 60/8c80 61/8c80 62/8c80 63/8c80 00:1c 00 60/8c80 61/8c80 62/8c80 63/8c80 02:00 05 60/8c80 61/8c80 62/8c80 63/8c80 03:00 06 61/8c80 62/8c80 63/8c80 60/8c80 eb:00 07 62/8c80 63/8c80 60/8c80 61/8c80 ea:00 08 63/8c80 60/8c80 61/8c80 62/8c80 e9:00 09 60/8c80 61/8c80 62/8c80 63/8c80 e8:00 0a 61/8c80 62/8c80 63/8c80 60/8c80 e7:00 0b 62/8c80 63/8c80 60/8c80 61/8c80 e6:00 0c 63/8c80 60/8c80 61/8c80 62/8c80 ee:00 01 69/8c80 6a/8c80 6b/8c80 68/8c80 ee:01 02 6a/8c80 69/8c80 68/8c80 6b/8c80 ee:05 03 62/8c80 68/8c80 6a/8c80 69/8c80 00:14 00 60/8c80 PASSED: Test 1, The Compatible PCI Interrupt Router is defined. PASSED: Test 1, Table size was correct for 26 slot entries. PASSED: Test 1, Reserved region is set to zero. PASSED: Test 1, All 26 slots have sane looking link and IRQ bitmaps. ================================================================================ 4 passed, 0 failed, 0 warnings, 0 aborted, 0 skipped, 0 info only. ================================================================================
Examples:
sudo fwts pciirq -
..runs the pciirq test on your machine and dumps the output to stdout.
sudo fwts pciirq
..runs the pciirq test on your machine and appends the output to the default logfile results.log
Explanation of test results
Certain test results may require a little more explanation. This section will try and give some context to specific test failures.
Error ID |
Explanation |
PCIIRQBadCompatPCIRouterID |
A badly formed Compatible PCI Interrupt Router was defined. |
PCIIRQBadTableSize |
Bad table size, possibly too large for the number of slots entries defined. This won't cause any problems, but does mean wasted table space. |
PCIIRQBadReserved |
The reserved area defined for future use should be zero, and it isn't. |
PCIIRQLinkBitmap |
Either a slot has a defined bitmap but no link defined, or a link and no bitmap defined. This could lead to incorrect behaviour because of poorly configured PCI interrupt slots. |
PCIIRQMultipleTables |
More than one instance of the table was found. There should be only one table in the system. |