1

我目前正在 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 中断。什么可能导致这个问题?

4

2 回答 2

1

我想你可能使用 ML555 板。这是一个关于 ML555 上的 PCIE 驱动程序的网站。幸好它还活着。 https://asim.csail.mit.edu/redmine/projects/leap-platforms/repository/show/trunk/drivers/linux/platforms/htg-pcie-virtex5/src 我也遇到了一些关于pcie设备驱动的障碍。所以我们可以交流一下。

于 2013-05-28T16:13:42.737 回答
1

我遇到过类似的问题。

1)克里斯在他的评论中说,确保你在 PCI 配置空间中实现 MSI 寄存器。这些寄存器由 BIOS/OS 写入,以告知硬件要写入 MSI 中断的哪个地址的值。

2) 确保 PCIE 端点 (pcie_7x?) 配置了这些寄存器的地址。每个中断需要 4 个寄存器。给 coregen 的地址是一个 16 位的字地址。

希望这可以帮助。

于 2014-05-23T13:20:01.087 回答