Маршрутизация прерываний PCIe

В настоящее время я реализую оконечное устройство PCIE в xilinx PFGA, и у меня есть некоторые проблемы с прерыванием.

когда драйвер инициализируется, он отображает прерывание на 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. Что могло вызвать эту проблему?


person Dong    schedule 08.01.2013    source источник
comment
Можете ли вы добавить регистры конфигурации PCI для этого устройства? В частности, регистры вывода / линии int.   -  person Chris Desjardins    schedule 08.01.2013
comment
Какую FPGA вы используете? Это вопрос к системе MicroBlaze или это вопрос Zynq? Или FPGA действует как мост PCIe для внешнего процессора? Будет полезно, если вы предоставите нам немного больше данных о том, что у вас есть, чтобы мы могли понять, в чем может быть проблема.   -  person FarhadA    schedule 09.01.2013
comment
Для ответа на вопрос требуются дополнительные сведения о вашей конечной точке PCIE и драйвере ядра.   -  person Jamey Hicks    schedule 23.05.2014


Ответы (2)


Я думаю, вы, возможно, используете плату ML555. Это веб-сайт о драйвере PCIE для ML555. К счастью, он еще жив. https://asim.csail.mit.edu/redmine/projects/leap-platforms/repository/show/trunk/drivers/linux/platforms/htg-pcie-virtex5/src Я также сталкиваюсь с некоторыми препятствиями по поводу драйвер устройства pcie. Так что мы можем обменяться информацией об этом.

person bg2bkk    schedule 28.05.2013

У меня были похожие проблемы.

1) Крис сказал в своем комментарии, убедитесь, что вы реализуете регистры MSI в пространстве конфигурации PCI. Эти регистры записываются BIOS / OS, чтобы сообщить оборудованию, какое значение записывать по какому адресу для прерывания MSI.

2) Убедитесь, что на конечной точке PCIE (pcie_7x?) Настроены адреса этих регистров. На прерывание требуется 4 регистра. Адрес, предоставленный coregen, представляет собой адрес 16-битного слова.

Надеюсь это поможет.

person Jamey Hicks    schedule 23.05.2014