Wydanie emulatora QEMU 4.1

Przesłane przez wydanie projektu QEMU 4.1. Jako emulator QEMU pozwala na uruchomienie programu skompilowanego dla jednej platformy sprzętowej na systemie o zupełnie innej architekturze, np. uruchomienie aplikacji ARM na komputerze PC zgodnym z x86. W trybie wirtualizacji w QEMU wydajność wykonywania kodu w izolowanym środowisku jest zbliżona do systemu natywnego dzięki bezpośredniemu wykonywaniu instrukcji na procesorze oraz zastosowaniu hypervisora ​​Xen lub modułu KVM.

Projekt został pierwotnie stworzony przez Fabrice'a Bellarda, aby umożliwić uruchamianie plików wykonywalnych Linuksa zbudowanych dla platformy x86 na architekturach innych niż x86. Przez lata rozwoju dodano pełną obsługę emulacji dla 14 architektur sprzętowych, liczba emulowanych urządzeń sprzętowych przekroczyła 400. W ramach przygotowań do wersji 4.1 dokonano ponad 2000 zmian od 276 programistów.

Klucz ulepszeniadodano w QEMU 4.1:

  • Do emulatora architektury x86 dodano obsługę modeli procesorów Hygon Dhyana i Intel SnowRidge. Dodano emulację rozszerzenia RDRAND (sprzętowy generator liczb pseudolosowych). Dodano flagi
    md-clear i mds-no do kontrolowania ochrony przed atakami MDS (Próbkowanie danych mikroarchitektury) na procesorach Intel. Dodano możliwość określenia topologii układów scalonych za pomocą flagi „-smp…,dies=”. Wersjonowanie zostało zaimplementowane dla wszystkich modeli procesorów x86;

  • Sterownik bloku SSH został przeniesiony z użycia libssh2 na libssz;
  • Sterownik virtio-gpu (wirtualny procesor graficzny opracowany w ramach projektu Virgil) dodano obsługę przenoszenia operacji renderowania 2D/3D do zewnętrznego procesu użytkownika vhost (na przykład vhost-user-gpu);
  • Emulator architektury ARM dodał obsługę rozszerzenia ARMv8.5-RNG służącego do generowania liczb pseudolosowych. Zaimplementowano obsługę emulacji FPU dla układów z rodziny Cortex-M i rozwiązano problemy z emulacją FPU dla Cortex-R5F. Zaproponowano nowy system ustawiania opcji kompilacji, zaprojektowany w stylu Kconfig. Dla SoC Exynos4210 dodano obsługę kontrolerów PL330 DMA;
  • Emulator architektury MIPS ulepszył obsługę instrukcji MSA ASE podczas korzystania z kolejności bajtów typu big-endian i dostosował obsługę dzielenia przez zero do sprzętu referencyjnego. Zwiększono wydajność emulacji instrukcji MSA do obliczeń liczb całkowitych i operacji permutacji;
  • Emulator architektury PowerPC obsługuje teraz przekazywanie do procesorów graficznych NVIDIA V100/NVLink2 przy użyciu VFIO. W przypadku pserie zaimplementowano przyspieszenie emulacji kontrolera przerwań XIVE i dodano obsługę podłączania mostów PCI na gorąco. Dokonano optymalizacji emulacji instrukcji wektorowych (Altivec/VSX);
  • Do emulatora architektury RISC-V dodano nowy model sprzętu – „spike”. Dodano obsługę ISA 1.11.0. Udoskonalono 32-bitowe wywołanie systemowe ABI, udoskonalono obsługę nieprawidłowych instrukcji i udoskonalono wbudowany debugger. Dodano obsługę topologii procesora w drzewie urządzeń;
  • Emulator architektury s390 dodał obsługę emulacji wszystkich instrukcji wektorowych z grupy „Vector Facility” oraz dodał dodatkowe elementy do obsługi systemów gen15 (w tym dodano obsługę funkcji przerywania kolejki AP dla vfio-ap). Zaimplementowano obsługę BIOS-u przy uruchamianiu z ECKD DASD powiązanego z systemem gościa poprzez vfio-ccw;
  • W emulatorze architektury SPARC dla systemów sun4m rozwiązano problemy z użyciem flagi „-vga none” dla OpenBIOS;
  • Emulator procesora z rodziny Tensilica Xtensa zawiera opcje MPU (jednostki ochrony pamięci) i wyłącznego dostępu;
  • Do polecenia „qemu-img Convert” dodano opcję „-salvage”, aby wyłączyć awarię procesu konwersji obrazu w przypadku błędów we/wy (można na przykład użyć do przywrócenia częściowo uszkodzonych plików qcow2). W zespole
    „qemu-img rebase” działa, gdy nie utworzono jeszcze pliku kopii zapasowej dla pliku wejściowego;

  • Dodano możliwość przekierowywania danych wyjściowych zorganizowanych przy użyciu technologii „semihosting” (pozwala emulowanemu urządzeniu używać stdout, stderr i stdin do tworzenia plików po stronie hosta) do zaplecza chardev („-semihosting-config Enable=on,target=native ,chardev=[identyfikator]");
  • Dodano obsługę podformatu seSparse w trybie tylko do odczytu w sterowniku blokowym VMDK;
  • Dodano obsługę kontrolera SiFive GPIO w sterowniku emulacji GPIO.

Źródło: opennet.ru

Dodaj komentarz