qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Paolo Bonzini <pbonzini@redhat.com>
To: Sergio Andres Gomez Del Real <sergio.g.delreal@gmail.com>,
	qemu-devel@nongnu.org
Cc: stefanha@gmail.com
Subject: Re: [Qemu-devel] [PATCH v4 00/14] add support for Hypervisor.framework in QEMU
Date: Tue, 3 Oct 2017 15:47:06 +0200	[thread overview]
Message-ID: <be749b52-b0f9-64ef-bf9d-606df0609a30@redhat.com> (raw)
In-Reply-To: <20170913090522.4022-1-Sergio.G.DelReal@gmail.com>

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
> 

      parent reply	other threads:[~2017-10-03 13:47 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-09-13  9:05 [Qemu-devel] [PATCH v4 00/14] add support for Hypervisor.framework in QEMU Sergio Andres Gomez Del Real
2017-09-13  9:05 ` [Qemu-devel] [PATCH v4 01/14] hvf: add support for Hypervisor.framework in the configure script Sergio Andres Gomez Del Real
2017-09-13  9:05 ` [Qemu-devel] [PATCH v4 02/14] hvf: add code base from Google's QEMU repository Sergio Andres Gomez Del Real
2017-09-13  9:05 ` [Qemu-devel] [PATCH v4 03/14] hvf: fix licensing issues; isolate task handling code (GPL v2-only) Sergio Andres Gomez Del Real
2017-09-13  9:05 ` [Qemu-devel] [PATCH v4 04/14] hvf: run hvf code through checkpatch.pl and fix style issues Sergio Andres Gomez Del Real
2017-09-13  9:05 ` [Qemu-devel] [PATCH v4 05/14] hvf: add code to cpus.c and do refactoring in preparation for compiling Sergio Andres Gomez Del Real
2017-09-13  9:05 ` [Qemu-devel] [PATCH v4 07/14] apic: add function to apic that will be used by hvf Sergio Andres Gomez Del Real
2017-09-13  9:05 ` [Qemu-devel] [PATCH v4 08/14] hvf: add compilation rules to Makefile.objs Sergio Andres Gomez Del Real
2017-09-13  9:05 ` [Qemu-devel] [PATCH v4 09/14] hvf: use new helper functions for put/get xsave Sergio Andres Gomez Del Real
2017-09-13  9:05 ` [Qemu-devel] [PATCH v4 10/14] hvf: implement hvf_get_supported_cpuid Sergio Andres Gomez Del Real
2017-09-13  9:05 ` [Qemu-devel] [PATCH v4 11/14] hvf: refactor cpuid code Sergio Andres Gomez Del Real
2017-09-13  9:05 ` [Qemu-devel] [PATCH v4 12/14] hvf: implement vga dirty page tracking Sergio Andres Gomez Del Real
2017-09-13  9:05 ` [Qemu-devel] [PATCH v4 13/14] hvf: refactor event injection code for hvf Sergio Andres Gomez Del Real
2017-09-13  9:05 ` [Qemu-devel] [PATCH v4 14/14] hvf: inject General Protection Fault when vmexit through vmcall Sergio Andres Gomez Del Real
2017-10-03 13:47 ` Paolo Bonzini [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=be749b52-b0f9-64ef-bf9d-606df0609a30@redhat.com \
    --to=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=sergio.g.delreal@gmail.com \
    --cc=stefanha@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).