Выпуск эмулятора QEMU 8.1

Представлен релиз проекта QEMU 8.1. В качестве эмулятора QEMU позволяет запустить программу, собранную для одной аппаратной платформы на системе с совершенно иной архитектурой, например, выполнить приложение для ARM на x86-совместимом ПК. В режиме виртуализации в QEMU производительность выполнения кода в изолированном окружении близка к аппаратной системе за счёт прямого выполнения инструкций на CPU и задействования гипервизора Xen или модуля KVM.

Изначально проект был создан Фабрисом Белларом (Fabrice Bellard) с целью обеспечения возможности запуска собранных для платформы x86 исполняемых файлов Linux на архитектурах, отличных от x86. За годы разработки была добавлена поддержка полной эмуляции для 14 аппаратных архитектур, число эмулируемых аппаратных устройств превысило 400. При подготовке версии 8.1 внесено более 2900 изменений от 250 разработчиков.

Ключевые улучшения, добавленные в QEMU 8.1:

  • В VFIO (Virtual Function I/O) улучшена и стабилизирована поддержка live-миграции. Добавлена поддержка передачи данных устройств VFIO при работающей виртуальной машине. Live-миграция в VFIO больше не позиционируется как экспериментальная возможность.
  • Добавлен новый звуковой бэкенд (“-audiodev pipewire”), работающий с мультимедийным сервером PipeWire.
  • Расширены возможности модулей virtio. В cryptodev-vhost-user добавлена поддержка асимметричного шифрования. В virtio-blk реализована эмуляция зонированных устройств. В virtio-mem добавлена поддержка горячего отключения устройств и миграции в режиме “x-ignore-shared”. Добавлено новое устройство vhost-user для VIRTIO SCMI.
  • В графический интерфейс пользователя на базе GTK добавлена поддержка мультитач.
  • В эмуляторах архитектур ARM, PowerPC и RISC-V реализовано использование инструкций для ускорения шифрования AES, предоставляемых процессором хост-системы.
  • В эмуляторе шины PCIe предложены новые команды QMP (QEMU Machine Protocol) для подстановки событий, связанных с CXL (Compute Express Link), DRAM и модулями памяти.
  • В эмуляторе архитектуры x86 добавлена поддержка процессоров Intel Xeon на базе микроархитектуры Granite Rapids. По умолчанию задействованы структуры в формате SMBIOS 3.0.
  • В эмуляторе архитектуры ARM реализована поддержка платы Banana Pi BPI-M2 Ultra (bpim2u) и CPU Cortex Neoverse-V1 (neoverse-v1). Добавлена поддержка процессорных расширений FEAT_PAN3 (SCTLR_ELx.EPAN), FEAT_LSE2 (Large System Extensions v2) и FEAT_RME (Realm Management Extensions).
  • В расширениях для виртуальных машин KVM предоставлена возможность использования тегов памяти в гостевых системах, при работе хост-системы на процессорах ARM, поддерживающих расширение ARMv8.5 MTE (MemTag, Memory Tagging Extension). MTE позволяет привязать теги к каждой операции выделения памяти и организовать при доступе к памяти проверку указателя, который должен быть связан с корректным тегом.
  • В эмуляторе процессоров Qualcomm Hexagon добавлена поддержка инструкций v68/v73 scalar и v68/v69 HVX. Для HVX реализована поддержка gdbstub для удалённой отладки в GDB.
  • В эмуляторе архитектуры MIPS реализована поддержка процессоров Ingenic XBurstR1 и XBurstR2, а также процессорных инструкций MXU.
  • В классическом генераторе кода TCG для архитектуры PowerPC добавлена поддержка SMT (Simultaneous multithreading), позволяющая на системах pseries и powernv выполнять до 8 потоков на каждом процессорном ядре.
  • В эмуляторе архитектуры PowerPC добавлена поддержка эмуляции модели CPU Power9 DD2.2, а также реализована возможность профилирования CPU POWER.
  • В эмуляторе архитектуры RISC-V добавлена поддержка CPU Veyron V1, а также наборов процессорных инструкций (ISA) BF16 (Zfbfmin/Zvfbfmin/Zvfbfwma) и Zfa. Реализована возможность дизассемблирования инструкций Zcm*, Z*inx ,XVentanaCondOps и Xthead. Улучшена поддержка гипервизора KVM.
  • В эмуляторе архитектуры s390 решены проблемы при эмуляции инструкций LDER, LCBB, LOCFHR, MXDB, MXDBR, EPSW, MDEB, MDEBR, MVCRL, LRA, CKSM, CLM, ICM, MC, STIDP, EXECUTE и CLGEBR(A).
  • В эмуляторе архитектуры SPARC осуществлён переход на использование функции tcg_gen_lookup_and_goto_ptr(), позволившей повысить производительность.
  • В эмуляторе Tricore добавлена поддержка процессоров TC37x, использующих версию 1.6.2 набора процессорных инструкций. Добавлена поддержка эмуляции инструкций POPCNT.W, LHA, CRC32L.W, CRC32.B, SHUFFLE, SYSCALL и DISABLE.
  • Улучшена эмуляция сетевых адаптеров e1000e и igb. Добавлена эмуляция контроллера CANFD.
  • В команде guest-exec в параметре capture-output реализована поддержка значений “stdout”, “stderr” и “merged”.
  • В сборочном сценарии configure реализована опция “–enable-download” для поиска и загрузки недостающих сборочных зависимостей на языке Python.
  • Повышены требования к версиям Python (3.8+) и Xen (4.7.1+).
Release. Ссылка here.