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.
This topic has been locked.
2 replies Latest Post - 2012-03-23T08:49:09Z by hento
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 PostsACCEPTED ANSWER
Re: How to map multiple ISRs with a PCI device generating multiple MSIs?2011-12-02T16:08:30Z in response to bhavinpatelI 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.