Практикум по восстановлению устройств
PCIe: от сообщения об ошибке к возобновлению работы
Разберите последствия ошибок AER, передачу управления от встроенного ПО и решения нескольких драйверов. На примерах документации Linux 6.12 отделите раннюю диагностику и сброс от возобновления обычной работы.
Что вы сможете сделать
- Различать последствия исправимой, неисправимой нефатальной и фатальной ошибки PCIe.
- Проверять передачу управления AER и учитывать результаты всех затронутых драйверов.
- Отделять диагностический доступ, повторную настройку после сброса и разрешение обычного ввода-вывода.
- Ограничивать вывод об окончательном отказе результатом процедуры восстановления.
Модуль 1. Что подтверждает сообщение об ошибке
Категория ошибки характеризует влияние на интерфейс. Для приёмки устройства нужны также сведения о результате восстановления.
Драйвер AER в Linux собирает сведения об ошибках PCIe, сообщает о них и выполняет действия восстановления.
Проверить тезис: PCIe AER: сообщения об ошибках 01
Руководство AER рассматривает ошибки иерархии и соединений PCIe. Специфические ошибки самого устройства в этот перечень не входят: они передаются его драйверу отдельно.
Проверить тезис: PCIe AER: сообщения об ошибках 02
Исправимые ошибки PCIe обнаруживаются и исправляются аппаратурой. Для этой категории руководство не требует программного восстановления интерфейса; драйвер AER очищает статус исправимой ошибки и записывает событие в журнал.
Проверить тезис: PCIe AER: сообщения об ошибках 03
Неисправимая нефатальная ошибка затрагивает надёжность отдельной транзакции, хотя сама линия PCIe остаётся работоспособной.
Проверить тезис: PCIe AER: сообщения об ошибках 04
Фатальная ошибка делает линию PCIe ненадёжной. Для описанного восстановления после такого события драйвер AER требует сброса соединения на вышестоящем порту.
Проверить тезис: PCIe AER: сообщения об ошибках 05
При приёмке рекомендуем отдельно фиксировать сообщение AER и результат восстановления устройства. Запись об ошибке не доказывает, что драйверы завершили восстановление и возобновили обычную работу.
Проверить тезис: PCIe AER: сообщения об ошибках 07
Модуль 2. Кто принимает решение о восстановлении
Поддержка AER в системе и передача управления от встроенного ПО — разные условия. Ответ одного драйвера также не заменяет согласование действий всего затронутого сегмента.
Согласно руководству, Linux не обрабатывает события AER, пока встроенное ПО не передаст управление операционной системе через метод ACPI _OSC. Одновременная обработка встроенным ПО и Linux может приводить к непредсказуемому поведению.
Проверить тезис: PCIe AER: сообщения об ошибках 06
При уведомлении об ошибке платформа вызывает error_detected() у затронутых драйверов. Описанный этап позволяет остановить текущую деятельность; драйверу не следует начинать новый ввод-вывод внутри обработчика и после его возврата.
Проверить тезис: Восстановление устройства PCI после ошибки 01
В описанной последовательности запрос сброса слота хотя бы от одного затронутого драйвера переводит восстановление к этапу сброса. Готовность одного драйвера обойтись без него не определяет решение для всего сегмента.
Проверить тезис: Восстановление устройства PCI после ошибки 03
Возврат PCI_ERS_RESULT_RECOVERED на этапе раннего восстановления ещё не гарантирует, что драйверу разрешат продолжить работу: другой драйвер того же сегмента может потребовать сброса.
Проверить тезис: Восстановление устройства PCI после ошибки 04
Модуль 3. Когда возвращается обычная работа
Доступ к устройству, его повторная настройка и разрешение обычной работы имеют разные назначения. Набор этапов зависит от возможностей и политики платформы.
Диагностический доступ к устройству на этапе раннего восстановления ещё не разрешает драйверу возобновлять обычную работу.
Проверить тезис: Восстановление устройства PCI после ошибки 02
После сброса обработчик slot_reset() позволяет драйверу заново настроить устройство. Начинать обычную обработку ввода-вывода на этом этапе не следует: для её возобновления предусмотрен последующий вызов resume().
Проверить тезис: Восстановление устройства PCI после ошибки 05
В описанной последовательности платформа вызывает resume() у затронутых драйверов после успешного результата восстановления всех драйверов сегмента. Этот вызов сообщает, что обычную деятельность можно возобновить.
Проверить тезис: Восстановление устройства PCI после ошибки 06
При объявленном окончательном отказе платформа не смогла восстановить устройство. Документ рекомендует драйверу отменить ожидающий ввод-вывод и отклонять новые запросы, возвращая ошибку вышестоящим слоям. Название этого исхода не доказывает необратимую физическую поломку.
Проверить тезис: Восстановление устройства PCI после ошибки 07
Проверьте инженерное мышление
Вопросы проверяют не память на аббревиатуры, а умение не делать лишних выводов.
Источники курса
Полные сведения о первоисточниках приведены один раз для всего курса. Под тезисами — ссылки на соответствующие утверждения Архивариума.
- Официальная документация
The PCI Express Advanced Error Reporting Driver Guide HOWTO
Linux kernel documentation · Linux v6.12, commit adc218676eef25575469234709c2d87185ca223a
Полностью прочитана локальная копия, 247 строк. Описан драйвер AER в документации Linux 6.12; это не проверка реализации конкретной платы. Счётчики системной файловой системы требуют отдельного документа ABI.
Открыть первоисточник - Официальная документация
PCI Error Recovery
Linux kernel documentation · Linux v6.12, commit adc218676eef25575469234709c2d87185ca223a
Полностью прочитана локальная копия, 432 строки. Общая последовательность отделена от примечаний о PowerPC и предложений без реализации. Возможность восстановления конкретного устройства документом не подтверждается.
Открыть первоисточник