Hi,
I have a PCI board with PLX9080 and I wrote a WDM driver for it.
It works fine on 98, Win2k with “Standard PC”, Win2k with “ACPI Uniprocessor PC”, WinXP with
“Standard PC”.
I have a PC with WinXP “ACPI Uniprocessor PC” and the ISR is not called at all.
I tried on this machine the same XP but with “Standard PC” (without ACPI) and it works.
With ACPI Uniprocessor PC it doesn’t want to call my ISR at all (I verified with SoftIce).
I use the following code for connecting to the interrupt in the AddDevice routine of the driver:
devExt->InterruptLevel = (UCHAR)prdTranslated->u.Interrupt.Level;
devExt->InterruptVector = prdTranslated->u.Interrupt.Vector;
devExt->InterruptAffinity = prdTranslated->u.Interrupt.Affinity;
if (prdTranslated->Flags & CM_RESOURCE_INTERRUPT_LATCHED) {
devExt->InterruptMode = Latched;
} else {
devExt->InterruptMode = LevelSensitive;
}
ASSERT(devExt->InterruptMode == LevelSensitive);
irq_shared = (prdTranslated->ShareDisposition == CmResourceShareShared);
code = IoConnectInterrupt(&devExt->InterruptObject,
PciHandleInterrupt,
devExt, // ISR Context
NULL,
devExt->InterruptVector,
(KIRQL)devExt->InterruptLevel,
(KIRQL)devExt->InterruptLevel,
devExt->InterruptMode,
irq_shared,
devExt->InterruptAffinity,
FALSE);
When it is called, the values are:
Vector: 0x183
InterruptLevel: 0x07
InterruptMode: 0
irq_shared: 1
InterruptAffinity: 1
I tried to catch the IoConnectInterrupt for a whatever driver (USB host controller, NIC) with values:
Vector: 0x173
InterruptLevel: 0x06
InterruptMode: 0
share:1, affinity: 1, respectively
Vector: 0x1B4
InterruptLevel: 0x0A
InterruptMode: 0
share:1, affinity: 1.
(… the other drivers work, verified with SoftIce and the ISR is called).
I don’t think this code is wrong, because I kept all of the DDK says about IoConnectInterrupt and it works with Win2k ACPI Uniprocessor PC.
And I’m sure this is a software problem, because I can read the PLX’s Interrupt Control/Status register and the bit 15 (Local Interrupt is active) is set (of course the local interrupt and the pci interrupt are enabled) and I measured the INTA signal and it is active physically.
If someone has some suggestion, please help me.
Thanks,
Micsa
Home, no matter how far…
http://www.home.ro