PCI-E 링크 폭 협상은 어디에서 발생합니까?


8

시스템에서 성능이 떨어지는 PCI-E 카드를 진단하려고하는데 잘못된 링크 폭을 협상하고 있음을 깨달았습니다. 구체적으로을 실행 lspci -vv하면 다음을 볼 수 있습니다.

LnkCap: Port #1, Speed 8GT/s, Width x8, ASPM L1, Exit Latency L0s <4us, L1 <4us
        ClockPM- Surprise- LLActRep- BwNot-

동안

LnkSta: Speed 8GT/s, Width x4, TrErr- Train- SlotClk- DLActive- BWMgmt- ABWMgmt-

내 질문은 : 이 협상은 하드웨어 수준 또는 소프트웨어 수준에서 발생합니까? 달리 말하면, 카드가 PCI-E 슬롯과 직접 협상합니까, 아니면 드라이버 어딘가에서 발생합니까?

(이것이 명백한 대답으로 판명되면, 저를 용서하십시오 ...이를 일주일 동안 진단하려고 시도한 후, 내 마음은 약간 튀겨졌습니다.)

답변:


17

소프트웨어가 아닌 전기 수준에서 수행됩니다. 위에 나열된 두 레지스터 인 LNK_CAP 및 LNK_STA는 '링크가 가능한 기능은 다음과 같습니다'및 '현재 상태는 여기'로 올바르게 표시됩니다. SLT_CAP 및 SLT_STA도 있으며, 이는 머신의 지정된 '슬롯'에 고유 한 것으로 볼 수 있습니다.

PCIe 사양은 LTSSM- 링크 교육 및 상태 시스템을 정의합니다 . PHY / 장치 수준에서 이는 두 장치가 지원하는 최대 속도, 두 장치가 지원하는 최대 링크 너비를 결정하는 요소이며, 극성 반전 / 차선 반전이 처리되는 위치도 결정합니다. / N 교환 등).

여기에 이미지 설명을 입력하십시오

이 장치는 알려진 순서의 심볼 세트를 서로에게 보내고 하드웨어는 2.5GT / s에서 작동합니다. 서로 전송할 수있는 속도 변경 명령이 있으며 여기에서 채널 이퀄라이제이션 설정이 정의됩니다.

잘못된 속도로 연결하는 경우 PCIe 루트 포트가 잘못 구성되었거나 링크 폭을 낮추는 신호 무결성 문제가있을 수 있습니다. 내 경험상 8GT / s 대신 5GT / s로 연결하는 경우 SI 문제가 더 많습니다. x8 8GT / s 대신 x4 8GT / s로 연결하면 구성 문제처럼 보입니다. 또는 x8 너비를 지원하지 않는 슬롯에 카드를 추가 할 수 있습니다.

루트 복합 기능 레지스터 (Offset 04h)는 지원되는 최대 너비를 나타내므로 진단에 도움이 될 수 있습니다. IIRC, -x는 구성 공간의 첫 4K를 덤프하고, -xx 또는 -xxx는 PCIe 확장 구성 공간을 덤프합니다. 전체 구성 공간을 여기 / pastebin으로 덤프하면 가능할 것입니다.하지만 Linux는 레지스터가 수행하는 작업을 디코딩하는 적절한 작업을 수행합니다.


2
나는이 답변에 대해 더 흥미로운 점이 무엇인지 잘 모르겠습니다. 매우 상세하게 묘사되어 (심히 이것은 아름답고 새로운 것을 배우는 것을 좋아합니다) 약 5 분 안에 문제를 해결하는 데 도움이되었습니다. 보드의 구성을 수정해야했습니다. 개발 보드이며 어느 시점에서 재설정 된 것처럼 보입니다.
tonysdg 2016 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.