• Resolved

Kernel Panic Using PCIe FireWire on TMS320C6A8168 EVM

Hi Folks,

I am trying to bring up a TI XIO2213A 1394B interface via the PCIe slot on the EVM. I am using TI's XIO2213ZAY reference board for the FireWire card.

I have rebuilt the kernel using the Linux PSP included in the ti-ezsdk_c6a816x-evm_5_00_00_56 (e.g. /psp/linux-2.6.34-psp04.00.00.07) and enabled the new FireWire stack.

The OHCI controller is recognized on the PCIe bus and the driver is loaded. 

If I connect a FW HD to the Firewire bus, the device is recognized, the SBP-2 driver is loaded and the FAT filesystem on the drive is mounted.

If I then do a ls on the filesystem, I get a kernel panic:

 

root@c6a816x-evm:~# ls /media/sda1/

Unhandled fault: Precise External Abort on non-linefetch (0x1008) at 0xca87a080

Internal error: : 1008 [#1]

last sysfs file: /sys/kernel/uevent_seqnum

Modules linked in: bufferclass_ti omaplfb pvrsrvkm TI81xx_hdmi(P) ti81xxfb vpss syslink ipv6

CPU: 0    Tainted: P            (2.6.34 #1)

PC is at at_context_transmit+0x460/0x510

LR is at ___dma_single_cpu_to_dev+0x60/0x70

pc : [<c0200ae8>]    lr : [<c00379d0>]    psr: 60000093

sp : c6bb59e0  ip : c6bb59e0  fp : c6bb5a54

r10: c7011000  r9 : 00000093  r8 : c7011000

r7 : c7011534  r6 : c6ad1014  r5 : ffc61d60  r4 : c6ad106c

r3 : ca87a000  r2 : 00000003  r1 : 86ad106c  r0 : 00000003

Flags: nZCv  IRQs off  FIQs on  Mode SVC_32  ISA ARM  Segment user

Control: 10c5387d  Table: 8682c019  DAC: 00000015

Process ls (pid: 1233, stack limit = 0xc6bb42e8)

The PC where the exception occurs is a register access in the Firewire-OHCI driver drivers/firewire/ohci.c line 1036:

 

    reg_read(ohci, OHCI1394_IntEventSet) & OHCI1394_busReset) {

I asked about this on the 1394linux-devel list, and the first thing recommended was that I update to a newer kernel (2.6.37). I tried to simply build a 2.6.37 kernel from a tag on the omap git tree, but that fails to boot, so obviously, there is more to moving to the newer kernel than simply building from the git tree.
It seems to me that something in the PCIe controller configuration or the kernel's implementation of the PCIe controller driver must be set up incorrectly, as one would expect the basic device register access to be succesful or re-tried. 
I know this board works as I have installed it a desktop machine and it works fine. I have also installed it in a PPC (MPC8377) embedded evm and it worked fine with linux via PCIe.
I definitely need to be able to use FW with the TMS320C6A8168, so any help in attacking this issue would be greatly appreciated, whether it is advice on how to move my system to a newer kernel that may address this issue or advice on how to debug the underlying PCIe issue.
Best regards,
B.J.