← Documents Documentation/ABI/testing/debugfs-dwc-pcie GitHub 원문 ↗

Linux 6.18.37 · ABI / testing

DesignWare PCIe RAS-DES debugfs ABI

DesignWare PCIe RAS-DES의 lane receiver detection·RXVALID, 30종 error injection, 35종 event counter enable·value·lane selection과 LTSSM state debugfs ABI를 설명합니다.

Source pathDocumentation/ABI/testing/debugfs-dwc-pcie
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.

1. 요약·해설

원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.

Lane receiver detection과 RXVALID

debugfs-dwc-pcie:1-13

선택한 lane의 PHY receiver detection과 PIPE RXVALID signal 상태를 읽으며 기본 선택은 Lane0입니다.

RAS-DES error injection

debugfs-dwc-pcie:15-87

TLP·DLLP CRC·sequence, ordered-set symbol·parity, flow-control credits와 duplicate·nullified TLP 등 30종 오류를 다음 data transmission에 주입하도록 controller를 준비합니다.

RAS-DES event counters

debugfs-dwc-pcie:89-142

Controller에서 35종 event가 발생한 횟수를 선택적으로 계수합니다. Counter를 disable한 뒤 다시 enable하면 값을 reset합니다.

Lane-specific counter와 LTSSM state

debugfs-dwc-pcie:144-157

Lane-specific events 1-11·34·35의 대상 lane을 선택하고 현재 PCIe LTSSM state를 문자열과 raw value로 읽습니다.

2. 영어 원문 전체

번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.

