AR# 69066

|

Zynq UltraScale+ MPSoC Controller for PCI Express (Vivado 2017.1) - Root Port Error: hwirq 0x4 is too large for dummy

描述

When using a multifunction device that advertises Legacy INT-D, the kernel gives the following error message:

[    2.441684] error: hwirq 0x4 is too large for dummy

The current kernel infrastructure imposes a hwirq range that starts from zero.

As a result, when the driver requests for four IRQs, the subsystem thinks that the maximum valid IRQ number is 0x3 (0x0 to 0x3). 

However for PCI, the legacy interrupt range is from 0x1 to 0x4. 

As a result of this difference, the registering of IRQ number 0x4 fails, resulting in the above error message.

解决方案

This is a known issue and requires a fix in the Kernel PCI subsystem. 

Please refer to the link below for more details on this issue:

https://patchwork.kernel.org/patch/9305303/

As a work-around, please follow the instructions below to install the patch attached to this answer record.

git clone git://github.com/Xilinx/linux-xlnx.git
cd linux-xlnx
git checkout xilinx-v2017.1.01
git am0001-PCI-Xilinx-NWL-PCIe-Fix-Error-for-multi-function-dev.patch

The patch makes the following change in drivers/pci/host/pcie-xilinx-nwl.c

Original Version:

pcie->legacy_irq_domain = irq_domain_add_linear(legacy_intc_node,
                                                        INTX_NUM,
                                                        &legacy_domain_ops,
                                                        pcie);

Updated Version:

pcie->legacy_irq_domain = irq_domain_add_linear(legacy_intc_node,
                                                        INTX_NUM + 1,
                                                        &legacy_domain_ops,
                                                        pcie);

Revision History:

11/22/2017 - Initial Release

附件

文件名 文件大小 File Type
0001-PCI-Xilinx-NWL-PCIe-Fix-Error-for-multi-function-dev.patch 1 KB PATCH
AR# 69066
日期 11/22/2017
状态 Active
Type 已知问题
IP
People Also Viewed