Драйвер AER использует обработчики восстановления PCI для согласования действий с драйверами устройств. Сообщение AER и успешное завершение всей последовательности — разные события, которые при приёмке рекомендуем сохранять отдельно.
Восстановление устройства PCI после ошибки
Определение
Восстановление устройства PCI после ошибки — принятый в Linux порядок действий платформы и драйверов затронутых устройств, возвращающий оборудование в работу. Уведомление, ранняя диагностика, сброс слота и возврат к работе — разные этапы, и решение по каждому принимают для всего сегмента, а не для одного драйвера.
Также ищут: PCI Error Recovery · pci_error_handlers · восстановление PCI после ошибки
Зачем это знать
Доступ к регистрам устройства может появиться раньше, чем драйверу разрешат обслуживать обычные запросы. При проверке восстановления рекомендуем различать эти этапы и учитывать решения других драйверов того же сегмента, особенно у многофункциональных устройств.
Карта понятия
Что подтверждено
При уведомлении об ошибке платформа вызывает error_detected() у затронутых драйверов. Описанный этап позволяет остановить текущую деятельность; драйверу не следует начинать новый ввод-вывод внутри обработчика и после его возврата.
Граница применимости: Этап Notification в документации PCI Error Recovery Linux 6.12. Следующие этапы могут снова разрешить доступ; примечания о поведении PowerPC не переносятся на все платформы.
Диагностический доступ к устройству на этапе раннего восстановления ещё не разрешает драйверу возобновлять обычную работу.
Граница применимости: Этап MMIO Enabled и обработчик mmio_enabled() в документации Linux 6.12. Этот этап может быть пропущен, если платформа переходит к сбросу; схема не обещает одинаковый путь всем устройствам.
В описанной последовательности запрос сброса слота хотя бы от одного затронутого драйвера переводит восстановление к этапу сброса. Готовность одного драйвера обойтись без него не определяет решение для всего сегмента.
Граница применимости: Общая последовательность PCI Error Recovery Linux 6.12. Конкретные действия зависят от возможностей и политики платформы; документ отдельно обсуждает платформы без возможности сброса слота.
Возврат PCI_ERS_RESULT_RECOVERED на этапе раннего восстановления ещё не гарантирует, что драйверу разрешат продолжить работу: другой драйвер того же сегмента может потребовать сброса.
Граница применимости: Результат mmio_enabled() в документации Linux 6.12; речь об участии нескольких драйверов, а не о проверке целостности прикладных данных.
После сброса обработчик slot_reset() позволяет драйверу заново настроить устройство. Начинать обычную обработку ввода-вывода на этом этапе не следует: для её возобновления предусмотрен последующий вызов resume().
Граница применимости: Этап Slot Reset в документации Linux 6.12. Возможность доступа к устройству после сброса отделена от разрешения возобновить обычную работу.
В описанной последовательности платформа вызывает resume() у затронутых драйверов после успешного результата восстановления всех драйверов сегмента. Этот вызов сообщает, что обычную деятельность можно возобновить.
Граница применимости: Этап Resume Operations в документации Linux 6.12. Не утверждается, что каждый предшествующий обработчик обязательно вызывается или что работа приложения уже проверена.
При объявленном окончательном отказе платформа не смогла восстановить устройство. Документ рекомендует драйверу отменить ожидающий ввод-вывод и отклонять новые запросы, возвращая ошибку вышестоящим слоям.
Граница применимости: Этап Permanent Failure в документации Linux 6.12. Это исход данной процедуры восстановления; название не доказывает необратимую физическую поломку устройства.
Не путать
Что проверить
- Зафиксируйте платформу, версию ядра и драйверы затронутых функций устройства.
- Проверьте поддержку восстановления в документации используемых драйверов.
- Различайте ранний диагностический доступ, повторную настройку после сброса и возобновление обычной работы.
- Учитывайте результат других драйверов того же сегмента.
- Сохраните итог процедуры: возобновление работы либо объявленный окончательный отказ.
- После восстановления отдельно проверьте полезную работу устройства по плану приёмки.
Первоисточники
- PCI Error Recovery
Полностью прочитана локальная копия, 432 строки. Общая последовательность отделена от примечаний о PowerPC и предложений без реализации. Возможность восстановления конкретного устройства документом не подтверждается.
- The PCI Express Advanced Error Reporting Driver Guide HOWTO
Полностью прочитана локальная копия, 247 строк. Описан драйвер AER в документации Linux 6.12; это не проверка реализации конкретной платы. Счётчики системной файловой системы требуют отдельного документа ABI.
Связанные понятия
Курсы по теме
Следующий шаг
Сформулируйте задачу и уточните требования к своей системе.
Подготовить состав проектаОткроется черновик вопроса. Отправьте его, когда будете готовы.