Платформа и системные соединения

Восстановление устройства PCI после ошибки

Определение

Восстановление устройства PCI после ошибки — принятый в Linux порядок действий платформы и драйверов затронутых устройств, возвращающий оборудование в работу. Уведомление, ранняя диагностика, сброс слота и возврат к работе — разные этапы, и решение по каждому принимают для всего сегмента, а не для одного драйвера.

Также ищут: PCI Error Recovery · pci_error_handlers · восстановление PCI после ошибки

Зачем это знать

Доступ к регистрам устройства может появиться раньше, чем драйверу разрешат обслуживать обычные запросы. При проверке восстановления рекомендуем различать эти этапы и учитывать решения других драйверов того же сегмента, особенно у многофункциональных устройств.

Связи из словаря

Карта понятия

Восстановление устройства PCI после ошибки
Доказательная часть

Что подтверждено

  1. При уведомлении об ошибке платформа вызывает error_detected() у затронутых драйверов. Описанный этап позволяет остановить текущую деятельность; драйверу не следует начинать новый ввод-вывод внутри обработчика и после его возврата.

    Граница применимости: Этап Notification в документации PCI Error Recovery Linux 6.12. Следующие этапы могут снова разрешить доступ; примечания о поведении PowerPC не переносятся на все платформы.

  2. Диагностический доступ к устройству на этапе раннего восстановления ещё не разрешает драйверу возобновлять обычную работу.

    Граница применимости: Этап MMIO Enabled и обработчик mmio_enabled() в документации Linux 6.12. Этот этап может быть пропущен, если платформа переходит к сбросу; схема не обещает одинаковый путь всем устройствам.

  3. В описанной последовательности запрос сброса слота хотя бы от одного затронутого драйвера переводит восстановление к этапу сброса. Готовность одного драйвера обойтись без него не определяет решение для всего сегмента.

    Граница применимости: Общая последовательность PCI Error Recovery Linux 6.12. Конкретные действия зависят от возможностей и политики платформы; документ отдельно обсуждает платформы без возможности сброса слота.

  4. Возврат PCI_ERS_RESULT_RECOVERED на этапе раннего восстановления ещё не гарантирует, что драйверу разрешат продолжить работу: другой драйвер того же сегмента может потребовать сброса.

    Граница применимости: Результат mmio_enabled() в документации Linux 6.12; речь об участии нескольких драйверов, а не о проверке целостности прикладных данных.

  5. После сброса обработчик slot_reset() позволяет драйверу заново настроить устройство. Начинать обычную обработку ввода-вывода на этом этапе не следует: для её возобновления предусмотрен последующий вызов resume().

    Граница применимости: Этап Slot Reset в документации Linux 6.12. Возможность доступа к устройству после сброса отделена от разрешения возобновить обычную работу.

  6. В описанной последовательности платформа вызывает resume() у затронутых драйверов после успешного результата восстановления всех драйверов сегмента. Этот вызов сообщает, что обычную деятельность можно возобновить.

    Граница применимости: Этап Resume Operations в документации Linux 6.12. Не утверждается, что каждый предшествующий обработчик обязательно вызывается или что работа приложения уже проверена.

  7. При объявленном окончательном отказе платформа не смогла восстановить устройство. Документ рекомендует драйверу отменить ожидающий ввод-вывод и отклонять новые запросы, возвращая ошибку вышестоящим слоям.

    Граница применимости: Этап Permanent Failure в документации Linux 6.12. Это исход данной процедуры восстановления; название не доказывает необратимую физическую поломку устройства.

Граница терминов

Не путать

Восстановление устройства PCI после ошибки PCIe AER: сообщения об ошибках

Драйвер AER использует обработчики восстановления PCI для согласования действий с драйверами устройств. Сообщение AER и успешное завершение всей последовательности — разные события, которые при приёмке рекомендуем сохранять отдельно.

Перед спецификацией

Что проверить

  1. Зафиксируйте платформу, версию ядра и драйверы затронутых функций устройства.
  2. Проверьте поддержку восстановления в документации используемых драйверов.
  3. Различайте ранний диагностический доступ, повторную настройку после сброса и возобновление обычной работы.
  4. Учитывайте результат других драйверов того же сегмента.
  5. Сохраните итог процедуры: возобновление работы либо объявленный окончательный отказ.
  6. После восстановления отдельно проверьте полезную работу устройства по плану приёмки.
Открытые основания

Первоисточники

  • Документация2
  • Официальная документация
    PCI Error Recovery Linux kernel documentation · Linux v6.12, commit adc218676eef25575469234709c2d87185ca223a · проверено

    Полностью прочитана локальная копия, 432 строки. Общая последовательность отделена от примечаний о PowerPC и предложений без реализации. Возможность восстановления конкретного устройства документом не подтверждается.

  • Официальная документация
    The PCI Express Advanced Error Reporting Driver Guide HOWTO Linux kernel documentation · Linux v6.12, commit adc218676eef25575469234709c2d87185ca223a · проверено

    Полностью прочитана локальная копия, 247 строк. Описан драйвер AER в документации Linux 6.12; это не проверка реализации конкретной платы. Счётчики системной файловой системы требуют отдельного документа ABI.

Следующий шаг

Сформулируйте задачу и уточните требования к своей системе.

Подготовить состав проекта

Откроется черновик вопроса. Отправьте его, когда будете готовы.

Сообщить об ошибке

Опишите проблему — постараемся исправить как можно скорее.

Спасибо!

Получили ваше сообщение.
Подтвердите действие