PCIe-from-scratch update: GTP is configured and sending a hardcoded 8b10b junk pattern to the SoC.
On the RX side, I'm able to correctly identify and parse TS1/TS2 training sets.
Next step will be to refactor a bit, then implement the actual LTSSM and start sending training sets.