9

Я пытаюсь диагностировать неэффективную карту 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 или это происходит где-то в драйверах?

(Если это окажется очевидным ответом, пожалуйста, прости меня ... после попытки диагностировать это в течение недели, мой разум немного жарен.)

1 ответ1

12

Это сделано на электрическом уровне, а не с помощью программного обеспечения. Два регистра, которые вы перечислили выше, LNK_CAP и LNK_STA - это то, что вы правильно отметили как «Вот то, на что способна ссылка» и «Вот текущий статус». Есть также SLT_CAP и SLT_STA, на которые, возможно, стоит обратить внимание, поскольку они специфичны для данного «слота» в машине.

Спецификация PCIe определяет LTSSM - механизм обучения линии связи и состояния. На уровне PHY/ устройства это то, что определяет максимальную скорость, которую поддерживают оба устройства, максимальную ширину линии связи, которую поддерживают оба устройства, и это также, где обрабатывается смена полярности / смена полосы движения (чтобы упростить макет для нас, спецификация позволяет P / N поменяться местами и т.д.).

Устройства посылают друг другу известные, упорядоченные наборы символов, а аппаратное обеспечение работает с 2,5 Гт / с. Существуют команды изменения скорости, которые можно отправлять друг другу, и здесь также определяются настройки выравнивания канала.

Если вы подключаетесь с неправильной скоростью, возможно, неверно настроен корневой порт PCIe или что проблема целостности сигнала вынуждает уменьшить ширину канала. По моему опыту, если вы подключались со скоростью 5 ГТ / с вместо 8 ГТ / с, то это скорее проблема СИ - соединение с x4 8 ГТ / с вместо x8 8 ГТ / с кажется проблемой конфигурации, или, возможно, добавление карты в слот, который не поддерживает ширину х8.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .