PCI Virtual IRQ Assignment in Windows 2000/XP
There are 255 total possible virtual IRQ's available in Windows starting with IRQ 16.
Windows is notorious for not allowing you to directly change which IRQ's are assigned to which device. This is why Plug and Play is often referred to as Plug and Pray. Windows assigned an IRQ and memory address to a PCI card device and there it sits. Even though you goto the device manager with the hopes of changing the IRQ assigned to the device (something that could actually be done 90% of the time under the first version of Windows 95) you find the option disabled.
Contents
PCI Devices in Windows
In Windows, peripheral component interconnect (PCI) devices can share interrupts (IRQs) by design. Per the Plug and Play capability that is defined by the PCI specification, adapters are configured by the computer's BIOS, and are then examined by the operating system and changed if necessary. It is normal behavior for PCI devices to have IRQs shared among them, especially for Advanced Configuration and Power Interface (APCI) computers with Windows ACPI support enabled.
The Virtual IRQ
On modern hardware we see extensive use of what are known as "Virtual IRQ's". Under Windows 2000 and XP the virtual IRQ's all use the real IRQ 11, so they are share that IRQ. IRQ numbers above 15 are considered virtual IRQs.
Microsoft has a KB article: How PCI Devices Are Detected and Why They May Fail
KB Article ID: 170922
Manually assigning the IRQs is possible in the "PnP/PCI configuration" BIOS submenu for many motherboards. However, although some motherboards show the option it doesn't always work. For example, on the GigaByte GA-P35-S3G motherboard, a modern board for Intel Core 2 processors, there is an option in bios to manually assign IRQ to PCI slots. Yet, Windows ignors this and still assigns IRQ's to the devices different from what is set in bios. It is suspected that GigaByte's motherboard does not pay notice to the bios setting, that it is an incomplete feature. Shame on GigaByte.
Unable to Change a Resource Setting in Device Manager
Device manager has the IRQ and memory addresses lock for the driver, and/or when you manually assigned an IRQ in the system bios, it is ignored by Windows because, according to Microsoft, the computer is running the Advanced Configuration and Power Interface (ACPI) Hardware Abstraction Layer (HAL).
On a computer that is running the Advanced Configuration and Power Interface (ACPI) Hardware Abstraction Layer (HAL), you are not able to change a resource setting for a device in Device Manager.
This behavior occurs because the ACPI HAL controls resource assignments in Windows 2000 and XP and does not permit user intervention.
Microsoft does not recommend that you change the HAL that is installed during the Windows Setup process. When you change from the ACPI HAL to the Standard PC HAL, you must reinstall the operating system. ACPI functionality is then lost. In some rare instances, you may need to have control over a resource assignment. You are only able to manually configure resources in Windows when the Standard PC HAL is used, and even then you may not be able to configure the device. The device must support the ability to manually set the resources.
Windows 2000 devices are all on IRQ 9 or IRQ 11
You install Windows 2000 and all or most devices are on IRQ 9 or IRQ 11.
Reason: Windows 2000 has been installed in ACPI mode and that is how it assigns its plug and play resources. Usually it's all assigned to IRQ9, sometimes IRQ11. This single IRQ is used as a gateway to 255 virtual IRQs above IRQ 15.
Solution: You can do this procedure from a Windows 2000 CD install or from boot disks, they say you can not do this from bootdisks but I have tested this and there is no issues.
Installation of Windows 2000:
- During the first phase of Setup, at the Setup is inspecting your computer's hardware configuration screen, press the F5 key. You will be prompted with new screen shortly asking about your system type.
- Select the Standard PC Option
- Continue with setup to complete the installation.