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.

AM5728: PCIe communication prefetchable memory problem

Part Number: AM5728

Hi,

I'm writing to get information about PCIe Communication prefetchable memory read/write access with AM572x based custom board. I'm using Ubuntu 16.04, version of SDK(04.02.00.09) and Linux Kernel(4.9.59). I've configured the my AM572x based custom board as Root Complex and the others as End-Point.

Here is what I did until now:

1- I’m able to get BAR addressing (PCIe enumeration) for end-point device (all PCIe memory is non-prefetchable) without a IDT PCIe switch. I can also perform read/write memory operations on it successfully.

2- I’m able to get BAR addressing (PCIe enumeration) for multiple end-point devices (all PCIe memory is non-prefetchable) behind a IDT PCIe switch. I also can perform read/write memory operations on both successfully.

3- I’m able to get BAR addressing (PCIe enumeration) for end-point device (all PCIe memory is prefetchable) without a IDT PCIe switch. But, I cannot perform read/write memory operations to this device

4- I’m unable to get BAR addressing (PCIe enumeration) for end-point device (all PCIe memory is prefetchable) behind a IDT PCIe switch.

 

One of my problems is related to Case 3 which read/write problem for prefetchable end-point devices.

The other is that I’m unable to get BAR addressing (PCIe enumeration) from end-point devices which have prefetchable PCIe memory behind a IDT PCIe switch.

Can anyone help me with that?

Best regards

Alican

  • Hi Alican, 

    Based on your 4 cases, it seems the EP card device may not support preferable memory by design. PCIe spec. mentioned that

    "A PCI Express Function requesting Memory Space through a BAR must set the BAR's Prefetchable bit unless the range contains locations with read side effects or locations in which the Function does not tolerate write merging."

    So it seems the end-point device have restrictions on read prefetch or write merging, thus not supported. Will you be able to try a different type of card device?

    Regards

    Jian