Де відбувається узгодження ширини зв'язку 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 / пристрою саме це визначає максимальну швидкість підтримки обох пристроїв, максимальну ширину зв’язку обох пристроїв, і це також, коли обертання полярності / розворот смуги руху обробляється (щоб полегшити макет для нас, специфікація дозволяє P / N підміняти тощо).

введіть тут опис зображення

Пристрої передають один одному відомі, впорядковані набори символів, і апаратне забезпечення проходить шлях від 2,5 ГТ / с. Існують команди зміни швидкості, які можна надсилати один одному, і тут також визначаються налаштування вирівнювання каналу.

Якщо ви з'єднуєтесь з неправильною швидкістю, можливо, кореневий порт PCIe налаштований неправильно, або виникає проблема цілісності сигналу, що примушує меншу ширину зв'язку. На моєму досвіді, якщо ви пов'язувались зі швидкістю 5 ГТ / с замість 8 ГТ / с, це більше проблема SI - зв’язування при x4 8 ГТ / с замість х 8 ГТ / с здається проблемою з конфігурацією, або можливо додати карту до слота, який не підтримує ширину x8.

Реєстр можливостей кореневого комплексу (Зсув 04 год) виявить максимальну підтримувану ширину, яка може допомогти у вашій діагностиці. IIRC, -x скидає перший 4K конфігураційного простору, -xx або -xxx скидає розширений конфігураційний простір PCIe. Якщо ви скидаєте сюди весь конфігураційний простір / вставте його, я, можливо, перекопаю його, але Linux виконує гідну роботу з декодування того, що роблять регістри.


2
Я не впевнений, що цікавіше у цій відповіді - що вона така вишукано деталізована (серйозно, це прекрасно, і я люблю вчитися новому) чи що це допомогло мені вирішити проблему приблизно за 5 хвилин. Мені в кінцевому підсумку довелося змінити конфігурації на моїй дошці - це дошка розробників, і схоже, що вона перезавантажилася в якийсь момент.
tonysdg
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.