원문 전체 펼치기
1 What: /sys/kernel/debug/dwc_pcie_<dev>/rasdes_debug/lane_detect
2 Date: February 2025
3 Contact: Shradha Todi <[email protected]>
4 Description: (RW) Write the lane number to be checked for detection. Read
5 will return whether PHY indicates receiver detection on the
6 selected lane. The default selected lane is Lane0.
7
8 What: /sys/kernel/debug/dwc_pcie_<dev>/rasdes_debug/rx_valid
9 Date: February 2025
10 Contact: Shradha Todi <[email protected]>
11 Description: (RW) Write the lane number to be checked as valid or invalid.
12 Read will return the status of PIPE RXVALID signal of the
13 selected lane. The default selected lane is Lane0.
14
15 What: /sys/kernel/debug/dwc_pcie_<dev>/rasdes_err_inj/<error>
16 Date: February 2025
17 Contact: Shradha Todi <[email protected]>
18 Description: The "rasdes_err_inj" is a directory which can be used to inject
19 errors into the system. The possible errors that can be injected
20 are:
21
22 1) tx_lcrc - TLP LCRC error injection TX Path
23 2) b16_crc_dllp - 16b CRC error injection of ACK/NAK DLLP
24 3) b16_crc_upd_fc - 16b CRC error injection of Update-FC DLLP
25 4) tx_ecrc - TLP ECRC error injection TX Path
26 5) fcrc_tlp - TLP's FCRC error injection TX Path
27 6) parity_tsos - Parity error of TSOS
28 7) parity_skpos - Parity error on SKPOS
29 8) rx_lcrc - LCRC error injection RX Path
30 9) rx_ecrc - ECRC error injection RX Path
31 10) tlp_err_seq - TLPs SEQ# error
32 11) ack_nak_dllp_seq - DLLPS ACK/NAK SEQ# error
33 12) ack_nak_dllp - ACK/NAK DLLPs transmission block
34 13) upd_fc_dllp - UpdateFC DLLPs transmission block
35 14) nak_dllp - Always transmission for NAK DLLP
36 15) inv_sync_hdr_sym - Invert SYNC header
37 16) com_pad_ts1 - COM/PAD TS1 order set
38 17) com_pad_ts2 - COM/PAD TS2 order set
39 18) com_fts - COM/FTS FTS order set
40 19) com_idl - COM/IDL E-idle order set
41 20) end_edb - END/EDB symbol
42 21) stp_sdp - STP/SDP symbol
43 22) com_skp - COM/SKP SKP order set
44 23) posted_tlp_hdr - Posted TLP Header credit value control
45 24) non_post_tlp_hdr - Non-Posted TLP Header credit value control
46 25) cmpl_tlp_hdr - Completion TLP Header credit value control
47 26) posted_tlp_data - Posted TLP Data credit value control
48 27) non_post_tlp_data - Non-Posted TLP Data credit value control
49 28) cmpl_tlp_data - Completion TLP Data credit value control
50 29) duplicate_tlp - Generates duplicate TLPs
51 30) nullified_tlp - Generates Nullified TLPs
52
53 (WO) Write to the attribute will prepare controller to inject
54 the respective error in the next transmission of data.
55
56 Parameter required to write will change in the following ways:
57
58 - Errors 9 and 10 are sequence errors. The write command:
59
60 echo <count> <diff> > /sys/kernel/debug/dwc_pcie_<dev>/rasdes_err_inj/<error>
61
62 <count>
63 Number of errors to be injected
64 <diff>
65 The difference to add or subtract from natural
66 sequence number to generate sequence error.
67 Allowed range from -4095 to 4095
68
69 - Errors 23 to 28 are credit value error insertions. The write
70 command:
71
72 echo <count> <diff> <vc> > /sys/kernel/debug/dwc_pcie_<dev>/rasdes_err_inj/<error>
73
74 <count>
75 Number of errors to be injected
76 <diff>
77 The difference to add or subtract from UpdateFC
78 credit value. Allowed range from -4095 to 4095
79 <vc>
80 Target VC number
81
82 - All other errors. The write command:
83
84 echo <count> > /sys/kernel/debug/dwc_pcie_<dev>/rasdes_err_inj/<error>
85
86 <count>
87 Number of errors to be injected
88
89 What: /sys/kernel/debug/dwc_pcie_<dev>/rasdes_event_counters/<event>/counter_enable
90 Date: February 2025
91 Contact: Shradha Todi <[email protected]>
92 Description: The "rasdes_event_counters" is the directory which can be used
93 to collect statistical data about the number of times a certain
94 event has occurred in the controller. The list of possible
95 events are:
96
97 1) EBUF Overflow
98 2) EBUF Underrun
99 3) Decode Error
100 4) Running Disparity Error
101 5) SKP OS Parity Error
102 6) SYNC Header Error
103 7) Rx Valid De-assertion
104 8) CTL SKP OS Parity Error
105 9) 1st Retimer Parity Error
106 10) 2nd Retimer Parity Error
107 11) Margin CRC and Parity Error
108 12) Detect EI Infer
109 13) Receiver Error
110 14) RX Recovery Req
111 15) N_FTS Timeout
112 16) Framing Error
113 17) Deskew Error
114 18) Framing Error In L0
115 19) Deskew Uncompleted Error
116 20) Bad TLP
117 21) LCRC Error
118 22) Bad DLLP
119 23) Replay Number Rollover
120 24) Replay Timeout
121 25) Rx Nak DLLP
122 26) Tx Nak DLLP
123 27) Retry TLP
124 28) FC Timeout
125 29) Poisoned TLP
126 30) ECRC Error
127 31) Unsupported Request
128 32) Completer Abort
129 33) Completion Timeout
130 34) EBUF SKP Add
131 35) EBUF SKP Del
132
133 (RW) Write 1 to enable the event counter and write 0 to disable
134 the event counter. Read will return whether the counter is
135 currently enabled or disabled. Counter is disabled by default.
136
137 What: /sys/kernel/debug/dwc_pcie_<dev>/rasdes_event_counters/<event>/counter_value
138 Date: February 2025
139 Contact: Shradha Todi <[email protected]>
140 Description: (RO) Read will return the current value of the event counter.
141 To reset the counter, counter should be disabled first and then
142 enabled back using the "counter_enable" attribute.
143
144 What: /sys/kernel/debug/dwc_pcie_<dev>/rasdes_event_counters/<event>/lane_select
145 Date: February 2025
146 Contact: Shradha Todi <[email protected]>
147 Description: (RW) Some lanes in the event list are lane specific events.
148 These include events from 1 to 11, as well as, 34 and 35. Write
149 the lane number for which you wish the counter to be enabled,
150 disabled, or value dumped. Read will return the current
151 selected lane number. Lane0 is selected by default.
152
153 What: /sys/kernel/debug/dwc_pcie_<dev>/ltssm_status
154 Date: February 2025
155 Contact: Hans Zhang <[email protected]>
156 Description: (RO) Read will return the current PCIe LTSSM state in both
157 string and raw value.
158

