Shawn Lin fe835d5fd3 PCI: rockchip: dw: Add fault injection support
(1) enable err_event:
root@rk3576-buildroot:/sys/kernel/debug/2a200000.pcie# echo enable > /sys/kernel/debug/2a200000.pcie/err_event
root@rk3576-buildroot:/sys/kernel/debug/2a200000.pcie# cat err_event
Common event signal status: 0xL1
EBUF Overflow: 0x0
EBUF Under-run: 0x0
Decode Error: 0x0
Running Disparity Error: 0x0
SKP OS Parity Error: 0x0
SYNC Header Error: 0x0
CTL SKP OS Parity Error: 0x0
Detect EI Infer: 0x0
Receiver Error: 0x0
Rx Recovery Request: 0x0
N_FTS Timeout: 0x0
Framing Error: 0x0
Deskew Error: 0x0
BAD TLP: 0x0
LCRC Error: 0x0
BAD DLLP: 0x0
Replay Number Rollover: 0x0
Replay Timeout: 0x0
Rx Nak DLLP: 0x0
Tx Nak DLLP: 0x0
Retry TLP: 0x0
FC Timeout: 0x0
Poisoned TLP: 0x0
ECRC Error: 0x0
Unsupported Request: 0x0
Completer Abort: 0x0
Completion Timeout: 0x0

(2) enable fault injection, for example, add 128 bad DLLP to EINJ2
root@rk3576-buildroot:/sys/kernel/debug/2a200000.pcie# echo "2 1 2 128" > fault_injection
root@rk3576-buildroot:/sys/kernel/debug/2a200000.pcie# cat fault_injection
ERROR_INJECTION0_ENABLE: 0x0
ERROR_INJECTION1_ENABLE: 0x0
ERROR_INJECTION2_ENABLE: 0x1 // enabled
ERROR_INJECTION3_ENABLE: 0x0
ERROR_INJECTION4_ENABLE: 0x0
ERROR_INJECTION5_ENABLE: 0x0
ERROR_INJECTION6_ENABLE: 0x0
EINJ0_CRC_TYPE: 0x0
EINJ0_COUNT: 0x0
EINJ1_BAD_SEQNUM: 0x0
EINJ1_SEQNUM_TYPE: 0x0
EINJ1_COUNT: 0x0
EINJ2_DLLP_TYPE: 0x2  // NAK DLLP
EINJ2_COUNT: 0x80     // number 128
EINJ3_SYMBOL_TYPE: 0x0
EINJ3_COUNT: 0x0
EINJ4_BAD_UPDFC_VALUE: 0x0
EINJ4_VC_NUMBER: 0x0
EINJ4_UPDFC_TYPE: 0x0
EINJ4_COUNT: 0x0
EINJ5_SPECIFIED_TLP: 0x0
EINJ5_COUNT: 0x0
EINJ6_PACKET_TYPE: 0x0
EINJ6_INVERTED_CONTROL: 0x0
EINJ6_COUNT: 0x0

(3) start transfer and see EINJ2_COUNT decreased to zero
root@rk3576-buildroot:/# dd if=/dev/nvme0n1 of=/dev/null bs=1M count=5000
...
root@rk3576-buildroot:/sys/kernel/debug/2a200000.pcie# cat fault_injection
ERROR_INJECTION0_ENABLE: 0x0
ERROR_INJECTION1_ENABLE: 0x0
ERROR_INJECTION2_ENABLE: 0x0 // auto disabled
ERROR_INJECTION3_ENABLE: 0x0
ERROR_INJECTION4_ENABLE: 0x0
ERROR_INJECTION5_ENABLE: 0x0
ERROR_INJECTION6_ENABLE: 0x0
EINJ0_CRC_TYPE: 0x0
EINJ0_COUNT: 0x0
EINJ1_BAD_SEQNUM: 0x0
EINJ1_SEQNUM_TYPE: 0x0
EINJ1_COUNT: 0x0
EINJ2_DLLP_TYPE: 0x2
EINJ2_COUNT: 0x0        // auto decreased to zero
EINJ3_SYMBOL_TYPE: 0x0
EINJ3_COUNT: 0x0
EINJ4_BAD_UPDFC_VALUE: 0x0
EINJ4_VC_NUMBER: 0x0
EINJ4_UPDFC_TYPE: 0x0
EINJ4_COUNT: 0x0
EINJ5_SPECIFIED_TLP: 0x0
EINJ5_COUNT: 0x0
EINJ6_PACKET_TYPE: 0x0
EINJ6_INVERTED_CONTROL: 0x0
EINJ6_COUNT: 0x0

(4) check err_event again
root@rk3576-buildroot:/sys/kernel/debug/2a200000.pcie# cat err_event
Common event signal status: 0xL1
EBUF Overflow: 0x0
EBUF Under-run: 0x0
Decode Error: 0x0
Running Disparity Error: 0x0
SKP OS Parity Error: 0x0
SYNC Header Error: 0x0
CTL SKP OS Parity Error: 0x0
Detect EI Infer: 0x0
Receiver Error: 0x0
Rx Recovery Request: 0x1f // we get 31 reoocvery due to error
N_FTS Timeout: 0x0
Framing Error: 0x0
Deskew Error: 0x0
BAD TLP: 0x0
LCRC Error: 0x0
BAD DLLP: 0x0
Replay Number Rollover: 0x0
Replay Timeout: 0x0
Rx Nak DLLP: 0x0
Tx Nak DLLP: 0x80      // We get 128 NAK DLLP
Retry TLP: 0x0
FC Timeout: 0x0
Poisoned TLP: 0x0
ECRC Error: 0x0
Unsupported Request: 0x0
Completer Abort: 0x0
Completion Timeout: 0x0

Signed-off-by: Shawn Lin <shawn.lin@rock-chips.com>
Change-Id: Ib214cc1be565bf16bafb6a847215572f35c43753
2024-10-08 16:40:52 +08:00
2024-08-17 17:42:29 +08:00
2024-08-17 17:42:29 +08:00
2024-08-17 17:42:29 +08:00
2024-08-17 17:42:29 +08:00
2024-08-17 17:42:29 +08:00
2024-03-06 14:45:17 +00:00
2024-04-03 15:19:55 +02:00

Linux kernel
============

There are several guides for kernel developers and users. These guides can
be rendered in a number of formats, like HTML and PDF. Please read
Documentation/admin-guide/README.rst first.

In order to build the documentation, use ``make htmldocs`` or
``make pdfdocs``.  The formatted documentation can also be read online at:

    https://www.kernel.org/doc/html/latest/

There are various text files in the Documentation/ subdirectory,
several of them using the Restructured Text markup notation.

Please read the Documentation/process/changes.rst file, as it contains the
requirements for building and running the kernel, and information about
the problems which may result by upgrading your kernel.
Description
No description provided
Readme 7.9 GiB
Languages
C 97.7%
Assembly 1.6%
Makefile 0.3%
Perl 0.1%