Please help if you have any idea.
Brief description of my system and software:
We have intel x86 processor connected with our system via PCIe bus. Our system is visible as bus XX, device YY and function Z from x86. We are using RHEL 6.1 as OS on x86. Our system (basically a PCIe device for x86), supports 32 interrupt sources. Whenever there is any interrupt, an MSI will be passed to x86 local IOAPIC as a unique MSI. So there can be 32 MSIs from my single PCI device. I made a Linux PCI device driver for this device. I have enabled MSI using pci_enable_msi and registered an IRQ accordingly with an ISR.
When MSI is received at x86 PCI device driver (and ISR is called), how do I verify that the IRQ is for which MSI? I thought of using pci_enable_msi_block() but the question remains the same. How do the ISR in PCI device driver knows that it is being called for which MSI?How can I register separate 32 ISRs for my PCI device? Moreover in existing Linux kernel, I don't see any driver using pci_enable_msi_block(). If you have any open source code to understand it's usage, that will be a great help.
Thanks for any response.
Notice: We have upgraded developerWorks Community to the latest version of IBM Connections. For more information, read our upgrade FAQ.
Pinned topic How to map multiple ISRs with a PCI device generating multiple MSIs?
Answered question This question has been answered.
Unanswered question This question has not been answered yet.
Updated on 2012-03-23T08:49:09Z at 2012-03-23T08:49:09Z by hento
SystemAdmin 110000D4XK2364 Posts
Re: How to map multiple ISRs with a PCI device generating multiple MSIs?2011-12-02T16:08:30ZThis is the accepted answer. This is the accepted answer.I don't have a specific answer for your problem, but here are a couple of documents that might help you:
Here is "Chapter 7 - Interrupts and Interrupt Handling" from the Linux Kernel documentation. It's an older document, but the information should still be valid. (Linux tends to maintain its foundations.)
Here also is the MSI-HOWTO.
Finally here is a chapter on Interrupt Handlers from The Linux Kernel Module Programming Guide.
With luck you'll find what you need in there. If not, they might help narrow the questions that you have.
Please post back here if you solve your problem so that others can follow your example.
hento 2700056T3G1 Post
Re: How to map multiple ISRs with a PCI device generating multiple MSIs?2012-03-23T08:49:09ZThis is the accepted answer. This is the accepted answer.
- SystemAdmin 110000D4XK
Have you found an issue to this?
I would appreciaate any advice.