Topic
2 replies Latest Post - ‏2012-03-23T08:49:09Z by hento
bhavinpatel
bhavinpatel
1 Post
ACCEPTED ANSWER

Pinned topic How to map multiple ISRs with a PCI device generating multiple MSIs?

‏2011-11-27T17:38:23Z |
Hello,

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.

Question:
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.

Regards,
Bhavin
Updated on 2012-03-23T08:49:09Z at 2012-03-23T08:49:09Z by hento
  • SystemAdmin
    SystemAdmin
    2364 Posts
    ACCEPTED ANSWER

    Re: How to map multiple ISRs with a PCI device generating multiple MSIs?

    ‏2011-12-02T16:08:30Z  in response to bhavinpatel
    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.

    Cheers!
    Chris Walden
    • hento
      hento
      1 Post
      ACCEPTED ANSWER

      Re: How to map multiple ISRs with a PCI device generating multiple MSIs?

      ‏2012-03-23T08:49:09Z  in response to SystemAdmin
      Hi Please I am facing the same challenge.

      Have you found an issue to this?

      I would appreciaate any advice.

      Regards