FreeBSD Status Report

Report Entry

Поддержка FRED для amd64

Контакт: Konstantin Belousov <kib@FreeBSD.org>

Реализована поддержка функции FRED (Flexible Return and Event Delivery — гибкое возвращение и доставка событий) для очень современных платформ amd64. FRED представляет собой полную переработку аппаратного интерфейса для сообщения операционной системе об исключениях, прерываниях и системных вызовах, а также способа, которым операционная система возвращает управление из обработчика прерванному коду. Целью разработки FRED было избавиться от слоёв функций совместимости и ошибок, накопившихся в существующем способе, назовём его доставкой событий на основе IDT.

Спецификация FRED теперь включена в Intel SDM редакции 90. Похоже, что AMD также планирует предоставить FRED в некоторых будущих реализациях.

Таким образом, поддержка FRED требует нового пути кода для обработчиков событий. Хорошая структурированность FRED позволяет использовать минимальные trampoline-части на ассемблере, перенося бОльшую часть диспетчеризации в код на C.

Реализация обработчика FRED была относительно простой и потребовала гораздо меньше времени, чем я изначально предполагал. Это показывает, насколько хорош и естественен предлагаемый интерфейс.

На данный момент тестирование проводилось только на эмуляторе Simics. FRED должен поддерживаться недавно выпущенными процессорами Intel Panther Lake, но у меня нет доступа к реальному оборудованию.

Спонсор: Фонд FreeBSD


Последнее изменение: 27 июля 2026 г. от Vladlen Popolitov