Bug 100051

Summary: MSI interrupt not working in pci-imx6.c if PCIe switch is attached
Product: Drivers Reporter: dave.mueller
Component: PCIAssignee: drivers_pci (drivers_pci)
Status: NEW ---    
Severity: normal CC: szg00000
Priority: P1    
Hardware: ARM   
OS: Linux   
Kernel Version: 4.0 Subsystem:
Regression: No Bisected commit-id:
Attachments: Proposed fix for IMX6 MSI interrupt problem

Description dave.mueller 2015-06-17 15:05:16 UTC
Created attachment 180181 [details]
Proposed fix for IMX6 MSI interrupt problem

I have an i.MX6Q based custom board with an external PCIe NIC running
Linux kernel 4.0

As long as the NIC is connected directly to the i.MX6 PCIe host,
everything is fine.

But if I insert an additional PCIe switch (PEX8603) between the host and
the NIC, MSI interrupt are not working any longer.

By try and error, I figured out that the MSI_ADDR_LO and MSI_ADDR_HI register get overwritten.

The attached patch seems to fix the problem by calling the MSI init code later in the initialization process.