Elektrik seviyesinde yapılır, yazılım tarafından değil. Yukarıda listelediğiniz iki kayıt olan LNK_CAP ve LNK_STA, 'Bağlantının yapabildikleri şudur' ve 'Şu anki durum' olarak doğru bir şekilde not ettiğiniz şeydir. Makinede belirli bir 'yuvaya' özgü olduğu görülmeye değer SLT_CAP ve SLT_STA da var.
PCIe spesifikasyonu bir LTSSM - Link Eğitim ve Durum Durumu Makinesi tanımlar . PHY / cihaz seviyesinde, her iki cihazın desteklediği maksimum hızı, her iki cihazın da desteklediği maksimum bağlantı genişliğini belirleyen budur ve bu aynı zamanda polarite ters / şerit tersinin işlendiği yerdir (düzeni bizim için daha kolay hale getirmek için spesifikasyon P'ye izin verir. / N değiştirilecek vb.).
Cihazlar bilinen, sıralı sembol setlerini birbirlerine gönderiyor ve donanım 2,5GT / s'den başlıyor. Birbirine gönderilebilen hız değiştirme komutları vardır ve burada kanal eşitleme ayarları da tanımlanır.
Yanlış hızda bağlantı kuruyorsanız, PCIe kök bağlantı noktasının yanlış yapılandırılması veya daha düşük bağlantı genişliğini zorlayan bir sinyal bütünlüğü sorunu olabilir. Deneyimlerime göre, 8 GT / s yerine 5 GT / s'de bağlanıyorsanız, bu daha çok bir SI sorunudur - x8 8 GT / s yerine x4 8 GT / s'de bağlantı kurmak bir yapılandırma sorunu gibi görünüyor, veya x8 genişliğini desteklemeyen bir yuvaya kart eklemek olabilir.
Kök karmaşık yetenekler kaydı (Ofset 04h), tanılamanıza yardımcı olabilecek maksimum desteklenen genişliği ortaya çıkaracaktır. IIRC, -x, ilk 4K yapılandırma alanının dökümünü, -xx veya -xxx ise PCIe genişletilmiş yapılandırma alanını dökecektir. Tüm yapılandırma alanınızı buraya dökerseniz / yapıştırırsanız, muhtemelen sizin için kazabilirim, ancak Linux kayıtların ne yaptığını çözmek için iyi bir iş çıkarır.