--- wikisrc/users/kamil/qemu.mdwn 2018/05/27 09:32:14 1.1 +++ wikisrc/users/kamil/qemu.mdwn 2019/01/30 02:07:44 1.4 @@ -63,7 +63,7 @@ docs | build documentation guest-agent | build the QEMU Guest Agent | unknown, probably broken guest-agent-msi| build guest agent Windows MSI installation package | unknown, probably broken pie | Position Independent Executables | should work -modules | modules support | unknown, should work +modules | QEMU modules support (not kernel modules) | unknown, should work debug-tcg | TCG debugging (default is disabled) | should work debug-info | debugging information | should work sparse | sparse checker | should work @@ -91,7 +91,7 @@ membarrier | membarrier system call fdt | fdt device tree | unknown, should work bluez | bluez stack connectivity | unknown kvm | KVM acceleration support | N/A , Linux specific kernel APIs required in userland -hax | HAX acceleration support | not ported, Windows/Darwin specific as of today +hax | HAX acceleration support | mostly works, patches pending hvf | Hypervisor.framework acceleration support | not ported, Darwin specific whpx | Windows Hypervisor Platform acceleration support | N/A rdma | Enable RDMA-based migration and PVRDMA support | unknown, probably not supported @@ -141,19 +141,19 @@ capstone | capstone disassembler s > HQEMU is a retargetable and multi-threaded dynamic binary translator on multicores. It integrates QEMU and LLVM as its building blocks. The translator in the enhanced QEMU acts as a fast translator with low translation overhead. The optimization-intensive LLVM optimizer running on separate threads dynamically improves code for higher performance. With the hybrid QEMU+LLVM approach, HQEMU can achieve low translation overhead and good translated code quality. > HQEMU supports process-level emulation and full-system virtualization. It provides translation modes of running the QEMU translator and LLVM optimizer in one process, or running the LLVM optimizer as a stand-alone optimization server (version 0.13.0). -http://itanium.iis.sinica.edu.tw/hqemu/ +[http://itanium.iis.sinica.edu.tw/hqemu/](http://itanium.iis.sinica.edu.tw/hqemu/) 2. DPDK > DPDK is a set of libraries and drivers for fast packet processing. -https://dpdk.org/ +[https://dpdk.org/](https://dpdk.org/) 3. The ultimate CPU emulator > Unicorn is a lightweight multi-platform, multi-architecture CPU emulator framework. -https://www.unicorn-engine.org/ +[https://www.unicorn-engine.org/](https://www.unicorn-engine.org/) ## Prioritized tasks @@ -162,48 +162,3 @@ https://www.unicorn-engine.org/ 2. Make QEMU PaX MPROTECT safe. 3. Develop NetBSD USER emulation, attempt to either share the code with FreeBSD (bsd-user, old broken, downstream patches) or with Linux (linux-user, recent, actively maintained). Preferred approach is to share as much code with linux-user as possible, regardless of the state of bsd-user. - -4. Develop HAXM backend support for the NetBSD kernel. - -## HAXM hardware assisted virtualization - -Features: - - - Open Source - - HAXM is an Intel hardware assisted virtualization. - - HAXM supports up to 8 active VMs. - - HAXM supports up to 16 active VCPUs per VM. - - ioctl(2) based API with statically created devices (/dev/HAX, /dev/haxm_vm/vmXX, /dev/haxm_vm/haxm_vmXX_vcpuYY) - -HAXM porting for NetBSD rationale: - - - Relatively low cost (compared to alternatives) to get it aboard to the NetBSD kernel. - - Relatively non-intrusive (compared to alternatives like bhyve and KVM) - - Scratch but non-functional port for NetBSD is ready. - - Active (paid developers) upstream to maintain this - - Clean separation between kernel specific and independent parts (there are at least 2 backends: Darwin and Windows) - - QEMU frontend already exists, API is ioctl(2) based - - Good license (BSD-3-clause) for the kernel driver - - Tailored down for desktop users, initially prepared for Android developers - -HAXM shortcomings: - - - No AMD support - - Required relatively recent Intel CPU - - Not as flexible as KVM-like solutions for embedded or server usage - - Not necessarily ready (not tested) to run every OS in existence, there are known failures to execute some versions of the Linux kernel - -Current HAXM/NetBSD status: - - - The module builds and loads into the kernel (triggering a panic) - - Revisit the UVM APIs to ship all the needed features of sharing memory between user and kernel that is used by HAXM - -``` -https://github.com/krytarowski/haxm/tree/netbsd-1 - -$ cd netbsd && make -``` - -https://www.qemu.org/2017/11/22/haxm-usage-windows/ -https://software.intel.com/en-us/articles/intel-hardware-accelerated-execution-manager-intel-haxm -https://github.com/intel/haxm