Missing MSI interrupts

Post a reply

Confirmation code
Enter the code exactly as it appears. All letters are case insensitive.
Smilies
:D :) ;) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :!: :?: :idea: :arrow: :| :mrgreen: :geek: :ugeek:
BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON
Topic review
   

Expand view Topic review: Missing MSI interrupts

Missing MSI interrupts

Post by Guest »

Hello,

I'm writing WDM driver and I'm having difficulties with getting message signaled interrupts to work.
Interrupt is sent from Xilinx SoC on PCIe card. I register my ISR like this:

RtlZeroMemory( &IntParams, sizeof( IO_CONNECT_INTERRUPT_PARAMETERS ) );

IntParams.Version = CONNECT_MESSAGE_BASED;
IntParams.MessageBased.ConnectionContext.Generic = &DevExt->InterruptConnectionContext;
IntParams.MessageBased.PhysicalDeviceObject = DevExt->PhysicalDeviceObject;
IntParams.MessageBased.MessageServiceRoutine = Card_MessageSignaledISR;
IntParams.MessageBased.ServiceContext = DeviceObject;
IntParams.MessageBased.SpinLock = NULL;
IntParams.MessageBased.SynchronizeIrql = 0;
IntParams.MessageBased.FloatingSave = FALSE;
IntParams.MessageBased.FallBackServiceRoutine = Card_InterruptServiceRoutine;

Status = IoConnectInterruptEx( &IntParams );

This is called when driver receives IRP_MN_START_DEVICE. IoConntectInterruptEx returns STATUS_SUCCESS but my ISR never gets called.
Also, I enable MSI in .inf file like this:

HKR,"Interrupt Management",,0x00000010 HKR,"Interrupt Management\MessageSignaledInterruptProperties",,0x00000010
HKR,"Interrupt Management\MessageSignaledInterruptProperties",MSISupported,0x00010001,1
HKR,"Interrupt Management\MessageSignaledInterruptProperties",MessageNumberLimit,0x00010001,1

It is worth mentioning that I'm sure that SoC actually triggers interrupt since I wrote Linux driver for it and it successfully receives it.
Any idea what could be wrong with my code?

Thanks in advance.

Top