cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
feka
Observer
Observer
6,295 Views
Registered: ‎02-12-2013

PCI Express SRIOV Virtual functions MSI unexpected behavour

Hello

 

I'm trying to send msi from the kcu105 board using Xilinx integrated block for PCIe and receive unexpected fail on Configuration Interrupt Controller Interface.

 

I configured integrated block with 2 PFs. For each PF I configured 2 VFs. I set 32 MSI vectors for each of

PFs and VFs. Than I run kernel module on my PC, where the board installed. My kernel module enables sriov capability for each

PF.

 

At last I tried to send MSI with zero number to each function number and when counter gets VF0 I receive cfg_interrupt_msi_fail

Here is my chipscope output:

VF0-3 has MSI capability ON and mmenable is set to 3

MSI to PF0 and PF1 sent correctly

I do not use pending.

 

pcie_msi.png

0 Kudos
1 Reply
feka
Observer
Observer
6,280 Views
Registered: ‎02-12-2013

I think I found the solution. The problem is that Xilinx pg156-ultrascale-pcie-gen3.pdf not corresponds to Xilinx pcie-gen3 integrated block. When I open generated source code in Vivado I found that actually Integrated block supports 4 PFs and 8 VFs. 

So if you want to send MSI to VF0 send it with cfg_interrupt_msi_function_number == 4.

 

Conclusion: PF0-1 --> cfg_interrupt_msi_function_number 0-1

                    VF0-5 --> cfg_interrupt_msi_function_number 4-9