1

現在、ザイリンクス 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) Chris はコメントで、MSI レジスタを PCI 構成空間に実装していることを確認してください。これらのレジスタは BIOS/OS によって書き込まれ、MSI 割り込みのどのアドレスにどの値を書き込むかをハードウェアに指示します。

2) PCIE エンドポイント (pcie_7x?) にこれらのレジスタのアドレスが設定されていることを確認します。割り込みごとに 4 つのレジスタが必要です。coregen に与えられるアドレスは、16 ビットのワード アドレスです。

お役に立てれば。

于 2014-05-23T13:20:01.087 に答える