PATH 
ADC Home > Documentation > Hardware > Device Managers and Drivers > PCI Card Services > Designing PCI Cards and Drivers for Power Macintosh Computers


  

Automatic IST Extension Operation

The nature of the PCI-to-PCI bridge devices available on the market today imposes some limitations on automatic IST extensions. While today's PCI-to-PCI bridge devices transparently handle the addressing aspects of PCI buses, they do not do the same for interrupt request signals. Also, there is no current standard among card vendors for providing hardware registers that indicate which device is requesting service. Hence, card vendors often simply wire the interrupt request signals from all devices together into a single signal and feed that directly to the main logic board's slot. The IST that is constructed for the main logic board can tell that something wants service on the multifunction expansion card, but it cannot tell exactly which device. To accommodate this "lowest common denominator" behavior, the IST extensions from the slot IST member uses dispatching modification options to poll the extended IST members, as described in InterruptHandler.

When polling is used, certain actions must be observed by the ISRs, IERs, and IDRs attached to the extended IST members. Each PCI-to-PCI bridge's IST member has a special bridge dispatching ISR installed. This transversal ISR handles all the devices requesting interrupt service during a single IST transversal. Once all of the device's ISRs return kIsrIsNotComplete, the transversal ISR returns kIsrIsComplete to the dispatcher to indicate that interrupt processing is complete. The transversal ISR also implements a simple fairness algorithm that keeps any one device from dominating the interrupt service requests. It makes sure that the same device isn't serviced twice in a row (unless only one device is requesting service), regardless of the number of IST transversals.

In addition, separate software flags are maintained for each extended IST member to enable and disable interrupt servicing. Invoking an extended IST member's IDR and IER functions has two implicit effects. First, invoking the IDR only prevents the extended IST member's ISR from being invoked; it does not disable the device's ability to request an interrupt. It is the responsibility of the driver to disable interrupt requests from the actual device. Second, invoking the IER not only allows the extended IST member's ISR to be invoked; it also traverses the IST back to the main logic board's slot IST member, invoking the IER of each IST member encountered. Thus, a driver needs only invoke its device's IER to allow interrupt requests through the IST.


© 1999 Apple Computer, Inc. – (Last Updated 26 March 99)