Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-doc
Path: blob/main/website/content/ru/status/report-2026-01-2026-03/fred.adoc
18096 views
=== Поддержка FRED для amd64

Ссылки: +
link:https://www.intel.com/content/www/us/en/content-details/819481/flexible-return-and-event-delivery-fred-specification.html[Спецификация Intel FRED до SDM] URL: link:https://www.intel.com/content/www/us/en/content-details/819481/flexible-return-and-event-delivery-fred-specification.html[]
+ link:https://reviews.freebsd.org/D55829[D55829 amd64: поддержка FRED] URL: link:https://reviews.freebsd.org/D55829[]

Контакт: Konstantin Belousov <[email protected]>

Реализована поддержка функции 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

//
// The FreeBSD Russian Documentation Project
//
// Original EN revision (18.04.2026): 3b65d32cc06273c117c66bb016b50269382540aa
//