[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v4 00/14] add support for Hypervisor.framework i
From: |
Paolo Bonzini |
Subject: |
Re: [Qemu-devel] [PATCH v4 00/14] add support for Hypervisor.framework in QEMU |
Date: |
Tue, 3 Oct 2017 15:47:06 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.3.0 |
On 13/09/2017 11:05, Sergio Andres Gomez Del Real wrote:
> ================
> Changes in v4:
> (1) Use g_new0 instead of g_malloc.
> (2) hvf TODO's in cpu.c explained: in-kernel irqchip.
> (3) Introduce ins_len field in patch where actually used.
> (4) Remove outdated comment "/* Definition of hvf_state is here */"
> (5) Treat vcpu_dirty as boolean throughout.
> (6) checkpatch.pl patch only does styling changes.
> (8) Add comment documenting meaning of -1 returned by
> apic_get_highest_priority_irr.
> (9) Add TODO to move hvf's synchronization functions inside
> cpu_synchronize_*, along with kvm's and hax's.
> ================
Thanks Sergio, this is a good start. I have done a few more cleanup and
sent my patches which, however, I could not test. In any case, it seems
feasible to get this done for 2.11!
Regards,
Paolo
> ================
> Changes in v3:
> (1) Fixed licensing issues in patch 3.
> (2) Revert to late adding of compilation rules in Makefile.objs (patch 8/14);
> files aren't ready to compile earlier.
> (3) Make a single patch just for fixing style (patch 4/14).
> (4) Fix data type for hvf_fd field.
> (5) Add comment that return value of -1 in apic function added in 7/14 means
> "no interrupt".
> ================
>
> ================
> Changes in v2:
> (1) Removed legacy option "-enable-hvf" in favor of "-M accel=hvf"
> (2) Added missing copyright headers; replace fprintfs for error_report;
> improved commit description.
> (3) Moved patch that adds compilation rules in Makefile.objs right after
> the patch that adds the new files from Google's repo.
> (4) Removed conditional macros from cpus.c and cpu.c
> (5) Moved patch that fixes coding style to patch # 3
> (6) Fix commit message in apic patch
> (7) Squash some commits to avoid code churn
> ================
>
> The following patchset adds to QEMU the supporting for macOS's native
> hypervisor, Hypervisor.framework (hvf). The code base is taken from
> Google's Android emulator at
> https://android.googlesource.com/platform/external/qemu/+/emu-master-dev.
> Notably missing is support for live migration.
>
> Apart from general code refactoring, some additional features were
> implemented:
> retrieve the set of features supported by host cpu and hvf (cpuid);
> dirty page tracking for VGA memory area; reimplementation of the event
> injection mechanism to allow injection of exceptions during vmexits, which is
> exemplified by the injection of a GP fault when the guest vmexits due to
> execution of the vmcall instruction; changing the emulator's use of CPUState
> structure in favor of CPUX86State, so as to in the future remove data
> structures
> that are uselessly specific to hvf and unified some of the state between
> kvm/tcg
> and hvf.
> Some features initially planned to implement that didn't make it include:
> page fault handling in the emulator and implementing the dummy_signal to
> handle
> the SIG_IPI signal without race conditions. Hopefully these can be implemented
> in the near future.
> Event injection was tested through the eventinj kvm test. The latest Debian
> and
> Damn Small Linux images were executed, although by now ways it was an
> exhaustive testing.
>
> Sergio Andres Gomez Del Real (14):
> hvf: add support for Hypervisor.framework in the configure script
> hvf: add code base from Google's QEMU repository
> hvf: fix licensing issues; isolate task handling code (GPL v2-only)
> hvf: run hvf code through checkpatch.pl and fix style issues
> hvf: add code to cpus.c and do refactoring in preparation for
> compiling
> hvf: handle fields from CPUState and CPUX86State
> apic: add function to apic that will be used by hvf
> hvf: add compilation rules to Makefile.objs
> hvf: use new helper functions for put/get xsave
> hvf: implement hvf_get_supported_cpuid
> hvf: refactor cpuid code
> hvf: implement vga dirty page tracking
> hvf: refactor event injection code for hvf
> hvf: inject General Protection Fault when vmexit through vmcall
>
> configure | 38 +
> cpus.c | 89 ++
> hw/intc/apic.c | 12 +
> include/hw/i386/apic.h | 1 +
> include/qom/cpu.h | 2 +
> include/sysemu/hvf.h | 181 +++
> qemu-options.hx | 10 +-
> target/i386/Makefile.objs | 1 +
> target/i386/cpu-qom.h | 4 +-
> target/i386/cpu.c | 80 +-
> target/i386/cpu.h | 34 +-
> target/i386/hvf-all.c | 963 +++++++++++++++
> target/i386/hvf-i386.h | 50 +
> target/i386/hvf-utils/Makefile.objs | 1 +
> target/i386/hvf-utils/README.md | 7 +
> target/i386/hvf-utils/vmcs.h | 371 ++++++
> target/i386/hvf-utils/vmx.h | 222 ++++
> target/i386/hvf-utils/x86.c | 184 +++
> target/i386/hvf-utils/x86.h | 394 +++++++
> target/i386/hvf-utils/x86_cpuid.c | 417 +++++++
> target/i386/hvf-utils/x86_cpuid.h | 52 +
> target/i386/hvf-utils/x86_decode.c | 2186
> +++++++++++++++++++++++++++++++++++
> target/i386/hvf-utils/x86_decode.h | 325 ++++++
> target/i386/hvf-utils/x86_descr.c | 124 ++
> target/i386/hvf-utils/x86_descr.h | 55 +
> target/i386/hvf-utils/x86_emu.c | 1536 ++++++++++++++++++++++++
> target/i386/hvf-utils/x86_emu.h | 49 +
> target/i386/hvf-utils/x86_flags.c | 333 ++++++
> target/i386/hvf-utils/x86_flags.h | 243 ++++
> target/i386/hvf-utils/x86_gen.h | 53 +
> target/i386/hvf-utils/x86_mmu.c | 273 +++++
> target/i386/hvf-utils/x86_mmu.h | 45 +
> target/i386/hvf-utils/x86_task.c | 201 ++++
> target/i386/hvf-utils/x86_task.h | 18 +
> target/i386/hvf-utils/x86hvf.c | 463 ++++++++
> target/i386/hvf-utils/x86hvf.h | 39 +
> target/i386/kvm.c | 2 -
> 37 files changed, 9025 insertions(+), 33 deletions(-)
> create mode 100644 include/sysemu/hvf.h
> create mode 100644 target/i386/hvf-all.c
> create mode 100644 target/i386/hvf-i386.h
> create mode 100644 target/i386/hvf-utils/Makefile.objs
> create mode 100644 target/i386/hvf-utils/README.md
> create mode 100644 target/i386/hvf-utils/vmcs.h
> create mode 100644 target/i386/hvf-utils/vmx.h
> create mode 100644 target/i386/hvf-utils/x86.c
> create mode 100644 target/i386/hvf-utils/x86.h
> create mode 100644 target/i386/hvf-utils/x86_cpuid.c
> create mode 100644 target/i386/hvf-utils/x86_cpuid.h
> create mode 100644 target/i386/hvf-utils/x86_decode.c
> create mode 100644 target/i386/hvf-utils/x86_decode.h
> create mode 100644 target/i386/hvf-utils/x86_descr.c
> create mode 100644 target/i386/hvf-utils/x86_descr.h
> create mode 100644 target/i386/hvf-utils/x86_emu.c
> create mode 100644 target/i386/hvf-utils/x86_emu.h
> create mode 100644 target/i386/hvf-utils/x86_flags.c
> create mode 100644 target/i386/hvf-utils/x86_flags.h
> create mode 100644 target/i386/hvf-utils/x86_gen.h
> create mode 100644 target/i386/hvf-utils/x86_mmu.c
> create mode 100644 target/i386/hvf-utils/x86_mmu.h
> create mode 100644 target/i386/hvf-utils/x86_task.c
> create mode 100644 target/i386/hvf-utils/x86_task.h
> create mode 100644 target/i386/hvf-utils/x86hvf.c
> create mode 100644 target/i386/hvf-utils/x86hvf.h
>
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: [Qemu-devel] [PATCH v4 00/14] add support for Hypervisor.framework in QEMU,
Paolo Bonzini <=