Hi,
With LS1043A, I am using PEX3 controller to make a PCIe link to an endpoint device. In firmware, I am periodically reading PCIe error status registers to count correctable, non-fatal uncorrectable and fatal uncorrectable errors. The PCIe link is good and well configured, so I do not get any errors. I am looking for a way to force atleast one of each error type. Is there a way through firmware (eg- register settings) or by injecting a hardware fault on PCIe link (eg- grounding a PCIe interface line) to force any of these errors?
Correctable errors- Advisory Non-Fatal Error , Replay timer timeout, REPLAY_NUM Rollover, Bad DLLP, Bad TLP, Receiver error.
Non-fatal uncorrectable errors- Unsupported request error status, ECRC error status, Unexpected completion status, Completer abort status, Completion timeout status, Poisoned TLP status.
Fatal uncorrectable errors- Malformed TLP, Receiver overflow, Flow control protocol error, Data link protocol error.
Thank you
HI @kunal_b
Please refer LSDK 21.08 User Guide section 7.2.8.2 PCIe Advanced Error Reporting User Manual to fake various kinds of PCIe errors.
Thanks
Khushbu
Hi Khushbu,
I am not using LSDK or Linux with LS1043A. I am using bare-metal programming. I saw that the LSDK user guide section 7.2.8.2 uses a software tool to inject PCIe error. Can you let me know what the tool does? Is it an intrusive error injection technique which injects error in PCIe controller's dataflow or some simple PCIe register settings? I am trying to understand if I can replicate the tool's behavior in bare-metal programming.
Thank you
-Kunal
Hi @kunal_b
Please refer below link for more information about aer-inject test utility
https://www.kernel.org/doc/Documentation/PCI/pcieaer-howto.txt
Thanks
Khushbu