3. 한국어 전문 번역

영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.

Lane detect와 PIPE RXVALID

1-13
WhatDate / Contact설명권한
/sys/kernel/debug/dwc_pcie_<dev>/rasdes_debug/lane_detect2025년 2월 / Shradha Todi <[email protected]>검사할 lane number를 씁니다. 읽으면 선택한 lane에서 PHY가 receiver detection을 나타내는지 반환합니다. 기본 lane은 Lane0입니다.RW
/sys/kernel/debug/dwc_pcie_<dev>/rasdes_debug/rx_valid2025년 2월 / Shradha Todi <[email protected]>Valid 또는 invalid 상태를 검사할 lane number를 씁니다. 읽으면 선택한 lane의 PIPE RXVALID signal status를 반환합니다. 기본 lane은 Lane0입니다.RW

주입할 수 있는 30종 RAS-DES errors

15-52
항목내용
What/sys/kernel/debug/dwc_pcie_<dev>/rasdes_err_inj/<error>
Date2025년 2월
ContactShradha Todi <[email protected]>

rasdes_err_inj directory에서 다음 errors를 system에 주입할 수 있습니다.

번호Error설명
1tx_lcrcTX path TLP LCRC error injection
2b16_crc_dllpACK/NAK DLLP의 16-bit CRC error injection
3b16_crc_upd_fcUpdate-FC DLLP의 16-bit CRC error injection
4tx_ecrcTX path TLP ECRC error injection
5fcrc_tlpTX path TLP FCRC error injection
6parity_tsosTSOS parity error
7parity_skposSKPOS parity error
8rx_lcrcRX path LCRC error injection
9rx_ecrcRX path ECRC error injection
10tlp_err_seqTLP sequence number error
11ack_nak_dllp_seqDLLP ACK/NAK sequence number error
12ack_nak_dllpACK/NAK DLLP transmission block
13upd_fc_dllpUpdateFC DLLP transmission block
14nak_dllpNAK DLLP를 항상 전송
15inv_sync_hdr_symSYNC header 반전
16com_pad_ts1COM/PAD TS1 ordered set
17com_pad_ts2COM/PAD TS2 ordered set
18com_ftsCOM/FTS FTS ordered set
19com_idlCOM/IDL E-idle ordered set
20end_edbEND/EDB symbol
21stp_sdpSTP/SDP symbol
22com_skpCOM/SKP SKP ordered set
23posted_tlp_hdrPosted TLP Header credit value control
24non_post_tlp_hdrNon-Posted TLP Header credit value control
25cmpl_tlp_hdrCompletion TLP Header credit value control
26posted_tlp_dataPosted TLP Data credit value control
27non_post_tlp_dataNon-Posted TLP Data credit value control
28cmpl_tlp_dataCompletion TLP Data credit value control
29duplicate_tlpDuplicate TLPs 생성
30nullified_tlpNullified TLPs 생성

Error type별 write parameters

53-87

Attribute에 쓰면 controller가 다음 data transmission에서 해당 error를 주입하도록 준비합니다. 권한은 WO입니다.

원문 분류상 errors 9와 10은 sequence errors이며 다음 형식을 사용합니다.

