I have generated MSI interrupts and also IPI interrupts, and it’s very easy. I had to do it because the initial version of my chip came with the interrupt line disconnected, and I had to overcome that limitation to carry on testing my driver.
This comes with the usual caveats, eh ? You may have to guard yourself against the possibility that the hardware may behave differently with some processor or anothe.
First you download the Intel 64 and IA32 Architectures Software Developer’s Manual, Volume 3A (System Programming Guide, Part 1). Now go to Section 8 which is about the APIC. Subsection 8.11 tells you how to generate MSI interrupts. Subsection 8.6 tells you how to generate IPI interrupts.
It’s as simple as poking the right APIC location, and better, you specify which vector you want that interrupt to be dispatched to: you can get the interrupt delivered directly to your ISR. However, I strongly suggest that when you do it you have a PCI Express VMetro between your board and the bus, so that you can actually look at what’s going on!
Hope this helps, if not chuck it.
Alberto.
----- Original Message -----
From: Jaursch, Bill
To: Windows System Software Devs Interest List
Sent: Friday, August 10, 2007 3:55 PM
Subject: [ntdev] PCI Express MSI support under XP?
Even though PCI Express is not fully supported under XP (up to PCI 2.3), I was
wondering if there is some other method (third party, etc) to get PCI
Express support under Windows XP?
In particular, I need full Message Signal Interrupt (MSI) protocol support.
Thanks!
NTDEV is sponsored by OSR
For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars
To unsubscribe, visit the List Server section of OSR Online at http://www.osronline.com/page.cfm?name=ListServer