qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Wei Liu <liuwe@linux.microsoft.com>
To: qemu-devel@nongnu.org
Cc: wei.liu@kernel.org, dirty@apple.com, rbolshakov@ddn.com,
	phil@philjordan.eu, jinankjain@linux.microsoft.com,
	liuwe@microsoft.com, muislam@microsoft.com,
	ziqiaozhou@microsoft.com, mukeshrathor@microsoft.com,
	magnuskulke@microsoft.com, prapal@microsoft.com,
	jpiotrowski@microsoft.com, deviv@microsoft.com,
	Wei Liu <liuwe@linux.microsoft.com>
Subject: [PATCH v2 00/14] Factor out HVF's instruction emulator
Date: Fri,  7 Mar 2025 11:55:11 -0800	[thread overview]
Message-ID: <1741377325-28175-1-git-send-email-liuwe@linux.microsoft.com> (raw)

Hi,

Microsoft's Linux Systems Group developed a Linux driver for the Microsoft
Hypervisor (MSHV for short). The driver is being upstreamed. The first
supported VMM is Cloud Hypervisor. We want to add QEMU as the second supported
VMM.

The plan is to write an mshv accelerator in QEMU. The accelerator is still in
the works.

MSHV doesn't emulate instructions. VMMs are supposed to bring their own
instruction emulator. The path we've chosen is to reuse what's already in QEMU.
The instruction emulator in HVF looks good for what we need.

This patch series makes the instruction emulator in HVF a common
component for the i386 target. It removes HVF specific code by using a
set of hooks. The new incoming MSHV accelerator will implement the
hooks, and where necessary, enhance the emulator and / or add new hooks.

The patches have been lightly tested by running a Linux VM on an Intel-based
Mac. 

Thanks,
Wei.

Changes in v2:
1. Address comments from Paolo on variable and directory names.
2. Rebase and drop the already applied patches.
3. Add a new entry in MAINTAINERS.

Wei Liu (14):
  target/i386/hvf: introduce x86_emul_ops
  target/i386/hvf: remove HVF specific calls from x86_decode.c
  target/i386/hvf: provide and use handle_io in emul_ops
  target/i386: rename hvf_mmio_buf to emu_mmio_buf
  target/i386/hvf: use emul_ops->read_mem in x86_emu.c
  taret/i386/hvf: provide and use write_mem in emul_ops
  target/i386/hvf: provide and use simulate_{wrmsr,rdmsr} in emul_ops
  target/i386: rename lazy flags field and its type
  target/i386/hvf: drop unused headers
  target/i386/hvf: rename some include guards
  target/i386: add a directory for x86 instruction emulator
  target/i386/emulate: add a panic.h
  target/i386: move x86 instruction emulator out of hvf
  MAINTAINERS: add an entry for the x86 instruction emulator

 MAINTAINERS                               |  8 +++
 target/i386/cpu.h                         |  8 +--
 target/i386/emulate/meson.build           |  5 ++
 target/i386/emulate/panic.h               | 45 ++++++++++++++++
 target/i386/{hvf => emulate}/x86.h        |  4 +-
 target/i386/{hvf => emulate}/x86_decode.c | 22 +++-----
 target/i386/{hvf => emulate}/x86_decode.h |  4 +-
 target/i386/{hvf => emulate}/x86_emu.c    | 62 +++++++++++------------
 target/i386/{hvf => emulate}/x86_emu.h    | 15 +++++-
 target/i386/{hvf => emulate}/x86_flags.c  | 56 ++++++++++----------
 target/i386/{hvf => emulate}/x86_flags.h  |  6 +--
 target/i386/hvf/hvf-i386.h                |  4 +-
 target/i386/hvf/hvf.c                     | 57 +++++++++++++++------
 target/i386/hvf/meson.build               |  3 --
 target/i386/hvf/vmx.h                     |  2 +-
 target/i386/hvf/x86.c                     |  4 +-
 target/i386/hvf/x86_cpuid.c               |  2 +-
 target/i386/hvf/x86_descr.h               |  2 +-
 target/i386/hvf/x86_mmu.c                 |  2 +-
 target/i386/hvf/x86_task.c                |  6 +--
 target/i386/hvf/x86hvf.c                  |  2 +-
 target/i386/meson.build                   |  1 +
 22 files changed, 203 insertions(+), 117 deletions(-)
 create mode 100644 target/i386/emulate/meson.build
 create mode 100644 target/i386/emulate/panic.h
 rename target/i386/{hvf => emulate}/x86.h (99%)
 rename target/i386/{hvf => emulate}/x86_decode.c (99%)
 rename target/i386/{hvf => emulate}/x86_decode.h (99%)
 rename target/i386/{hvf => emulate}/x86_emu.c (95%)
 rename target/i386/{hvf => emulate}/x86_emu.h (75%)
 rename target/i386/{hvf => emulate}/x86_flags.c (83%)
 rename target/i386/{hvf => emulate}/x86_flags.h (97%)

