Interrupt sharing on PCI-devices

by Johannes Helmig [Published on 1 Nov. 1998 / Last Updated on 1 Nov. 1998]

On a fully loaded PC, it is very easy to run out of Interrupts.
As a solution, PCI-devices with proper support of the operating system (Windows 95 OSR2.0/2.1 and Windows98) can SHARE interrupts.

This is explained in the Microsoft Knowledge base article Q182604:


Description of PCI Bus IRQ Steering

The information in this article applies to:
•Microsoft Windows 95 OEM Service Release versions 2, 2.1
•Microsoft Windows 98


SUMMARY

This article describes Peripheral Component Interconnect (PCI) bus interrupt request (IRQ) steering.

MORE INFORMATION

Windows 95 OEM Service Release 2 (OSR2) and Windows 98 provide support for PCI bus IRQ steering. By using PCI bus IRQ steering, Windows can dynamically assign or "steer" PCI bus IRQs to PCI devices. Note that Microsoft Windows 95 (retail release) and Microsoft Windows 95 OEM Service Release 1 (OSR1) do not provide support for PCI bus IRQ steering.


ISA and PCI IRQs

Multiple Industry Standard Architecture (ISA) devices cannot share an ISA IRQ, however, multiple PCI devices can share a PCI IRQ. On computers that use a PCI bus, the 16 standard IRQs can be programmed to either PCI or ISA mode. An IRQ cannot be programmed for both modes at once.


How IRQs Are Assigned to PCI Devices

In Windows 95 (retail release) and OSR1, the Basic Input/Output System (BIOS) assigns IRQs to PCI devices. With OSR2 and Windows 98, if PCI bus IRQ steering is disabled in Windows the BIOS assigns IRQs to PCI devices, but if PCI bus IRQ steering is enabled, Windows assigns IRQs to PCI devices. When IRQ steering is enabled the BIOS still assigns IRQs to PCI devices, and even though Windows has the ability to change these settings, it generally does not.


CardBus Cards and OSR2

PCI R3 Personal Computer Memory Card International Association (PCMCIA) cards (CardBus cards), look very similar to the more common ISA R2 PCMCIA cards. CardBus cards use 32-bit addressing and require a PCI-type shareable IRQ. R2 PCMCIA cards use 16-bit addressing with an ISA-type non- shareable IRQ. PCI bus IRQ steering gives the operating system the flexibility to reprogram PCI IRQs when it rebalances Plug and Play resources. Without PCI bus IRQ steering, Windows can only rebalance Plug and Play ISA IRQs to resolve resource conflicts.


How OSR2 and Windows 98 Use PCI Bus IRQ Steering

PCI bus IRQ steering gives OSR2 and Windows 98 the flexibility to reprogram PCI interrupts when rebalancing Plug and Play PCI and ISA resources around non-Plug and Play ISA devices. Windows 95 (retail release) and OSR1 cannot rebalance PCI and ISA IRQs for Plug and Play devices around non-Plug and Play ISA devices to solve resource conflicts.

For example, if your computer's BIOS is unaware of non-Plug and Play ISA cards, the operating system does not have PCI bus IRQ steering, and the BIOS has set a PCI device to IRQ 10, you may have a resource conflict when you add a non-Plug and Play ISA device that is configured for IRQ 10.

However, with PCI bus IRQ steering the operating system can resolve this IRQ resource conflict. To do so, the operating system:
•Disables the PCI device.
•Reprograms a free IRQ to a PCI IRQ, for example IRQ 11.
•Assigns an IRQ holder to IRQ 11.
•Moves the PCI device to IRQ 11.
•Reprograms IRQ 10 to be an ISA IRQ.
•Removes the IRQ holder for IRQ 10.



IRQ Holder

An IRQ Holder for PCI Steering may be displayed when you view the System Devices branch of Device Manager. An IRQ Holder for PCI Steering indicates that an IRQ has been programmed to PCI mode and is unavailable for ISA devices, even if no PCI devices are currently using the IRQ. To view IRQs that are programmed for PCI-mode, follow these steps:

1.Click Start, point to Settings, click Control Panel, and then double-click System.
2.Click the Device Manager tab.
3.Double-click the System Devices branch.
4.Double-click the IRQ Holder for PCI Steering you want to view, and then click the Resources tab.


How to Determine if Your Computer Is Using IRQ Steering

