Випуск емулятора QEMU 4.1

представлений реліз проекту QEMU 4.1. Як емулятор QEMU дозволяє запустити програму, зібрану для однієї апаратної платформи, на системі з зовсім іншою архітектурою, наприклад, виконати додаток для ARM на x86-сумісному ПК. У режимі віртуалізації QEMU продуктивність виконання коду в ізольованому оточенні близька до нативної системи за рахунок прямого виконання інструкцій на CPU і залучення гіпервізора Xen або модуля KVM.

Спочатку проект був створений Фабрисом Белларом (Fabrice Bellard) з метою забезпечення можливості запуску зібраних для платформи x86 файлів Linux, що виконуються, на архітектурах, відмінних від x86. За роки розробки було додано підтримку повної емуляції для 14 апаратних архітектур, кількість емульованих апаратних пристроїв перевищила 400. Під час підготовки версії 4.1 внесено понад 2000 змін від 276 розробників.

Ключові поліпшення, додані в QEMU 4.1:

  • У емулятор архітектури x86 додано підтримку моделей CPU Hygon Dhyana та Intel SnowRidge. Додано емуляцію розширення RDRAND (апаратний генератор псевдовипадкових чисел). Додані прапори
    md-clear та mds-no для управління захистом від атак MDS (Microarchitectural Data Sampling) на процесори Intel. Додано можливість визначення топологій інтегральних схем за допомогою прапора "-smp...,dies=". Реалізовано версіонування всіх моделей CPU x86;

  • Блоковий драйвер SSH переведено з використання libssh2 на libsh;
  • У драйвер virtio-gpu (віртуальний GPU, що розвивається в рамках проекту Вергілій) додано підтримку виносу операцій малювання 2D/3D у зовнішній процес vhost-user (наприклад, vhost-user-gpu);
  • Емулятор архітектури ARM додає підтримку розширення ARMv8.5-RNG для генерації псевдовипадкових чисел. Реалізовано підтримку емуляції FPU для чіпів сімейства Cortex-M та вирішено проблеми з емуляцією FPU для Cortex-R5F. Запропоновано нову систему налаштування опцій збирання, оформлену в стилі Kconfig. Для SoC Exynos4210 додано підтримку DMA-контролерів PL330;
  • В емуляторі архітектури MIPS покращена підтримка інструкцій MSA ASE при використанні порядку байт big-endian і приведена у відповідність з еталонним обладнанням обробка випадків розподілу на нуль. Збільшено продуктивність емуляції інструкцій MSA для цілих обчислень та операцій перестановки;
  • В емуляторі архітектури PowerPC з'явилася підтримка прокидання до GPU NVIDIA V100/NVLink2 за допомогою VFIO. Для pseries реалізовано прискорення емуляції контролера переривань XIVE та додано підтримку гарячого підключення PCI мостів. Внесено оптимізацію в емуляцію векторних інструкцій (Altivec/VSX);
  • До емулятора архітектури RISC-V додано нову модель обладнання — «spike». Додано підтримку ISA 1.11.0. Покращено 32-розрядний ABI системних викликів, розширено обробку неприпустимих інструкцій та покращено вбудований відладчик. Додано підтримку топології CPU в device tree;
  • У емулятор архітектури s390 додано підтримку емуляції всіх векторних інструкцій групи «Vector Facility» та додано додаткові елементи для підтримки систем gen15 (у тому числі додано підтримку AP Queue Interruption Facility для vfio-ap). Реалізовано підтримку BIOS для завантаження з ECKD DASD, прив'язаного до гостьової системи через vfio-ccw;
  • В емуляторі архітектури SPARC для систем sun4m вирішено проблеми з використанням прапора "-vga none" для OpenBIOS;
  • В емуляторі процесорів сімейства Tensilica Xtensa реалізовано опції для MPU (memory protection unit) та ексклюзивного доступу;
  • У команду «qemu-img convert» додано опцію «—salvage» для відключення аварійного завершення роботи процесу перетворення образу у разі помилок вводу/виводу (наприклад, можна застосовувати для відновлення частково пошкоджених файлів qcow2). В команді
    qemu-img rebase забезпечена робота, коли для вхідного файлу поки не створено базовий (backing) файл;

  • Додана можливість перенаправлення виводу, організованого з використанням технології «semihosting» (дозволяє емульованому пристрої використовувати stdout, stderr і stdin для створення файлів на стороні хоста), в бекенд chardev («-semihosting-config enable=on,target=native,chardev=[ ID]»);
  • У блочному драйвері VMDK додана підтримка субформату seSparse у режимі лише для читання;
  • У драйвері емуляції GPIO додано підтримку GPIO-контролера SiFive.

Джерело: opennet.ru

Додати коментар або відгук