PCI Virtual IRQ Assignment in Windows 2000/XP

From Free Knowledge Base- The DUCK Project: information for everyone
Jump to: navigation, search

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.

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.

IRQ stands for Interrupt ReQuest and refers to special numbered channels that are used by devices to get the processors attention. This is how information to and from your PCI card get handled by the system processor.

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:

  1. 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.
  2. Select the Standard PC Option
  3. Continue with setup to complete the installation.

XP: Standard PC with C-Step i486

When XP is first installed it tries to determine what type of BIOS is available on the computer. Newer systems have what is known as Advanced Configuration and Power Interface (ACPI) capability. If you press F5 just as the blue setup screen appears, you will see a menu allowing you to choose:

Standard PC with C-Step i486
Other

On some less commmon motherboards this menu is triggered without having to press F5 because the Windows setup program could not determine if the BIOS is ACPI capable.

Once you drop the CD in the tray and fire up the computer to install XP, the first thing you'll see at the bottom of the screen is the option to press F6 if you need to install a SCSI or RAID controller. Don't press F6. Press F5 instead. This will take you to a separate menu of Hardware Abstraction Layer's where you can choose an appropriate HAL that supports ACPI.

Using F7 to disable ACPI: There are situations where it is definitely not desirable to use an ACPI HAL even if it is supported by the BIOS. This predominately applies to servers, but to ensure that an ACPI HAL will not be used or automatically detected and used, press F7 instead of F5. If you press F7, the Standard PC HAL loads and the ACPI compliance check is bypassed.

Using F5 to disable ACPI: This technique has been verified to work in our testing on a modern Intel Core 2 compatible motherboard. Using F5 to interrupt the install as described above, then selecting "Standard PC with C-Step i486" caused Windows XP to install without ACPI support.

How to force a Hardware Abstraction Layer during an upgrade or an installation of Windows XP
Article ID: 299340

To determine if your computer was detected as being ACPI enabled:

  1. Right click My Computer then click Properties > Hardware > Device Manager.
  2. Expand the entry called Computer.
  3. If the entry is 'Advanced Configuration and Power Interface (ACPI) PC' you're all set. If it says 'Standard PC' the computer BIOS was not detected as being ACPI capable.

The ACPI cannot be changed after installation. If you try, you will corrupt your installation.

It is now safe to turn off your computer.

Remember this message from the early Windows 95 days? It is still present in Windows XP for uses that have purposely disabled ACPI during the Windows XP installation, or for installations that failed to install ACPI support. It is unlikely that a modern post Pentium 4 motherboard does not support ACPI.

To have Windows XP automatically power down the computer when you choose to shut down Windows, you will need to ensure that ACPI support is installed during the Windows XP installation. It cannot be added later.

Many users report this condition when installing Windows XP on a newer laptop computer. The laptop computer's type of BIOS was unclear to the Windows XP installer. Reinstall Windows XP and use the F5 technqiue mentioned above to manually select the ACPI type. You may have to manually load a driver, from a floppy disk, provided by the laptop manufacturer.

If you intentionally set out to disable ACPI support during the Windows XP installation, this is one indicator that you were successful. Your computer did not automatically power off when you quit Windows.