How PCI Devices Are Detected and Why They May Fail

This article was previously published under Q170922
This article has been archived. It is offered "as is" and will no longer be updated.
This article attempts to:
  • Explain, on a high level, how PCI devices are detected.

  • Explain why some PCI devices are not detected or hang the computer.

  • Explain how the computer determines which PCI devices are assigned which interrupt requests (IRQ).

    NOTE: Windows NT expects all devices to be configured correctly before it attempts to start so that it can load the appropriate driver for each device. Windows NT does not utilize the Plug and Play specification; therefore, it cannot dynamically reassign an IRQ.
This article is divided into the following sections:
  • PCI Overview and Interrupt Assignment

  • Troubleshooting

PCI Overview and Interrupt Assignment

The PCI specification allows the motherboard manufacturer to determineinterrupt assignments. Because there is no single method to assign an IRQto a PCI device, you may experience problems installing multiple PCIdevices in Windows NT.

Programmable Interrupt Controller (PIC):

Every motherboard has a device called the Programmable Interrupt Controller(PIC). This is the central location all devices must use when they wish tobe serviced by the central processing unit (CPU). The following is anexample of one design:
   PCI Int#A (PCI Slot 1)---      |===============|                            |     |Programmable   |   PCI Int#A (PCI Slot 2)---------|               | Interrupt Line to CPU                            |     |Interrupt      |========>   PCI Int#A (PCI Slot 3)---      |               |                                  |Controller     |                                  |===============|				

A problem with this design is that three PCI devices must share the sameinterrupt number and line. If any of the cards do not properly pass theinterrupt (driver or hardware failure) to one of the other devicesrequesting attention, one of the cards may fail to be detected or will notbe used by a driver.

The following is an example of a newer design:
   PCI Int#A (PCI Slot 1)----------|==============|                                   |Programmable  |   PCI Int#A (PCI Slot 2)----------|              | Interrupt Line to CPU                                   |Interrupt     |========>   PCI Int#A (PCI Slot 3)----------|              |                                   |Controller    |                                   |==============|				

Because each device has their own direct trace to the PIC, this designallows the PIC to assign a different IRQ for each PCI device. This allowsassigning virtual IRQ's or allowing each device to have its own discreteIRQ.


If the computer fails to boot, there is probably a hardware issue. Pleasecontact the hardware manufacturer for more information.

Perform one of the following steps if the computer boots, but Windows NTstates a device failed:
  • Click the Start button, point to Programs, point to Administrative Tools, click Windows NT Diagnostics, click the Resources tab, and then click IRQ.

    If all PCI devices in question appear with their own separate IRQ's, but your system shows them as sharing an IRQ, the problem is most likely system related. Please check with your hardware manufacturer to see if a BIOS upgrade is available.
  • Install the last PCI device that fails, but do not install its driver. If the computer fails, it is most likely a hardware issue that should be resolved with the manufacturer.
  • If possible, remove all PCI devices and install them in the reverse order to see if IRQ sharing performs better. You can also try changing the slots where the cards are installed.
For additional information, please see the following article in theMicrosoft Knowledge Base:
148501 Preventing PCI Resource Conflicts on Intel-Based Computers
hardware apic

Article ID: 170922 - Last Review: 12/04/2015 17:19:46 - Revision: 1.1

Microsoft Windows NT Workstation 3.51, Microsoft Windows NT Workstation 4.0 Developer Edition, Microsoft Windows NT Server 3.51, Microsoft Windows NT Server 4.0 Standard Edition

  • kbnosurvey kbarchive kbhowto kbinfo kbsetup KB170922