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.).
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.