Hi,
Our system has an AM3894 running Linux (kernel version 2.6.37)
connecting via PCIe (2 lanes at 2.5GT/s) to a Xilinx FPGA end-point. We are not using DMA.
PCIe writes are fine but the reads result in the following unhandled fault :
________________________________________________________________
Unhandled fault: Precise External Abort on non-linefetch (0x1008) at 0xe08c0000
Internal error: : 1008 [#1]
last sysfs file: /sys/class/gpio/export
Modules linked in: arran_fpga pp_mem ds1746p
CPU: 0 Not tainted (2.6.37-rgb4 #7)
PC is at arran_fpga_ioctl+0x5d8/0x85c [arran_fpga]
LR is at 0x0
pc : [<bf00c6f8>] lr : [<00000000>] psr: 80000013
sp : db3e9e20 ip : 00000010 fp : db3e9ef4
r10: df836c00 r9 : db3e8000 r8 : be81ebe8
r7 : 00000003 r6 : be81ebe8 r5 : da92a0c0 r4 : 00000225
r3 : 00000000 r2 : 00000001 r1 : 00000000 r0 : e08c0000
Flags: Nzcv IRQs on FIQs on Mode SVC_32 ISA ARM Segment user
Control: 10c5387d Table: 98a30019 DAC: 00000015
Process pcitest (pid: 363, stack limit = 0xdb3e82e8)
Stack: (0xdb3e9e20 to 0xdb3ea000)
________________________________________________________________
To debug this we wrote a simple test which does word reads with a programmable sleep between reads.If the sleep value is set to zero, the test fails with the above error. If the sleep value is set to 10 ms or greater, the test passes. (We don't have a way yet to reduce the timer below 10 ms).
Upon failure :
1. PCI_UNCERR register returns 0x4000 indicating
Completion timeout error.
2. DEV_STAT_CTRL register returns 0x22810 indicating non-fatal error detected.
We don't know what is wrong and how to proceed.
Please advice.
Thanks
Vishy