Hi,
We have a DM8148 card that we are using as an endpoint on a custom PCIe board.
We have been able to successfully load it via PCIe as an EP with a PC using some of the examples from the TI PCIe user guide and wiki pages as a starting point. We have been able to perform a fair amount of communication via the PCIe from a host PC to the DM8148.
However, on occasion during boot our DM8148 PCIe endpoint driver throws a fault when we try to read the GPR0 register in the PCIe peripheral core. The read is performed using an ioread32() on the GPR0 address that has been mapped using ioremap_noncached(). The fault generated by the kernel is:
Reading from 0xD7068070
Unhandled fault: external abort on non-linefetch (0x1008) at 0xd7068070
Internal error: : 1008 [#1]
When the fault occurs, it is always on the same ioread32() call. When it does not happen, our communications code seems to work without error. We don't always see this error, it is very intermittent. Is there any suggestion as to how to isolate / debug the problem here? I have seen some posts mentioning setting the read_rq() maximum size needing to be set to 256, but it's not clear how modifying any PCIe setting should fix this fault which is caused by reading a register on the local DM8148 peripheral bus....
Thanks.
-Mike