PCI Interrupt Not Assigned


The legacy interrupt assignment for a PCI interface is receiving interrupt 0.

We are evaluating the Xilinx Zynq UltraScale+ MPSoC ZCU102 Evaluation Kit. We have a PMC interface that is on a PCI-e carrier inserted into the PCI-e slot on the board.

When the driver is loaded the interrupt for the board is assigned interrupt 0 from the OS (Linux 16.0.4). Interrupt 0 is clearly not correct.

The device tree for PCI should be assigning interrupts. We do see the misc interrupt assigned, but the intx interrupt is not being reported, or rather is returning 0 from the OS.

How can we determine why the interrupt is not being reported? What changes can we make to determine where the problem lies?

Here is the device tree entry for 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>;
        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 {
                #address-cells = <0x00000000>;
                #interrupt-cells = <0x00000001>;
                linux,phandle = <0x00000024>;
                phandle = <0x00000024>;
asked on Stack Overflow May 4, 2018 by Bill Door

0 Answers

Nobody has answered this question yet.

User contributions licensed under CC BY-SA 3.0