I'm wondering if I could receive any guidance or documentation for MSI-X interrupt generation. For example, could I receive more clarification on the Vector Control field defined in the MSI-X table? What does the concept of masking refer to and how do I detect if it is masked? Additionally, how do I pass a message to the interrupt service routine of the host SW? There is a message field in the MSI-X table, can I put the message I want the software to receive when servicing the ISR? If not, what is the standard way for doing this?
You may refer to the following link, section 8.1.3 (or page 115) for some of the detailed info regarding the implement MSI-X interrupts.
If further support is needed in this thread, please post a response within 15 days. After 15 days, this thread will be transitioned to community support. The community users will be able to help you with your follow-up questions.
When trying to use MSI-X interrupts on a virtual function, the host crashes. The host crashes when trying to use request_irq(). When using MSI-X interrupts in virtual functions can you use any BAR entry for the MSI-X table ? Does this memory region also need to be readable by the host machine or only write able ? Setting up the MSI-X table from the host PC doesn't seem to be an issue with the physical function. The user guide for this says multi-function variants can only access MSI-X table from BAR 4. Although, I am not sure if this is a mistake because the mega function wizard does not restrict me from setting the BAR to 0.