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.

dm8168 dma read remote pcie memory return 0xFF

HI

    our topology is:

        DM8168_A      DM8168_B                                      DM8168_C    DM8168_D

           __|___________|__                                               __|___________|__

          |   PCIE SWITCH      |                                               |  PCIE SWITCH        |

          |_______________|                                              |________________|

                          |                                                                                  |

                PCI2PCIE bridge                                                     PCI2PCIE bridge

                         |___________________________________|

                         |___________ PCI bridge  ______________|  

                                                        |

                                                     RC                           

the base configure: DM8168's pcie width is X2, rate is 5Gbps;  PCI run on 66MHZ, 32 data line.

we use dma to read/write remote pcie memory region.

problem:                                                    

1.  when DM8168_A dma read DM8168_B's pcie memory region, the data is OK. (pls note that DM8168_A and B link to the same switch)

2.  when DM8168_A dma read DM8618_C's pcie memory region, then sometimes the data is full of F. (pls note that DM8168_A and C link to diff switch, and the path through pci bus).

3.  the test: DM8168_A cpu read DM8168_C's pcie memory region is TBD.

we know that the data is full of F, it mean there are timeout occur somewhere, maybe the pcie transcation initors, or maybe dma's. 

Is there any cue to fix the problem ? 

thanks. 

  • I think you should start by looking at TI's PCIe driver in the Linux source. It's called ti81xx_pcie or something like that. Following that, you may be able to get some debug output from the Linux PCI driver to tell you what's going wrong.

  • Hi, Ralph

        tks your reply.

      here are we newest test: 

      1\  DM8168_A cpu read DM8168_C's pcie memory region is OK;

      2\  we find the VCRDK edma.c dma_ccerr_handler doesn't invoke, it mean that the edma_tpcc have no error;

      3\  we use edma channel 40, which is map to tc channel 2,  we check the edma tptc error-detail register and find no error;

      4\  we try to control read pace by edma-tptc read-rate register, but it doesn't work; 

      5\  another interesting discover:  when the dma size < 64B, the read dma access is OK;