From: Murugesan on
Hi all,

I am working with a PCI based WDF function driver. I've created an
interrupt object using wdfinterruptcreate() & initialized the
WDF_INTERRUPT_CONFIG with ISR handler, DPC routine. From the WDF
documentation, i found that the framework takes care of adding interrupt
resource information when the device moves into D0 state. Now the problem is,
after doing all this initialization my interrupt handler doesn't gets invoked
when my hardware raises an interrupt after the device moves into D0 state
eventhough all the interrupts has been enabled. I could notice that the
framework has added the interrupt resource information to the interrupt
object, by using WdfInterruptGetInfo() in the context of SelfManagedIoInit
callback. Am I missing anything related with the interrupt handling?

Thanks,
Murugesan
From: eagersh on
On Nov 10, 11:53 am, Murugesan <Muruge...(a)discussions.microsoft.com>
wrote:
> Hi all,
>
>  I am working with a PCI based WDF function driver. I've created an
> interrupt object using wdfinterruptcreate() & initialized the
> WDF_INTERRUPT_CONFIG with ISR handler, DPC routine. From the WDF
> documentation, i found that the framework takes care of adding interrupt
> resource information when the device moves into D0 state. Now the problem is,
> after doing all this initialization my interrupt handler doesn't gets invoked
> when my hardware raises an interrupt after the device moves into D0 state
> eventhough all the interrupts has been enabled. I could notice that the
> framework has added the interrupt resource information to the interrupt
> object, by using WdfInterruptGetInfo() in the context of SelfManagedIoInit
> callback. Am I missing anything related with the interrupt handling?
>
> Thanks,
> Murugesan

Are you sure that your hardware generate interrupt? You should check
it by using PCI Bus analyzer.
You could also check if your device get PCI resources, including
Interrupt, by using WinDbg command !pci.

Igor Sharovar
From: Doron Holan [MSFT] on
are your programming your hw to generate the interrupt and route it
correctly? are you programming your hw correctly in D0Entry?

d

--

This posting is provided "AS IS" with no warranties, and confers no rights.


"Murugesan" <Murugesan(a)discussions.microsoft.com> wrote in message
news:70DE1BF5-1409-408C-B30F-C2E527AD636C(a)microsoft.com...
> Hi all,
>
> I am working with a PCI based WDF function driver. I've created an
> interrupt object using wdfinterruptcreate() & initialized the
> WDF_INTERRUPT_CONFIG with ISR handler, DPC routine. From the WDF
> documentation, i found that the framework takes care of adding interrupt
> resource information when the device moves into D0 state. Now the problem
> is,
> after doing all this initialization my interrupt handler doesn't gets
> invoked
> when my hardware raises an interrupt after the device moves into D0 state
> eventhough all the interrupts has been enabled. I could notice that the
> framework has added the interrupt resource information to the interrupt
> object, by using WdfInterruptGetInfo() in the context of SelfManagedIoInit
> callback. Am I missing anything related with the interrupt handling?
>
> Thanks,
> Murugesan

From: Murugesan on
Thanks for your inputs. I've programmed my h/w correctly. The only variance
is like,
my h/w initialization & enabling interrupts has been done in the context of
SelfManagedIoInit() callback, which is called after D0entry callback. Also i
am sure that the framework retreived the interrupt resource
information(mainly IRQ) by checking with WdfInterruptGetInfo().

Murugesan

"Doron Holan [MSFT]" wrote:

> are your programming your hw to generate the interrupt and route it
> correctly? are you programming your hw correctly in D0Entry?
>
> d
>
> --
>
> This posting is provided "AS IS" with no warranties, and confers no rights.
>
>
> "Murugesan" <Murugesan(a)discussions.microsoft.com> wrote in message
> news:70DE1BF5-1409-408C-B30F-C2E527AD636C(a)microsoft.com...
> > Hi all,
> >
> > I am working with a PCI based WDF function driver. I've created an
> > interrupt object using wdfinterruptcreate() & initialized the
> > WDF_INTERRUPT_CONFIG with ISR handler, DPC routine. From the WDF
> > documentation, i found that the framework takes care of adding interrupt
> > resource information when the device moves into D0 state. Now the problem
> > is,
> > after doing all this initialization my interrupt handler doesn't gets
> > invoked
> > when my hardware raises an interrupt after the device moves into D0 state
> > eventhough all the interrupts has been enabled. I could notice that the
> > framework has added the interrupt resource information to the interrupt
> > object, by using WdfInterruptGetInfo() in the context of SelfManagedIoInit
> > callback. Am I missing anything related with the interrupt handling?
> >
> > Thanks,
> > Murugesan
>
> .
>
From: Doron Holan [MSFT] on
you should use EvtInterruptEnable and EvtDeviceD0EntryPostInterruptsEnabled
for the work you are doing in self managed io

d

--

This posting is provided "AS IS" with no warranties, and confers no rights.


"Murugesan" <Murugesan(a)discussions.microsoft.com> wrote in message
news:7FE38A6D-FFDE-4D59-8537-ECB31B99A319(a)microsoft.com...
> Thanks for your inputs. I've programmed my h/w correctly. The only
> variance
> is like,
> my h/w initialization & enabling interrupts has been done in the context
> of
> SelfManagedIoInit() callback, which is called after D0entry callback. Also
> i
> am sure that the framework retreived the interrupt resource
> information(mainly IRQ) by checking with WdfInterruptGetInfo().
>
> Murugesan
>
> "Doron Holan [MSFT]" wrote:
>
>> are your programming your hw to generate the interrupt and route it
>> correctly? are you programming your hw correctly in D0Entry?
>>
>> d
>>
>> --
>>
>> This posting is provided "AS IS" with no warranties, and confers no
>> rights.
>>
>>
>> "Murugesan" <Murugesan(a)discussions.microsoft.com> wrote in message
>> news:70DE1BF5-1409-408C-B30F-C2E527AD636C(a)microsoft.com...
>> > Hi all,
>> >
>> > I am working with a PCI based WDF function driver. I've created an
>> > interrupt object using wdfinterruptcreate() & initialized the
>> > WDF_INTERRUPT_CONFIG with ISR handler, DPC routine. From the WDF
>> > documentation, i found that the framework takes care of adding
>> > interrupt
>> > resource information when the device moves into D0 state. Now the
>> > problem
>> > is,
>> > after doing all this initialization my interrupt handler doesn't gets
>> > invoked
>> > when my hardware raises an interrupt after the device moves into D0
>> > state
>> > eventhough all the interrupts has been enabled. I could notice that the
>> > framework has added the interrupt resource information to the interrupt
>> > object, by using WdfInterruptGetInfo() in the context of
>> > SelfManagedIoInit
>> > callback. Am I missing anything related with the interrupt handling?
>> >
>> > Thanks,
>> > Murugesan
>>
>> .
>>