This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMS320C6678: TMDSEVM6678 with TMDXEVMPCI, ti667x_ep_init_bar errors

Part Number: TMS320C6678
Other Parts Discussed in Thread: TMDSEVM6678, TMDXEVMPCI

Team,

A customer of mine is using TMDSEVM6678 with TMDXEVMPCI. HW setup has been done according to https://processors.wiki.ti.com/index.php/Desktop_Linux_SDK_Hardware_setup_guide

Lspci shows the card. Dmesg also shows it. Get_devices_info.sh fails with the following log. They are currently using this on CentOS 7. Do you know if there are some differences with CentOS 7 and Ubuntu 12.04, which could explain this?

 

[  401.681424] cmem_dev: loading out-of-tree module taints kernel.
[  401.681564] cmem_dev: module verification failed: signature and/or required key missing - tainting kernel
[  401.682218] cmem: Major 241 Minor 0 assigned
[  401.683516] cmem cmem: Added device to the sys file system
[  401.683531] ti6678_pcie_ep: Found TI667x PCIe EP @0xffff9cba3f444000
[root@localhost scripts]# ./get_devices_info.sh
pciedrv: Error in ti667x_ep_init_bar, ib trans num 0!, ret = -2
pciedrv: Found: IB_BAR = FFFFFFFF, IB_START_LO = FFFFFFFF, IB_START_HI = FFFFFFFF
pciedrv: Expected: IB_BAR = 00000001, IB_START_LO = D1400000, IB_START_HI = 00000000.
pciedrv: Error in ti667x_ep_setup_bar, ib trans num 0!, ret = -1
pciedrv: Found: IB_BAR = FFFFFFFF, IB_OFFSET = FFFFFFFF.
pciedrv: Expected: IB_BAR = 00000001, IB_OFFSET = 10800000.
pciedrv: Error in ti667x_ep_init_bar, ib trans num 2!, ret = -2
pciedrv: Found: IB_BAR = FFFFFFFF, IB_START_LO = FFFFFFFF, IB_START_HI = FFFFFFFF
pciedrv: Expected: IB_BAR = 00000003, IB_START_LO = D0000000, IB_START_HI = 00000000.
pciedrv: Error in ti667x_ep_setup_bar, ib trans num 2!, ret = -1
pciedrv: Found: IB_BAR = FFFFFFFF, IB_OFFSET = FFFFFFFF.
pciedrv: Expected: IB_BAR = 00000003, IB_OFFSET = 80000000.
pciedrv: Error in ti667x_ep_init_bar, ib trans num 3!, ret = -2
pciedrv: Found: IB_BAR = FFFFFFFF, IB_START_LO = FFFFFFFF, IB_START_HI = FFFFFFFF
pciedrv: Expected: IB_BAR = 00000004, IB_START_LO = D1490000, IB_START_HI = 00000000.
pciedrv: Error in ti667x_ep_init_bar, ib trans num 1!, ret = -2
pciedrv: Found: IB_BAR = FFFFFFFF, IB_START_LO = FFFFFFFF, IB_START_HI = FFFFFFFF
pciedrv: Expected: IB_BAR = 00000002, IB_START_LO = D1000000, IB_START_HI = 00000000.
pciedrv: Error in ti667x_ep_setup_bar, ib trans num 1!, ret = -1
pciedrv: Found: IB_BAR = FFFFFFFF, IB_OFFSET = FFFFFFFF.
pciedrv: Expected: IB_BAR = 00000002, IB_OFFSET = 21400000.
Number of TI PCI devices: 1
dsp_id 0 Switch device: a114
0:path  ../../../devices/pci0000:00/0000:00:1c.0/0000:02:00.0 

Thanks,
  Robert

  • Hi,

    Is that possible for the customer using a JTAG to do a PCIE register memory dump, after they can see the TI C6678 using lspci, from 0x2180_0000 to 0x2180_1FFC?

    Also, can they provide the log "sudo lspci -vvv"?

    Regards, Eric

  • Hi,

    memory mapped transfers were not enabled by default. "setpci -s 02:00.0 COMMAND=0x02" solved that issue. However, now the kernel crashes on cmem_ioctl(). Debugging is little bit slow, as for some reason device disappears if computer is rebooted and we are working remotely. Powering off the PC and starting it again solves the disappearing device.

    Br, Antti

  • Antti,

    Thanks for the update! The Desktop Linux SDK was developed a few years back and was not actively maintained. It was tested on Ubuntu 12.04, so it could have issues for other Linux OS.

    For the issues you saw, I need to setup a C6678 EVM into a Linux PC to duplicate. Unfortunately, I can't enter the office building due to coronavirus concern. Also, I searched E2E forums for such Desktop Linux SDK issues and didn't find clues relevant to yours.

    We have another PCIE driver inside the Processor SDK RTOS for C6678, that one is simpler and easier, under pdk_c667x_2_0_xx\packages\ti\boot\examples\pcie . I'm not sure if you are able to look at this one. There are still E2E queries from times to times for this driver, so it is expected functioning. 

    I assumed you have the IBL flashed to the TI C6678EVM EEPROM and set the boot switch pin into the PCIE boot mode. So you can use the same setup but change the Linux driver for the trial.

    I attached the user guide for you take a look first. 

    Regards, Eric

    2818.README.pdf

  • Hi Eric,

    Thanks for the advise. I'll take a look on pdk_c667x_2_0_xx\packages\ti\boot\examples\pcie and try this on Ubuntu 12.04. Working remotely also slows down things on our side.

    Br, Antti 

  • Hi,

    Crash happened, when cmem_ioctl() tried to directly access userspace memory address. Using copy_from_user solved the issue and we were able to run (atleast some of the) demos.

    Br, Antti