Назначение поля «ошибки» /proc/cpuinfo
описано в сообщении о коммите, в котором оно было представлено :
x86/cpufeature
: Добавить флаги ошибок /proc/cpuinfo
Сбросьте флаги, которые обозначают, что мы обнаружили и / или применили обходные пути ошибки к процессору, на котором мы выполняем, аналогично флагам возможностей.
Преимущество заключается в том, что они не накапливаются со временем, как функции процессора.
Ранее аппаратные ошибки, обнаруженные ядром, были указаны как отдельные функции ( например, печально известная ошибка F00F, которая имеет собственную f00f_bug
запись в /proc/cpuinfo
32-разрядных системах x86). Введена запись «ошибок», чтобы удерживать их в одной функции, идущей вперед, в том же стиле, что и флаги процессора x86 .
Что касается того, что записи означают на практике, как вы можете видеть в сообщении, все, что гарантировано, это то, что ядро обнаружило аппаратную ошибку. Вам нужно искать в другом месте (загрузочные сообщения или конкретные /proc
записи или /sys
записи, такие как файлы в /sys/devices/system/cpu/vulnerabilities/
), чтобы определить, решены ли проблемы.
Полезность записей об ошибках ограничена двумя способами. Во-первых, настоящие негативы нельзя отличить от неизвестных: если в поле не указано «cpu_meltdown», вы не можете знать (только из поля), означает ли это, что ядро не знает о Meltdown, или что ваш процессор не подвержен влиянию Meltdown. Во-вторых, обнаружение может быть слишком упрощенным; из-за осторожности он может сообщить, что ваш процессор уязвим, когда это не так. Поскольку «обнаружение» основано на таблицах, его точность зависит от того, какую версию ядра вы используете.
В случае с ошибками Meltdown и Spectre процесс обнаружения, который передает значения, /proc/cpuinfo
работает на x86 следующим образом :