-- 
2.47.2



             reply	other threads:[~2025-03-07 19:57 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-03-07 19:55 Wei Liu [this message]
2025-03-07 19:55 ` [PATCH v2 01/14] target/i386/hvf: introduce x86_emul_ops Wei Liu
2025-03-07 19:55 ` [PATCH v2 02/14] target/i386/hvf: remove HVF specific calls from x86_decode.c Wei Liu
2025-03-07 19:55 ` [PATCH v2 03/14] target/i386/hvf: provide and use handle_io in emul_ops Wei Liu
2025-03-07 19:55 ` [PATCH v2 04/14] target/i386: rename hvf_mmio_buf to emu_mmio_buf Wei Liu
2025-03-07 19:55 ` [PATCH v2 05/14] target/i386/hvf: use emul_ops->read_mem in x86_emu.c Wei Liu
2025-03-07 19:55 ` [PATCH v2 06/14] taret/i386/hvf: provide and use write_mem in emul_ops Wei Liu
2025-03-07 19:55 ` [PATCH v2 07/14] target/i386/hvf: provide and use simulate_{wrmsr, rdmsr} " Wei Liu
2025-03-07 19:55 ` [PATCH v2 08/14] target/i386: rename lazy flags field and its type Wei Liu
2025-03-07 19:55 ` [PATCH v2 09/14] target/i386/hvf: drop unused headers Wei Liu
2025-03-07 19:55 ` [PATCH v2 10/14] target/i386/hvf: rename some include guards Wei Liu
2025-03-07 19:55 ` [PATCH v2 11/14] target/i386: add a directory for x86 instruction emulator Wei Liu
2025-03-07 19:55 ` [PATCH v2 12/14] target/i386/emulate: add a panic.h Wei Liu
2025-03-07 19:55 ` [PATCH v2 13/14] target/i386: move x86 instruction emulator out of hvf Wei Liu
2025-03-07 19:55 ` [PATCH v2 14/14] MAINTAINERS: add an entry for the x86 instruction emulator Wei Liu
2025-03-14 19:01 ` [PATCH v2 00/14] Factor out HVF's " Wei Liu

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=1741377325-28175-1-git-send-email-liuwe@linux.microsoft.com \
    --to=liuwe@linux.microsoft.com \
    --cc=deviv@microsoft.com \
    --cc=dirty@apple.com \
    --cc=jinankjain@linux.microsoft.com \
    --cc=jpiotrowski@microsoft.com \
    --cc=liuwe@microsoft.com \
    --cc=magnuskulke@microsoft.com \
    --cc=muislam@microsoft.com \
    --cc=mukeshrathor@microsoft.com \
    --cc=phil@philjordan.eu \
    --cc=prapal@microsoft.com \
    --cc=qemu-devel@nongnu.org \
    --cc=rbolshakov@ddn.com \
    --cc=wei.liu@kernel.org \
    --cc=ziqiaozhou@microsoft.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).