> Hello QEMU Community! > > Over the past few months the Hyper-V team at Microsoft has been working hard > on > a new user-mode API for our hypervisor that will be released as part of the > upcoming SDK. This new API adds user-mode capabilities to create and manage > partitions at the hypervisor level, configure memory mappings for the > partition, and create and control execution of virtual processors. > > With this new API we are now able to bring our hypervisor to the QEMU > community! The following patches implement the Windows Hypervisor Platform > accelerator (WHPX) for QEMU on Windows 10 hosts. > > When compiling QEMU for x86_64 passing the --enable-whpx flag will compile > the accelerator for use. At runtime using the '-accel whpx' should see a > significant performance improvement over emulation, much like when using > 'hax' on Windows. > > Over the next few days the pre-release version of the documentation for this > new API will be visible at https://docs.microsoft.com/en-us/virtualization > under > the 'Windows Hypervisor Platform' section. Here you will see the > requirements, API, and examples.
That's great! Accelerator galore. :) >From a quick skim they patches seem to be generally pretty good! I have a few >quick question on a couple features that seem to be missing: - an important missing feature is support for CPU models (e.g. "-cpu Haswell"). Code for that was added recently for Hypervisor.framework and you should be able to copy some of it and then more for your CPUID intercept. However, the question I have is: what interfaces does WHPX support to query the hypervisor's CPUID capabilities? - is dirty memory support available? The log_sync callback seems a bit incomplete :) If it's not, VGA output probably will not work. - I might have missed this because the relevant code is quite repetitive - what about get/set of XSAVE areas? If either this or dirty memory is not present, it's probably best to block migration (grep for migration_blockers). Also, what versions of Windows will support WHPX? Thanks, Paolo > Thank you for your feedback. > > Justin Terry (VM) (4): > Add the Windows Hypervisor Platform accelerator. > Add the WHPX vcpu API > Introduce the WHPX impl > Add the WHPX acceleration enlightenments > > accel/stubs/Makefile.objs | 9 +- > accel/stubs/whpx-stub.c | 48 ++ > configure | 48 +- > cpus.c | 66 ++- > include/sysemu/hw_accel.h | 13 + > include/sysemu/whpx.h | 40 ++ > qemu-options.hx | 8 +- > target/i386/Makefile.objs | 1 + > target/i386/helper.c | 2 +- > target/i386/whpx-all.c | 1395 > +++++++++++++++++++++++++++++++++++++++++++++ > 10 files changed, 1619 insertions(+), 11 deletions(-) > create mode 100644 accel/stubs/whpx-stub.c > create mode 100644 include/sysemu/whpx.h > create mode 100644 target/i386/whpx-all.c > > -- > 2.7.4 > >