echo <count> <diff> > /sys/kernel/debug/dwc_pcie_<dev>/rasdes_err_inj/<error>
인자의미
<count>주입할 error 수
<diff>자연스러운 sequence number에 더하거나 빼서 sequence error를 만들 차이. 허용 범위 -4095..4095

Errors 23..28은 credit value error insertion이며 다음 형식을 사용합니다.

echo <count> <diff> <vc> > /sys/kernel/debug/dwc_pcie_<dev>/rasdes_err_inj/<error>
인자의미
<count>주입할 error 수
<diff>UpdateFC credit value에 더하거나 뺄 차이. 허용 범위 -4095..4095
<vc>Target VC number

그 밖의 모든 errors는 count만 씁니다.

echo <count> > /sys/kernel/debug/dwc_pcie_<dev>/rasdes_err_inj/<error>
RAS-DES error injection arm과 실행
Sequence errorcount + diffArm controllerNext data transmission
Credit error 23..28count + diff + VCArm controllerNext data transmission
Other errorcountArm controllerNext data transmission

Error category에 맞는 parameters를 쓰면 즉시 packet을 생성하는 대신 controller가 다음 transmission에 적용할 injection을 준비한다.

계수할 수 있는 35종 controller events

89-132
항목내용
What/sys/kernel/debug/dwc_pcie_<dev>/rasdes_event_counters/<event>/counter_enable
Date2025년 2월
ContactShradha Todi <[email protected]>

rasdes_event_counters directory는 controller에서 특정 event가 발생한 횟수의 statistical data를 수집합니다.

번호Event
1EBUF Overflow
2EBUF Underrun
3Decode Error
4Running Disparity Error
5SKP OS Parity Error
6SYNC Header Error
7Rx Valid De-assertion
8CTL SKP OS Parity Error
91st Retimer Parity Error
102nd Retimer Parity Error
11Margin CRC and Parity Error
12Detect EI Infer
13Receiver Error
14RX Recovery Req
15N_FTS Timeout
16Framing Error
17Deskew Error
18Framing Error In L0
19Deskew Uncompleted Error
20Bad TLP
21LCRC Error
22Bad DLLP
23Replay Number Rollover
24Replay Timeout
25Rx Nak DLLP
26Tx Nak DLLP
27Retry TLP
28FC Timeout
29Poisoned TLP
30ECRC Error
31Unsupported Request
32Completer Abort
33Completion Timeout
34EBUF SKP Add
35EBUF SKP Del

counter_enable에 1을 쓰면 enable, 0을 쓰면 disable합니다. 읽으면 현재 enable 여부를 반환합니다. 기본값은 disabled이며 권한은 RW입니다.

Counter value, lane selection, LTSSM

137-157
WhatDate / Contact설명권한
/sys/kernel/debug/dwc_pcie_<dev>/rasdes_event_counters/<event>/counter_value2025년 2월 / Shradha Todi <[email protected]>현재 event counter 값을 반환합니다. Reset하려면 counter_enable에서 먼저 disable한 뒤 다시 enable해야 합니다.RO
/sys/kernel/debug/dwc_pcie_<dev>/rasdes_event_counters/<event>/lane_select2025년 2월 / Shradha Todi <[email protected]>Lane-specific events 1..11과 34·35에 사용할 lane number를 씁니다. Enable·disable·value dump가 선택 lane에 적용됩니다. 읽으면 현재 lane을 반환하며 기본값은 Lane0입니다.RW
/sys/kernel/debug/dwc_pcie_<dev>/ltssm_status2025년 2월 / Hans Zhang <[email protected]>현재 PCIe LTSSM state를 문자열과 raw value로 반환합니다.RO
Lane-specific event counter 사용과 reset
lane_selectLane 0..Ncounter_enable = 1Count eventsRead counter_value
counter_enable = 0Counter disabledcounter_enable = 1Counter reset and enabled
ltssm_statusState stringRaw state value

Lane-specific event는 lane을 먼저 고른 뒤 counter를 enable한다. Disable 후 re-enable은 새 측정을 시작하면서 기존 count를 reset한다.