To determine if your computer is using IRQ Steering, follow these steps:
1.Click Start, point to Settings, click Control Panel, and then double-click System.
2.Click the Device Manager tab.
3.Double-click the System Devices branch.
4.Double-click PCI Bus, and then click the IRQ Steering tab. You should see one of the following settings:
- IRQ Steering Enabled
- IRQ Steering Disabled

NOTE: PCI bus IRQ steering is disabled by default in OSR2. If you are using OSR2, and IRQ steering is disabled, verify that the Use IRQ Steering check box is selected on the IRQ Steering tab.


IRQ Steering may be displayed as disabled in Device Manager for any of the following reasons:
•The IRQ routing table that must be provided by the BIOS to the operating system may be missing or contain errors. The IRQ routing table provides information on how the motherboard is configured for PCI IRQ's.
•The Use IRQ Steering check box is not selected.
•The "Get IRQ table from Protected Mode PCIBIOS 2.1 call" check box is not selected.
•Your computers BIOS may not support PCI bus IRQ steering. For more information, contact the manufacturer of your BIOS.



Example of a system using PCI Interrupt sharing ( a Toshiba notebook):
Display in "Control-Panel" the "System-Applet", properties of "Computer":


I did not experience problems myself with a Network-card sharing its Interrupt, but I have received messages on this subject:
" I've found that about 90 percent of my clients who have problems with network connectivity are using full multimedia machines with most irq's being used. I found that by disabling pci steering in these systems it cures the problem 100%. The associated article is at :
http://support.microsoft.com/support/kb/articles/q182/6/28.asp"

How to Disable PCI Bus IRQ Steering in Windows
Article ID: Q182628
------------------------------------------------------------------------
The information in this article applies to:
•Microsoft Windows 98


SUMMARY

This article describes how to disable Peripheral Component Interconnect (PCI) bus interrupt request (IRQ) steering in Windows.


MORE INFORMATION

When PCI bus IRQ steering is enabled, Windows dynamically assigns or "steers" PCI bus IRQs to PCI devices. If there are IRQ conflicts between PCI devices, you may need to disable PCI bus IRQ steering to determine where the conflicts occur. To disable PCI bus IRQ steering, follow these steps:
1.Click Start, point to Settings, click Control Panel, and then double-click System.
2.Click the Device Manager tab.
3.Double-click the System Devices branch.
4.Double-click PCI Bus, and then click the IRQ Steering tab.
5.Click the Use IRQ Steering check box to clear it, click OK, and then click OK again.
6.When you are prompted to restart your computer, click Yes.

NOTE: You may also have to disable PCI bus IRQ steering in your computer's basic input/output system (BIOS). For information about how to do so, contact you BIOS manufacturer.


The following settings determine which routing tables Windows uses when programming IRQ steering:
•Get IRQ table using ACPI BIOS:
When this check box is selected, the ACPI BIOS IRQ routing table is the first table Windows tries to use to program IRQ steering. If a PCI device is not working properly, click this check box to clear it. •Get IRQ table using MS Specification table:
When this check box is selected, the MS Specification routing table is the second table Windows tries to use to program IRQ steering
.
•Get IRQ table from Protected Mode PCIBIOS 2.1 call:
When this check box is selected, the Protected Mode PCIBIOS 2.1 routing table is the third table Windows tries to use to program IRQ steering.
•Get IRQ table from Real Mode PCIBIOS 2.1 call:
When this check box is selected, the Real Mode PCIBIOS 2.1 routing table is the fourth table Windows tries to use to program IRQ steering.
NOTE: By default, the "Get IRQ table from Protected Mode PCIBIOS 2.1 call" check box is not selected. You should only click this check box to place a check mark if a PCI device is not working properly.

IRQ Holder For PCI Steering may appear under IRQ Routing Status even though PCI bus IRQ steering is disabled. This can occur if the IRQ settings are being read by your computer's BIOS. For information about modifying the BIOS, contact your BIOS manufacturer.



To disable PCI-Steering under Windows98:
In the "Control-Panel","System-Applet, tab: "Device-Manager",
select under "System devices" the "PCI-Bus" properties:

and "un-check" the "use IRQ Steering"


You can also try to install the PCI-network card in a different PCI-slot, because that usually causes the BIOS and Windows98 to assign a different INT/IRQ, (which is hopefully causing you less hassle).

See Also

Featured Links