我目前在xilinx PFGA中实现了一个PCIE端点设备,并且对中断有一些问题。
当驱动程序初始化时,它将中断映射到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中断。 什么可能导致这个问题?
我想你可能使用ML555板。 这是一个关于ML555的PCIE驱动程序的网站。 幸好它还活着。 https://asim.csail.mit.edu/redmine/projects/leap-platforms/repository/show/trunk/drivers/linux/platforms/htg-pcie-virtex5/src我也遇到了一些关于pcie设备驱动程序的障碍。 所以我们可以交换一下。
我遇到了类似的问题。
1)Chris在评论中说,确保在PCI配置空间中实现MSI寄存器。 这些寄存器由BIOS / OS写入,以告知硬件写入MSI中断的哪个地址的值。
2)确保PCIE端点(pcie_7x?)具有配置的那些寄存器的地址。 每个中断都需要4个寄存器。 给coregen的地址是一个16位的字地址。
希望这可以帮助。