Showing results for 
Show  only  | Search instead for 
Did you mean: 
Registered: ‎11-20-2012

How to genrate MSI interrupt to host from a PS-PCIE endpoint device

Hi, i'm using the zynqmpsoc's PS-PCIE as an ep device. i developed a linux driver on the host side.

On the ep side i ran the ep enable example standalone program.

My drvier on the host side can now read and write bar2 mapped memory on the ep side. it can also configure the PCIE DMA register through the bar0. 

In my vivado design, i already enable the legcy inta and msi with 4 vector. 

In my driver, i use fucntion pci_alloc_irq_vectors(pdev, 1, 1, PCI_IRQ_ALL_TYPES); to get a irq. and bind the irq to a callback function.

after that i enable the interrupt mask in the  DMA_CHANNEL_PCIE_INTERRUPT_CONTROL register. Then i write the DMA_CHANNEL_PCIE_INTERRUPT_ASSERTregister to manully generate a dma interrupt for the pcie. and i checked the DMA_CHANNEL_PCIE_INTERRUPT_STATUS register and the software_int has been asserted.

But on the host size the MSI interrupt is never trigered!(i use cat /proc/interrupts to check this)


My question is:

Does the DMA/software asserted interrupt route to the host as an MSI interrupt automatically? or should i configure somewhere else?

Can anyone tell me where did i miss? 

Tags (1)
0 Kudos
1 Reply
Xilinx Employee
Xilinx Employee
Registered: ‎10-09-2019


AR72702 Should be useful for setting up interrupts.

Let me know if this helps!

0 Kudos