Прерывание PCI не назначено
Устаревшее назначение прерываний для интерфейса PCI получает прерывание 0.
Мы оцениваем оценочный комплект Xilinx Zynq UltraScale+ MPSoC ZCU102. У нас есть интерфейс PMC, который находится на носителе PCI-e, вставленном в слот PCI-e на плате.
Когда драйвер загружен, прерыванию для платы назначается прерывание 0 от ОС (Linux 16.0.4). Прерывание 0 явно не правильно.
Дерево устройств для PCI должно назначать прерывания. Мы видим misc
прерывание назначено, но intx
о прерывании не сообщается, или, скорее, он возвращает 0 из ОС.
Как мы можем определить, почему прерывание не сообщается? Какие изменения мы можем внести, чтобы определить, в чем заключается проблема?
Вот запись дерева устройств для pcie -
ZynqMP> fdt print /amba/pcie
pcie@fd0e0000 {
compatible = "xlnx,nwl-pcie-2.11";
status = "okay";
#address-cells = <0x00000003>;
#size-cells = <0x00000002>;
#interrupt-cells = <0x00000001>;
msi-controller;
device_type = "pci";
interrupt-parent = <0x00000004>;
interrupts = <0x00000000 0x00000076 0x00000004 0x00000000 0x00000075 0x00000004 0x00000000 0x00000074 0x00000004 0x00000000 0x00000073 0x00000004 0x00000000 0x00000072 0x00000004>;
interrupt-names = "misc", "dummy", "intx", "msi1", "msi0";
msi-parent = <0x00000023>;
reg = <0x00000000 0xfd0e0000 0x00000000 0x00001000 0x00000000 0xfd480000 0x00000000 0x00001000 0x00000080 0x00000000 0x00000000 0x01000000>;
reg-names = "breg", "pcireg", "cfg";
ranges = <0x02000000 0x00000000 0xe0000000 0x00000000 0xe0000000 0x00000000 0x10000000 0x43000000 0x00000006 0x00000000 0x00000006 0x00000000 0x00000002 0x00000000>;
interrupt-map-mask = <0x00000000 0x00000000 0x00000000 0x00000007>;
bus-range = <0x00000000 0x000000ff>;
interrupt-map = * 0x000000007ff8495c [0x00000060];
power-domains = <0x00000025>;
clocks = <0x00000003 0x00000017>;
xlnx,pcie-mode = "Root Port";
linux,phandle = <0x00000023>;
phandle = <0x00000023>;
legacy-interrupt-controller {
interrupt-controller;
#address-cells = <0x00000000>;
#interrupt-cells = <0x00000001>;
linux,phandle = <0x00000024>;
phandle = <0x00000024>;
};
};