Forum Discussion
Implementing MSI-X in Agilex 7 Rtile MCDAM PCIe based design
I am using Agilex 7 - AGIB027R29A1E2VC FPGA. On Rtile I am using Multi Channel DMA FPGA IP for PCI
Express - Data Movers Only. https://www.intel.com/content/www/us/en/docs/programmable/683821/25-1-1/data-mover-only.html My design currently performs H2D and D2H DMAs as I need to.
Now I want to send MSI-X interrupt after certain DMA completion and thats where I need help. Specifically "MSI-X Enable" and "MSI-X function mask" related functionality. Other Parts related to implementing MSI-X is clear to me. "MSI-X Enable" and "MSI-X function mask" both can be written by host side driver and the interrupt controller inside PCIe ep device is supposed behave accordingly.
Currently I am struggling to figure out how can I get a copy of CFG writes to MSI-X capability structure when CFG WRs are targeting "MSI-X Enable" and "MSI-X function mask"? If I get a copy of such CFG writes than my application layer logic can keep track of latest value written and update MSI-X behavior as intended.
https://www.intel.com/content/www/us/en/docs/programmable/683501/25-1-1/msi-x.html mentions that "The R-Tile IP for PCIe provides a Configuration Intercept Interface. User soft logic can monitor this interface to get MSI-X Enable and MSI-X function mask related information."
https://www.intel.com/content/www/us/en/docs/programmable/683501/25-1-1/configuration-intercept-interface.html mentions that "The Configuration Intercept Interface (CII) allows the application logic to detect the occurrence of a Configuration (CFG) request on the link and to modify its behavior."
is there any example on how CII interface can be used to monitor MSI-X capability structure accesses?
https://community.intel.com/t5/FPGA-Wiki/Implementing-MSI-X-for-PCI-Express-in-Altera-FPGA-Devices/ta-p/735678 this link appears to be broken
furthermore, table 71 on https://www.intel.com/content/www/us/en/docs/programmable/683501/25-1-1/configuration-intercept-interface.html provides cii interface signal list and its details - after reviewing them I have following questions.
- pX_cii_wr_o Output Indicates that cii_dout_p0/1 is valid. This signal is asserted only for a configuration write request.
- there is no mention of "pX_cii_rd_o" signal, can pX_cii_wr_o signal be used to determine read request? if this signal is at logic 0 , does it mean that this is CFG read request?
- pX_cii_addr_o[9:0] Output The double-word register address in the received TLP header on the CII.
- is this the address associated with CFW write? how do i know Config space offset at which MSI-X capability is located? So I can compare pX_cii_addr_o along with pX_cii_hdr_first_be_o to check if the CFG access to targeting "MSI-X Enable" or"MSI-X function mask" or not.
- how do I use CII interface so it ignores all offsets other than MSI-X capability structure related
4 Replies
- AnonymousNot applicable
Hi,
https://community.intel.com/t5/FPGA-Wiki/Implementing-MSI-X-for-PCI-Express-in-Altera-FPGA-Devices/ta-p/735678 this link appears to be broken
>> We are having our page migration from Intel to Altera, those link is in middle of fixing.
>> Please accept my apology for inconvenience cause.
is there any example on how CII interface can be used to monitor MSI-X capability structure accesses?
>> at the moment we do not have any well tested design to ensure it success.
https://www.intel.com/content/www/us/en/docs/programmable/683501/25-1-1/configuration-intercept-interface.html mentions that "The Configuration Intercept Interface (CII) allows the application logic to detect the occurrence of a Configuration (CFG) request on the link and to modify its behavior."
>> Those function is targeted Avalon Streaming.
>> Since you are using MCDMA , I would suggest to check at AXI MCDMA 5.3.5. Configuration Intercept Interface (CII)
Regards,
Wincent_Altera- UserID4331231
Occasional Contributor
Anonymous I am attaching screenshot above. When I select Enable CII interface, it adds p0_user_cii port to my dut module, and the signals shown in signal and interface tab shows interface which is matching with what is described on https://www.intel.com/content/www/us/en/docs/programmable/683501/25-1-1/configuration-intercept-interface.html . The list of signals does not match with information provided on https://www.intel.com/content/www/us/en/docs/programmable/817911/25-1-1/configuration-intercept-interface-cii.html
At this point seeing this p0_user_cii port at dut, I am understating that i need to write a custom RTL block that interfaces with this port on dut and intercept transactions going to MSI-X capability offset in Config space but i dont know what is the address at which MSI-X capability is located in PCIe config space.
As i mentioned in original post table 71 on https://www.intel.com/content/www/us/en/docs/programmable/683501/25-1-1/configuration-intercept-inte... provides cii interface signal list and its details - after reviewing them I have following questions.
- pX_cii_wr_o Output Indicates that cii_dout_p0/1 is valid. This signal is asserted only for a configuration write request.
- there is no mention of "pX_cii_rd_o" signal, can pX_cii_wr_o signal be used to determine read request? if this signal is at logic 0 , does it mean that this is CFG read request?
- pX_cii_addr_o[9:0] Output The double-word register address in the received TLP header on the CII.
- is this the address associated with CFW write? how do i know Config space offset at which MSI-X capability is located? So I can compare pX_cii_addr_o along with pX_cii_hdr_first_be_o to check if the CFG access to targeting "MSI-X Enable" or"MSI-X function mask" or not.
- how do I use CII interface so it ignores all offsets other than MSI-X capability structure related
- Wincent_Altera
Regular Contributor
Hi ,
Please allow me to have sometime to check on your question.
Will get back to you soon.
Regards,
Wincent
- pX_cii_wr_o Output Indicates that cii_dout_p0/1 is valid. This signal is asserted only for a configuration write request.