I have discovered a curious issue on the iMX6SX with the Linux 4.14 code base using PCIe on the A9 while the M4 processor is booted.
I have found that I can build a working version of Linux 4.14.78 which will boot reliably, and allows me to use the PCI bus over PCIe.
However, if I load and boot the M4 processor (e.g. I build and load one of the M4 processor example programs) from uboot 2018-03, and then boot the exact same Linux, it hangs when trying to configure the PCIe device. It freezes on a read instruction when it first tries to access the PCI configuration space. It appears to be something to do with the Resource Domain Controller (RDC).
Solved! Go to Solution.
I have posted this question, so that I can put the answer up, as I have in fact found the solution to my own issue.
The potential RDC issue caused by booting the M4 then booting Linux seems to be resolved by putting PCIe into uBoot.
We had not put PCIe into our uboot, as our uboot does not need to do anything with out PCIe device and does not have drivers for it anyway. Therefore in out uboot build config we had not set:
CONFIG_PCI
CONFIG_CMD_PCI
CONFIG_PCIE_IMX
With Linux on its own, this does not cause an issue. However, as soon as you boot the M4, there is something happening with the RDC that means that it blocks access to the PCIe for the A9 Linux.
The solution is to ensure you have PCIe built into your uboot image (with the 3 above config options).
Now when you boot the M4 from uboot, the PCIe is not blocked, so it means that Linux boots successfully, and configures the PCIe correctly.
Also, I don't know how related this is to the following issue:
I have posted this question, so that I can put the answer up, as I have in fact found the solution to my own issue.
The potential RDC issue caused by booting the M4 then booting Linux seems to be resolved by putting PCIe into uBoot.
We had not put PCIe into our uboot, as our uboot does not need to do anything with out PCIe device and does not have drivers for it anyway. Therefore in out uboot build config we had not set:
CONFIG_PCI
CONFIG_CMD_PCI
CONFIG_PCIE_IMX
With Linux on its own, this does not cause an issue. However, as soon as you boot the M4, there is something happening with the RDC that means that it blocks access to the PCIe for the A9 Linux.
The solution is to ensure you have PCIe built into your uboot image (with the 3 above config options).
Now when you boot the M4 from uboot, the PCIe is not blocked, so it means that Linux boots successfully, and configures the PCIe correctly.