PCI/PXI Bus Enumeration

Knowledge Base Article # Q200163

Read Prior Article Read Next Article
Summary How the BIOS enumerates PCI/PXI devices upon boot up
  
Login to rate article
The Plug and Play features of the PCI bus were designed to automate the process of allocating resources to PCI devices. A simplifed process of enumeration is as follows:
  • When a PC is first powered on, the BIOS is loaded and starts the Plug and Play BIOS to enumerate all devices on the PCI bus. Upon boot up, all PCI devices connected to the bus are in an inactive state with no resources assigned and the Plug and Play BIOS must rescan the bus to ascertain what devices are currently present in the system.
  • The CPU will request the PCI Controller to query each combination of bus, device, and function numbers for a corresponding Device ID and Vendor ID.
  • If a device is found for the specified bus device and function, the BIOS will read the configuration space for required resources from the device and memory range (Base Address Registers), IO ports, DMA, and IRQ accordingly. If a PCI-to-PCI bridge is encountered, all the devices behind the bridge are enumerated and allocated resources before continuing past the bridge.
  • The configuration data is recorded in the Extended System Configuration Data (ESCD) file which is stored in non-volatile memory.
  • If the PCI Controller times out, it will return the maximum value with all bits set high (0xFFFF) indicating that no device was found at the specified device and function number.
When Windows XP boots up, it will check the ESCD file along with the PCI bus to determine if any new hardware was installed. If so, it will start the process of trying to install the correct device driver. Windows will typically leave the hardware configuration up to the BIOS as to not risk exposing latent BIOS bugs by optimizing resource allocation.

The BIOS and Windows work in concert to establish the Plug and Play operation of the PCI bus. The level of control given to Windows can sometimes be changed in the BIOS configuration utility for older motherboards. When the PnP OS option is set to No, the BIOS will configure all PnP PCI devices before Windows boots. If the PnP OS option is set to Yes, then the BIOS will only configure boot critical devices (Hard Drive, VGA etc.) and leave the rest of the configuration to Windows. ACPI compatible (newer) motherboards do not provide this option.

The following is a screenshot of the Geotest PCI/PXI Explorer showing the enumerated PCI devices and their respective resources.
PCI/PXI Bus Enumeration

Reference Knowledge Base Article Q200132 for information on how to resolve PCI resource allocation errors.
Article Date 5/28/2009
Keywords PCI, PXI, BIOS, enumeration, resources, Plug and Play


Login to rate article

Read Prior Article Read Next Article
>