Re: IRQ assignment in Windows 2K/XP/2003...

Tech-Archive recommends: Repair Windows Errors & Optimize Windows Performance



Why do you say that the motherboard has them or'd together? The Int A lines
do not need to be bussed together. The mother board can route the Int lines
from each slot anyway it wishes.

Paul
"Mark Roddy" <markr@xxxxxxxxxxxxxx> wrote in message
news:%23y$Xs5kOFHA.2356@xxxxxxxxxxxxxxxxxxxxxxx
> Cosmo wrote:
>> OS: Windows 2K/XP/2003
>> Hardware Platform: Intel x86-based PC, PIII, 815E chipset
>> Drivers: WDM-style
>>
>> I have two independent, single-function PCI devices on the other side of
>> a
>> PCI-to-PCI bridge:
>>
>> PCI slot <---> PCI-to-PCI bridge <---> PCI device #1
>> |
>> ---> PCI device
>> #2
>>
>> Both PCI devices request an interrupt and are physically attached to INTA
>> on
>> the PCI bus. A seperate WDM device driver is written to control each of
>> the
>> PCI devices.
>>
>> When the drivers load for each of the two devices, the system (PnP
>> manager)
>> dynamically assigns an IRQ # for each of the two devices. Sometimes the
>> IRQ
>> # is the same and sometimes the IRQ # is different. I can disable and
>> re-enable each device via the Windows XP Device Manager and get the IRQ #
>> assignments to change.
>>
>> Now, when the two devices are assigned a common IRQ # and INTA is
>> asserted
>> by either device, the ISR in each of the drivers is called to determine
>> if
>> they are interrupting (one says no and the other says yes--hardware is
>> serviced and all is well). However, when the two devices are assigned
>> different IRQ #s, only the ISR for one of the drivers is called. If the
>> other device happened to be generating the interrupt, the system is
>> locked
>> up as the non-interrupting device's ISR is continually called in a loop.
>>
>> I am inclined to believe that as long as the two PCI devices are assigned
>> different IRQ #s by PnP when they both use the same INTA interrupt line
>> on
>> the PCI bus, both device's ISRs are not guaranteed to be consulted.
>>
>> What can be done to cure this problem? Can something different be done
>> in
>> the driver during start time? In the IoConnectInterrupt() call? Right
>> now
>> I am simply passing the information handed to the driver by the PnP
>> manager
>> into the IoConnectInterrupt() call. Any other options? Can anything be
>> done to the PCI configuration space of the end-devices or PCI-to-PCI
>> bridge
>> to influence the system's choice of IRQ #? I would like to understand
>> this
>> behavior better (what is going on under the covers).
>>
>> Regards,
>> Cosmo
>>
>>
> My PCI book says that the interrupt lines on your pci devices are directly
> connected to the same interrupt lines on the connector slot your bridge is
> plugged into. In other words, for interrupts, the bridge is not really in
> the picture. So the situation appears to be that the OS thinks that these
> devices have separately routable interrupts when in fact they motherboard
> has them or'd together. So somebody is confused. The choices are: me, the
> bios, or the os.
>
>
> --
>
> =====================
> Mark Roddy DDK MVP
> Windows 2003/XP/2000 Consulting
> Hollis Technology Solutions 603-321-1032
> www.hollistech.com


.



Relevant Pages

  • Re: IRQ assignment in Windows 2K/XP/2003...
    ... Both PCI devices request an interrupt and are physically attached to INTA ... When the drivers load for each of the two devices, ... dynamically assigns an IRQ # for each of the two devices. ...
    (microsoft.public.development.device.drivers)
  • Re: IRQ assignment in Windows 2K/XP/2003...
    ... He has two devices behind the bridge, each of which are given separate interrupt vectors by the OS, indicating that the OS believes them to be separately routable. ... Both PCI devices request an interrupt and are physically attached to INTA on ... When the drivers load for each of the two devices, ... Sometimes the IRQ ...
    (microsoft.public.development.device.drivers)
  • Re: Serial related oops
    ... IRQ sharing is stupid yet universal, ... the interrupt line if no driver services the interrupt. ...
    (Linux-Kernel)
  • Re: NIC fails in RELEASE build CE 5.0
    ... Basically, I have set the NIC to use IRQ 0x0A, and I have left it as Either ... it looks like the driver just takes the IRQ and maps it to the first unused ... What I don't see is where the hardware interrupt is actually enabled. ... I get this sequence repeated while DHCP keeps ...
    (microsoft.public.windowsce.platbuilder)
  • sis900: Disabling IRQ 3 - not working!
    ... fine and yenta and sis900 shares the IRQ 3. ... Maybe the problem isn't in sis900 driver, ... doesn't catch the IRQ 3 when using ACPI. ... Using PIC for interrupt routing ...
    (Linux-Kernel)