[adeel420] IRQ Steering

  • From: "Sajid Iqbal" <sajid_cyberspace@xxxxxxxxxx>
  • To: <"Undisclosed-Recipient:;"@smtp-2.hotpop.com>
  • Date: Sun, 1 Dec 2002 01:08:08 +0500

IRQ Steering:
W95B and later supports IRQ steering, which allows multiple PCI devices to
share an interrupt.
However, ISA devices do not support interrupt sharing, so mixing ISA and PCI
devices on the same interrupt is a guaranteed recipe for trouble.

To avoid the above problem, the CMOS setup allows you to select whether a
particular IRQ supports PCI devices or not.  The IRQs used by ISA devices
(Eg: ISA internal modems or ISA network cards) must be specifically set to
ISA mode only, so the PnP Manager knows that it cannot assign other devices
to the same IRQs used by your ISA devices.

As well as the problems mentioned above, a further problem can occur when a
mixture of PCI 1.x or 2.0 devices are installed along with PCI 2.1 devices
-- and the motherboard BIOS is too stupid to realize that PCI devices
earlier than 2.1 do not support IRQ sharing.

In the above circumstance, if a PCI 2.1 and PCI 2.0 device try and share an
IRQ -- there will be similar problems as if a PCI and ISA device tried to
share an IRQ.

A similar conflict-scenario can occur with ISA-PNP devices on motherboards
where the BIOS is too stupid to classify the devices as PCI-PNP or ISA-PNP.
ISA-PNP devices do not support IRQ sharing, even though they do support
automated IRQ/DMA/IO reassignment. As a result, if the BIOS is unable to
confirm the device is an ISA-PNP card, the PnP Manager in the BIOS will
blithely assign that ISA-PNP device to the same IRQ as a PCI 2.1 device --
leading to the very conflict that PnP was supposed-to-be-designed to avoid.

Solutions to the above problems are as follows:
1. Update the motherboard BIOS to the latest available.
Many motherboard BIOS updates contain bugfixes to the PnP manager which add
the required "smarts" to avoid the abovementioned problems.
2. Reserve an appropriate IRQ for any ISA devices in your machine -- whether
ISA-PNP or not, by setting the desired IRQ as "Legacy ISA".
(Eg: IRQ5 for an ISA Sound Card, IRQ9 for an internal modem jumpered to
COM3/IRQ2, IRQ10 for an ISA Network card.)
Note: You *must* retain at least one high-IRQ (Eg: IRQ11) for use by all the
PCI 2.1 cards in your machine.

3. Ensure the version of W9x you are running has the appropriate "smarts" in
its INF files to properly understand and install the proper Chipset support
for the motherboard in use.  PnP will not work properly without full support
for both the PCI Bus and the PCI/ISA Bridge in the System section of Control
Panel.

Note: W95/W95A is especially prone to the above problem.

All W95 versions should be checked using the motherboard manufacturer's
utilities to ensure full support for that chipset is installed.  Even W98
has this problem with the very-latest motherboards...

For Intel Chipsets, the latest version of the W95/W98 Intel Update Utility
is available for download from the Intel Website.

For other chipsets, (Eg: VIA) check the motherboard and/or the chipset
manufacturer's website for similar utilities to the Intel Update Utility.
Running the Updater will install new INF files for the appropriate version
of W9x.  Restarting the machine will cause the appropriate chipset support
to be automatically redetected -- which solves ISA-PnP problems if the
PCI/ISA Bridge in a new chipset was not detected/installed using the older
INF files in the original W9x installation.

But what about previously-designated ISA devices, such as IDE controllers,
Serial ports, Parallel ports, etc.
Any device which is "auto-discovered" on startup is a PnP device by definition.
The onboard Serial and Parallel ports on all the motherboards are ISA-PNP
devices -- since their IRQs (IRQ3, IRQ4) cannot be shared with other devices.
This is also true for the Timer Tick (IRQ0), the Keyboard Interrupt (IRQ1),
the Floppy Disk controller (IRQ6) the LPT1 interrupt (IRQ7), the Clock
interrupt (IRQ8) the onboard PS/2 mouseport (IRQ12), the onboard Math
Processor (IRQ13) and the Primary/Secondary IDE Controllers (IRQ14, IRQ15).
This leaves IRQ5, IRQ9, IRQ10 and IRQ11 to support all the other devices
installed in the motherboard slots .
Note: IRQ2 is used as the cascade-controller interrupt, which supports the
high-irqs when they are stepped down to the primary low-irq controller.
Thusly, IRQ2 cannot be used for any other purpose without causing problems
with normal high-irq operations.

Legacy DOS apps do not understand IRQ sharing and the need for "waiting"
while the hardware "gets around" to servicing a request.
Consequently, it is not possible to share interrupts when dealing with
hardware services used to provide support for DOS-legacy-format requests --
such as HD Controllers, Floppy Controllers, PS/2 mouseports Serial Ports, or
Parallel Ports.
Unfortunately, to maintain backwards DOS compatability, we constrain ourself
to the above straightjacket.


Other related posts:

  • » [adeel420] IRQ Steering