Device Will Not Generate Interrupts On Multiprocessor Computers

I have a problem in my specialized serial device driver
that only manifests itself in multiprocessor machines.

  1. The driver is a Windows NT4.0 driver.

  2. The driver works fine on single processor machines
    for both ISA and PCI serial cards.

  3. On the multiprocessor machines running Window 2000
    I do not get interrupts from ISA cards or PCI
    cards.

  4. On multiprocessor machines running Windows NT4.0
    I get interrupts from the ISA cards but no
    interrupts from the PCI card.

  5. For the PCI card I use HalGetBusData() to get both
    the I/O address of the card and the interrupt line.
    I get the interrupt from
    PCIInfo.u.type0.InterruptLine in the PCI config
    space. I then call HalGetInterruptVector() using
    the value PCIInfo.u.type0.InterruptLine for both
    the BusInterruptLevel & BusInterruptVector
    parameters. The system has one PCI bus which is
    zero. I then call the IoConnectInterrupt().

  6. For the ISA card I call HalGetInterruptVector()
    using the known IRQ for the board for both
    the BusInterruptLevel & BusInterruptVector
    parameters. The system has one ISA bus which is
    zero. I then call the IoConnectInterrupt().

What am I missing? The driver has been working fine on
single processor machines for some time now. What
do I need to do to get it to work on a
multiprocessor system? Please reply to the newsgroup
as well as to xxxxx@wcscnet.com.

Best Regards,
Egberto Willies

WCSC(Willies Computer Software Co)
http://www.wcscnet.com
Tel: (281)360-4232 Fax: (281)360-3231

You aren’t the first one to hit this, but I don’t remember the solution.
I believe the issue is related to how HALMPS uses the APIC.
I’d expect the same symptoms if you use HalMps with one CPU.
-DH

----- Original Message -----
From: “Berto”
To: “NT Developers Interest List”
Sent: Friday, December 08, 2000 12:07 AM
Subject: [ntdev] Device Will Not Generate Interrupts On Multiprocessor Computers

> I have a problem in my specialized serial device driver
> that only manifests itself in multiprocessor machines.
>
> 1. The driver is a Windows NT4.0 driver.
>
> 2. The driver works fine on single processor machines
> for both ISA and PCI serial cards.
>
> 3. On the multiprocessor machines running Window 2000
> I do not get interrupts from ISA cards or PCI
> cards.
>
> 4. On multiprocessor machines running Windows NT4.0
> I get interrupts from the ISA cards but no
> interrupts from the PCI card.
>
> 5. For the PCI card I use HalGetBusData() to get both
> the I/O address of the card and the interrupt line.
> I get the interrupt from
> PCIInfo.u.type0.InterruptLine in the PCI config
> space. I then call HalGetInterruptVector() using
> the value PCIInfo.u.type0.InterruptLine for both
> the BusInterruptLevel & BusInterruptVector
> parameters. The system has one PCI bus which is
> zero. I then call the IoConnectInterrupt().
>
> 6. For the ISA card I call HalGetInterruptVector()
> using the known IRQ for the board for both
> the BusInterruptLevel & BusInterruptVector
> parameters. The system has one ISA bus which is
> zero. I then call the IoConnectInterrupt().
>
>
> What am I missing? The driver has been working fine on
> single processor machines for some time now. What
> do I need to do to get it to work on a
> multiprocessor system? Please reply to the newsgroup
> as well as to xxxxx@wcscnet.com.
>
> Best Regards,
> Egberto Willies
>
>
>
> WCSC(Willies Computer Software Co)
> http://www.wcscnet.com
> Tel: (281)360-4232 Fax: (281)360-3231
>
>
> —
> You are currently subscribed to ntdev as: xxxxx@syssoftsol.com
> To unsubscribe send a blank email to $subst(‘Email.Unsub’)