Trường hợp đàm phán độ rộng liên kết PCI-E xảy ra ở đâu?


8

Tôi đang cố gắng chẩn đoán thẻ PCI-E hoạt động kém trong hệ thống của mình và tôi nhận ra rằng nó đang đàm phán sai độ rộng liên kết. Cụ thể, từ khi chạy lspci -vv, tôi thấy:

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

trong khi

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

Câu hỏi của tôi là: cuộc đàm phán này xảy ra ở cấp độ phần cứng hay ở cấp độ phần mềm? Nói cách khác, thẻ có thương lượng trực tiếp với khe cắm PCI-E hay điều này xảy ra ở đâu đó trong trình điều khiển?

(Nếu đây là một câu trả lời rõ ràng, xin vui lòng tha thứ cho tôi ... sau khi cố gắng chẩn đoán điều này trong một tuần, tâm trí của tôi hơi bị xáo trộn.)

Câu trả lời:


17

Nó được thực hiện ở cấp độ điện, không phải bằng phần mềm. Hai thanh ghi bạn đã liệt kê ở trên, LNK_CAP và LNK_STA là những gì bạn ghi chú chính xác là 'Đây là những gì liên kết có khả năng' và 'Ở đây trạng thái hiện tại'. Ngoài ra còn có SLT_CAP và SLT_STA, có thể đáng xem vì nó dành riêng cho một 'khe' nhất định trong máy.

Thông số kỹ thuật PCIe xác định LTSSM - Đào tạo liên kết và trạng thái máy. Ở cấp độ PHY / thiết bị, đây là yếu tố quyết định tốc độ tối đa mà cả hai thiết bị hỗ trợ, độ rộng liên kết tối đa mà cả hai thiết bị hỗ trợ và đây cũng là nơi xử lý đảo ngược cực / đảo ngược cực (để giúp chúng tôi bố trí dễ dàng hơn, thông số kỹ thuật cho phép P / N được hoán đổi, v.v.).

nhập mô tả hình ảnh ở đây

Các thiết bị gửi các bộ ký hiệu đã biết, được đặt hàng cho nhau và phần cứng hoạt động theo cách tăng từ 2,5GT / s. Có các lệnh thay đổi tốc độ có thể được gửi cho nhau và đây là nơi cài đặt cân bằng kênh cũng được xác định.

Nếu bạn liên kết với tốc độ sai, có thể cổng gốc PCIe bị cấu hình sai hoặc có vấn đề về tính toàn vẹn tín hiệu buộc độ rộng liên kết thấp hơn. Theo kinh nghiệm của tôi, nếu bạn liên kết với tốc độ 5 GT / s thay vì 8 GT / s, thì đó là vấn đề SI nhiều hơn - liên kết lên ở x4 8 GT / s thay vì x8 8 GT / s có vẻ như là vấn đề cấu hình, hoặc có thể thêm thẻ vào một vị trí không hỗ trợ chiều rộng x8.

Thanh ghi khả năng phức tạp gốc (Offset 04h) sẽ tiết lộ chiều rộng được hỗ trợ tối đa, có thể giúp chẩn đoán của bạn. IIRC, -x sẽ kết xuất 4K không gian cấu hình đầu tiên, -xx hoặc -xxx sẽ kết xuất không gian cấu hình mở rộng PCIe. Nếu bạn kết xuất toàn bộ không gian cấu hình của mình ở đây / pastebin nó, tôi có thể khai thác nó cho bạn, nhưng Linux có thể giải mã những gì các thanh ghi làm.


2
Tôi không chắc điều gì thú vị hơn về câu trả lời này - rằng nó rất chi tiết (nghiêm túc, điều này rất hay và tôi thích học những điều mới), hoặc nó đã giúp tôi giải quyết vấn đề trong khoảng 5 phút. Cuối cùng tôi đã phải sửa đổi các cấu hình trên bảng của mình - đó là bảng dev và có vẻ như nó đã được đặt lại tại một số điểm.
tonysdg
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.