← PCIe 상세 목차DUJINLABS.COM

Hardware · PCIe detailed manual 04 · Linux v6.18.37

4. LTSSM을 한 단어가 아니라 하위 상태별로 기록한다

DEBUG0의 하위 상태 값이나 vendor application history를 읽을 수 있다면 'Polling에 있다'에서 멈추지 말고 세부 상태의 체류 시간과 반복 경로를 기록합니다. 단발 read는 빠른 상태를 놓치므로 histogram 또는 transition trace가 필요합니다.

상세 표
2
검증 행
30
절차
4 checkpoints
기준
PCIe · Linux v6.18.37

CHAPTER 04

4. LTSSM을 한 단어가 아니라 하위 상태별로 기록한다

DEBUG0의 하위 상태 값이나 vendor application history를 읽을 수 있다면 'Polling에 있다'에서 멈추지 말고 세부 상태의 체류 시간과 반복 경로를 기록합니다. 단발 read는 빠른 상태를 놓치므로 histogram 또는 transition trace가 필요합니다.

LTSSM 주요 상태와 실패 경계

상태그 상태에서 하는 일정상 다음 상태오래 머물 때 우선 증거대표 원인
Detect.Quietreceiver detect 전 quiet 시간Detect.ActiveLTSSM enable, power statecontroller가 시작되지 않음
Detect.Activelane termination detectPolling.Activelane별 detect bitmapendpoint reset, routing, termination
Polling.ActiveTS1 전송과 bit/symbol lockPolling.ConfigurationRx valid/block lock, TS countREFCLK, polarity, severe SI
Polling.ConfigurationTS2와 lane/link 조건 합의ConfigurationTS1/TS2 decode, lane maplane reversal/numbering
Polling.Compliancecompliance pattern 경로상황에 따라 Pollingcompliance request/strap의도치 않은 compliance 진입
Configuration.Linkwidth.Startlink/lane number 시작Linkwidth.Accept수신 TS의 link/lane fieldlane 수 불일치
Configuration.Linkwidth.Acceptwidth 합의Lanenum.Waitactive lane mask일부 lane training 실패
Configuration.Lanenum.Waitlane number 정렬Lanenum.Acceptlane별 TS fieldlane swap/reversal 설정
Configuration.Lanenum.Acceptlane 번호 확정Completenegotiated width상대편 응답 불일치
Configuration.Complete최종 TS2 교환Configuration.IdleTS2 countordered set decode
Configuration.Idleidle 교환과 link finalizeL0DLL active 준비Data Link 초기화
L0정상 TLP/DLLP 전송L0 유지 또는 PM/RecoveryDLL active, replay/creditL0여도 transaction stall 가능
Recovery.RcvrLock수신 lock 재획득Recovery.RcvrCfgCDR/block lockSI, rate transition
Recovery.RcvrCfgTS 교환/재구성Recovery.IdleTS decode/equalizationpreset/coeff mismatch
Recovery.Speeddirected speed changeRecovery.RcvrLockrate request/PHY completePLL/rate profile
Recovery.EqualizationGen3+ equalization phaseRecovery.RcvrLock/L0phase/status/FOMchannel margin/preset
L0s/L1/L1SS저전력 진입·복귀L0CLKREQ#, refclock, wake latencyASPM 정책/clock restore
Disabled/Hot Reset/Loopback관리 또는 시험 상태Detect/Recovery누가 해당 bit를 요청했는지application 설정/상대편 요청

상태 기록 형식

필드예시해석 목적
timestamp123456789 us다른 PHY/clock/reset trace와 정렬
LTSSM raw0x0b문서의 exact state code 보존
decoded stateRecovery.Speed사람이 읽을 수 있는 이름
duration842 ustimeout과 비정상 체류 판정
lane mask0x3/expected 0xf처음 탈락한 lane 확인
target/current speedGen4/Gen1directed speed change 진행
PHY flagsPLL=1 CDR=1 RxDet=0xfPIPE 경계 비교
AER/countersBadDLLP +3상태 변화와 protocol error 연결
그림 1. 4. LTSSM을 한 단어가 아니라 하위 상태별로 기록한다의 실행 순서왼쪽에서 오른쪽으로 실제 소유권과 관찰 지점이 이동합니다.
01 Detect.Quiet
02 Detect.Active
03 Polling.Active
04 Polling.Configuration
05 Configuration.*
06 L0
07 Recovery.*
08 L0

실제 검증 절차

순서실행남길 증거판정 목적
11ms polling만 하지 말고 가능한 경우 hardware history/debug trace를 사용합니다.짧은 Recovery와 Polling 전이를 포착평균 상태가 아니라 반복 edge 확인
2각 상태의 enter time, exit time, lane mask와 speed를 CSV로 남깁니다.재부팅 간 diff 가능한 형식재현성 수치화
3실패 직전 마지막 32개 transition을 PHY status와 합칩니다.첫 불일치가 한 행으로 보임controller/PHY 책임 분리
4Gen1/x1 강제 조건으로 동일 trace를 반복합니다.기본 path가 통과하는 최소 조건width와 speed 중 민감한 축 식별

주의DWC release마다 LTSSM code의 해석표가 달라질 수 있습니다. Linux의 DEBUG0 mask는 값을 꺼낼 뿐, 모든 code의 이름을 보장하지 않습니다. 사용 중인 databook의 state encoding과 대조합니다.

공개적으로 다시 확인할 수 있는 자료

공개되지 않은 vendor register나 integration별 offset을 추측해서 채우지 않았습니다. 아래 제조사 자료, architecture 문서와 Linux v6.18.37 원본에서 다시 확인할 수 있는 범위만 사용했습니다.

Synopsys PCIe 5.0 PHY

PHY가 담당하는 SerDes, equalization, lane margining과 진단 기능의 공개 범위