Closed smunaut closed 10 months ago
Tried reverting to 5e3383c
(which is the last commit before the "cleanup") and this works as expected.
So definitely something got broken ...
Checked 76c7381ad8d7eab01020fd9bbe0249166535f2a8
and it fails (it's the merge commit of the "cleanup").
I'm looking at the phy req_sink
and what's sent seems similar in both cases, but what comes back is not :/
For some reason the straddle option is turned on in uspciephy.py
and usppciephy.py
but the conversion logic doesn't support that mode of operation at all ...
"AXISTEN_IF_RC_STRADDLE" : True,
Turning that off fixes my issue.
I'm not sure how it works for anyone with that enabled ...
My bad ... this fix is not complete. It's one problem but 526a3d05aafcf8877b7cb9f893de82f3bd85a6e4
also breaks it ...
I think that commit hasn't been tested when address_width
== 32.
Or when on zynq mp ( device ID == xczu
)
Yes, it is.
But that alone doesn't solve the problem.
If I set address_width = 64
(and add xczu), then it works.
But in 32 bit mode it doesn't. The address ends up wrong on what's sent to the core ( upper and lower 32 bits are swapped ).
I just updated to 2023.12 (from 2023.4) and AFAICT the DMAReader isn't working. It starts transferring and then just stops after only a few words.
dump.zip
I've added a trace looking at the
port
of the DMAReader. Here are the analyzed signals :Here's also
lspci -vv
from both the device and the pcie port :lspci_port.txt lspci_dev.txt
So something that I find weird is that the Max Read Request don't match between the two :
Device :
PCIE controller:
And in the trace it seems the DMA reader is issuing read requests of 512 bytes (looking at how much the address increment ... but then again the size is 0x80 which would be 128 so I'm confused unless the size is in 32 bits works).
Target is a Xilinx USP (ez11eg) PCIe gen3 x8