Jetson TX1 PCIe AER errors

We are performing the DMA transfer in TX1 over PCIe using the Altera MSGDMA. Looks like the transfer is happening and when it is trying to update the Actual number of bytes transferred back in the descriptor we are getting the following AER error.

[ 169.870329] pcieport 0000:00:01.0: AER: Uncorrected (Fatal) error received: id=0010
[ 169.870512] pcieport 0000:00:01.0: PCIe Bus Error: severity=Uncorrected (Fatal), type=Transaction Layer, id=0008(Receiver ID)
[ 169.885866] pcieport 0000:00:01.0: device [10de:0fae] error status/mask=00040000/00000000
[ 169.895467] pcieport 0000:00:01.0: [18] Malformed TLP (First)
[ 169.902324] pcieport 0000:00:01.0: TLP Header: 40000004 01000300 be000010 00000000
[ 169.912321] pcieport 0000:00:01.0: broadcast error_detected message
[ 169.912332] egc_mfd 0000:01:00.0: device has no AER-aware driver
[ 170.133072] pcieport 0000:00:01.0: Root Port link has been reset
[ 170.133189] pcieport 0000:00:01.0: AER: Device recovery failed

The TLP header seems fine. But the Byte Enables are not valid. We understand that it is not mandatory for PCIe writes. And there seems to be no option to enable it specifically in Altera IPs.

Is this error because of invalid byte enables? Or some thing else?

Thanks in advance.

Hi,

Any help/suggestions will be very helpful.

Is it just the AER error you are observing or any functionality issues are observed because of this? If it is just AER, then, probably we can ignore them.

There are functionality issues. PCIe access stops working after that.

Ok. We will look into it and get back to you at the earliest.

Hi,
“PCI Express Base Specification Revision 3.0” Spec, section 2.2.5 (page #69) says the following … verbatim

The 1 st DW BE[3:0] field contains Byte Enables for the first (or only) DW referenced by a Request.
• If the Length field for a Request indicates a length of greater than 1 DW, this field must not equal 0000b.
The Last DW BE[3:0] field contains Byte Enables for the last DW of a Request.
• If the Length field for a Request indicates a length of 1 DW, this field must equal 0000b.
• If the Length field for a Request indicates a length of greater than 1 DW, this field must not equal 0000b.

So, going by this, I think the TLP composition in your case seems wrong. Please let us know if you think otherwise.