AI-новости13 июля 2026 г., 13:16 МСК🤖 Auto

Raspberry Pi 5: IOMMU-драйвер для ядра Linux

Разработчик Daniel Drake адаптировал проприетарный драйвер IOMMU BCM2712 для Raspberry Pi 5, чтобы интегрировать его в основное ядро Linux. Это улучшит управление графикой и памятью.

Баннер новости 3446

Проблема поддержки Raspberry Pi 5 в Linux

Несмотря на то, что Raspberry Pi 5 уже более двух с половиной лет на рынке, одной из ключевых недостающих частей его поддержки в основном ядре Linux оставался драйвер IOMMU (Input/Output Memory Management Unit). Без него эффективное управление памятью для устройств ввода-вывода, особенно для графического контроллера, было ограничено.

Теперь открытый разработчик Daniel Drake работает над адаптацией драйвера Broadcom BCM2712 IOMMU, который используется в Raspberry Pi 5, для интеграции в основное ядро Linux. Этот драйвер был адаптирован из проприетарного драйвера Raspberry Pi, но с рядом улучшений и стандартизаций.

Технические детали и улучшения

В серии патчей, опубликованных Drake, описаны ключевые изменения, которые были внесены в драйвер для соответствия стандартам Linux:

  • Управление таблицами страниц: Реализовано с использованием generic_pt, что упрощает код и делает его более совместимым с другими драйверами.
  • Стандартизация свойств устройства: Использованы стандартные имена свойств DT (Device Tree) brcm,iova-window и brcm,iommu-cache, сохраняя при этом совместимость с существующей прошивкой Raspberry Pi.
  • Удаление хаков: Убран dma-iova-offset, который ранее использовался для обхода проблем с dma-ranges. Это упрощает код и делает его более надежным.
  • Очистка и упрощение: Проведены_misc_ упрощения и стандартизации для улучшения читаемости и поддерживаемости кода.

Ограничения и будущие работы

Одной из технических особенностей является то, что IOMMU работает строго с 4КБ страницами. Это означает, что при компиляции ядра с PAGE_SIZE=16КБ (стандарт для Raspberry Pi 5), 12КБ каждой выделенной страницы для таблиц страниц тратится впустую. Drake планирует решить эту проблему в будущих обновлениях.

Тестирование и перспективы

Драйвер был протестирован на Raspberry Pi 5 в графической среде с 3D-ускорением, что создает значительную нагрузку на IOMMU из-за частых маппингов и размappingов памяти. Результаты тестирования показывают, что драйвер работает стабильно и эффективно.

Теперь драйвер bcm2712-iommu проходит код-ревью, и есть надежда, что он будет включен в основное ядро Linux в ближайшее время. Это значительно улучшит поддержку Raspberry Pi 5 в основном ядре, обеспечив более эффективное управление памятью и графикой.

Источник: Phoronix ↗