The P2020 CPU is running in SMP mode based on Linux 2.6.35 Kernel. The PCIe is configured x2 , 256 bytes payload and relaxing ordering for our PCIe deice. It is good when MSI is disabled. But CPU will stuck after running for a while if MSI is enabled. It is like a spin_lock in the "fsl_msi_cascade " function according to debug info. Below Linux configuration is enabled.
CONFIG_IRQ_PER_CPU=y
CONFIG_IRQ_ALL_CPUS=y
CONFIG_PCI_MSI=y
This may or may not be related to your problem, but CONFIG_IRQ_ALL_CPUS is inappropriate for the Freescale MPIC, and you're using a kernel that is too old to realize that.
In general, I highly recommend trying with a current kernel. There have been significant changes to the MSI code since 2.6.35, including changing the flow so that fsl_msi_cascade() no longer tries to acquire desc->lock.
Hi Scott,
I got an errata from chip vendor . PCIe MSI can not be enabled on this PCI device because of some problems. This device can use INTx only. Yes, I had checked current Linux Kernel about MSI. It just like your description.
Thanks,
JN