PCIe中断路由 [英] PCIe interrupt routing
问题描述
我目前正在xilinx PFGA中实现PCIE端点设备,并且对该中断有一些问题.
I am currently implementing a PCIE endpoint device in xilinx PFGA, and have some problem regards to the interrupt.
驱动程序初始化时,它将中断映射到IRQ 32
when the driver init, it map the interrupt to IRQ 32
[ 1078.938669] alloc irq_desc for 32 on node -1
[ 1078.938670] alloc kstat_irqs on node -1
[ 1078.938675] pci 0000:06:00.0: PCI INT A -> GSI 32 (level, low) -> IRQ 32
但是,当中断触发时,
[ 1134.850064] irq 16: nobody cared (try booting with the "irqpoll" option)
[ 1134.850067] Pid: 0, comm: swapper Tainted: P 2.6.32-5-amd64 #1
[ 1134.850069] Call Trace:
[ 1134.850070] <IRQ> [<ffffffff81095d89>] ? __report_bad_irq+0x30/0x7d
.
.
.
[ 1134.850119] handlers:
[ 1134.850120] [<ffffffffa0e7935e>] (azx_interrupt+0x0/0x11d [snd_hda_intel])
[ 1134.850124] Disabling IRQ #16
irq似乎被路由到另一个引脚IRQ#16.我使用了PCIe msi中断.什么原因可能导致此问题?
The irq seems to be routed to to another pin IRQ #16. And I used the PCIe msi interrupt. What could cause this problem?
推荐答案
我遇到了类似的问题.
1)克里斯在评论中说,确保在PCI配置空间中实现MSI寄存器.这些寄存器由BIOS/OS写入,以告知硬件将哪个值写入MSI中断的哪个地址.
1) Chris said in his comment, make sure you implement the MSI registers in PCI configuration space. These registers are written by the BIOS/OS to tell the hardware what value to write to which address for the MSI interrupt.
2)确保PCIE端点(pcie_7x?)已配置了那些寄存器的地址.每个中断需要4个寄存器.给coregen的地址是一个16位的字地址.
2) Make sure that the PCIE endpoint (pcie_7x?) has the address of those registers configured. 4 registers are required per interrupt. The address given to coregen is a 16-bit word address.
希望这会有所帮助.
这篇关于PCIe中断路由的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!