Diff for /wikisrc/users/kamil/qemu.mdwn between versions 1.1 and 1.4

version 1.1, 2018/05/27 09:32:14 version 1.4, 2019/01/30 02:07:44
Line 63  docs           | build documentation     Line 63  docs           | build documentation    
 guest-agent    | build the QEMU Guest Agent                         | unknown, probably broken  guest-agent    | build the QEMU Guest Agent                         | unknown, probably broken
 guest-agent-msi| build guest agent Windows MSI installation package | unknown, probably broken  guest-agent-msi| build guest agent Windows MSI installation package | unknown, probably broken
 pie            | Position Independent Executables                   | should work  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-tcg      | TCG debugging (default is disabled)                | should work
 debug-info     | debugging information                              | should work  debug-info     | debugging information                              | should work
 sparse         | sparse checker                                     | should work  sparse         | sparse checker                                     | should work
Line 91  membarrier     | membarrier system call  Line 91  membarrier     | membarrier system call 
 fdt            | fdt device tree                                    | unknown, should work  fdt            | fdt device tree                                    | unknown, should work
 bluez          | bluez stack connectivity                           | unknown  bluez          | bluez stack connectivity                           | unknown
 kvm            | KVM acceleration support                           | N/A , Linux specific kernel APIs required in userland  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  hvf            | Hypervisor.framework acceleration support          | not ported, Darwin specific
 whpx           | Windows Hypervisor Platform acceleration support   | N/A  whpx           | Windows Hypervisor Platform acceleration support   | N/A
 rdma           | Enable RDMA-based migration and PVRDMA support     | unknown, probably not supported  rdma           | Enable RDMA-based migration and PVRDMA support     | unknown, probably not supported
Line 141  capstone       | capstone disassembler s Line 141  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 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).  > 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  2. DPDK
   
 > DPDK is a set of libraries and drivers for fast packet processing.  > 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  3. The ultimate CPU emulator
   
 > Unicorn is a lightweight multi-platform, multi-architecture CPU emulator framework.   > 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  ## Prioritized tasks
   
Line 162  https://www.unicorn-engine.org/ Line 162  https://www.unicorn-engine.org/
 2. Make QEMU PaX MPROTECT safe.  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.  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  

Removed from v.1.1  
changed lines
  Added in v.1.4


CVSweb for NetBSD wikisrc <wikimaster@NetBSD.org> software: FreeBSD-CVSweb