• Sergio Andres Gomez Del Real's avatar
    i386: hvf: add code base from Google's QEMU repository · c97d6d2c
    Sergio Andres Gomez Del Real authored
    This file begins tracking the files that will be the code base for HVF
    support in QEMU. This code base is part of Google's QEMU version of
    their Android emulator, and can be found at
    This code is based on Veertu Inc's vdhh (Veertu Desktop Hosted
    Hypervisor), found at https://github.com/veertuinc/vdhh. Everything is
    appropriately licensed under GPL v2-or-later, except for the code inside
    x86_task.c and x86_task.h, which, deriving from KVM (the Linux kernel),
    is licensed GPL v2-only.
    This code base already implements a very great deal of functionality,
    although Google's version removed from Vertuu's the support for APIC
    page and hyperv-related stuff. According to the Android Emulator Release
    Notes, Revision 26.1.3 (August 2017), "Hypervisor.framework is now
    enabled by default on macOS for 32-bit x86 images to improve performance
    and macOS compatibility", although we better use with caution for, as the
    same Revision warns us, "If you experience issues with it specifically,
    please file a bug report...". The code hasn't seen much update in the
    last 5 months, so I think that we can further develop the code with
    occasional visiting Google's repository to see if there has been any
    On top of Google's code, the following changes were made:
    - add code to the configure script to support the --enable-hvf argument.
    If the OS is Darwin, it checks for presence of HVF in the system. The
    patch also adds strings related to HVF in the file qemu-options.hx.
    QEMU will only support the modern syntax style '-M accel=hvf' no enable
    hvf; the legacy '-enable-hvf' will not be supported.
    - fix styling issues
    - add glue code to cpus.c
    - move HVFX86EmulatorState field to CPUX86State, changing the
    the emulation functions to have a parameter with signature 'CPUX86State *'
    instead of 'CPUState *' so we don't have to get the 'env'.
    Signed-off-by: 's avatarSergio Andres Gomez Del Real <Sergio.G.DelReal@gmail.com>
    Message-Id: <20170913090522.4022-2-Sergio.G.DelReal@gmail.com>
    Message-Id: <20170913090522.4022-3-Sergio.G.DelReal@gmail.com>
    Message-Id: <20170913090522.4022-5-Sergio.G.DelReal@gmail.com>
    Message-Id: <20170913090522.4022-6-Sergio.G.DelReal@gmail.com>
    Message-Id: <20170905035457.3753-7-Sergio.G.DelReal@gmail.com>
    Signed-off-by: 's avatarPaolo Bonzini <pbonzini@redhat.com>
qemu-options.hx 168 KB