From: Sergio Lopez <slp@redhat.com>
To: qemu-devel@nongnu.org
Cc: ehabkost@redhat.com, Sergio Lopez <slp@redhat.com>,
mst@redhat.com, lersek@redhat.com, kraxel@redhat.com,
pbonzini@redhat.com, imammedo@redhat.com, sgarzare@redhat.com,
philmd@redhat.com, rth@twiddle.net
Subject: [PATCH v5 00/10] Introduce the microvm machine type
Date: Wed, 2 Oct 2019 13:30:53 +0200 [thread overview]
Message-ID: <20191002113103.45023-1-slp@redhat.com> (raw)
Microvm is a machine type inspired by Firecracker and constructed
after the its machine model.
It's a minimalist machine type without PCI nor ACPI support, designed
for short-lived guests. Microvm also establishes a baseline for
benchmarking and optimizing both QEMU and guest operating systems,
since it is optimized for both boot time and footprint.
---
Changelog
v5:
- Drop unneeded "[PATCH v4 2/8] hw/i386: Factorize e820 related
functions" (Philippe Mathieu-Daudé)
- Drop unneeded "[PATCH v4 1/8] hw/i386: Factorize PVH related
functions" (Stefano Garzarella)
- Split X86MachineState introduction into smaller patches (Philippe
Mathieu-Daudé)
- Change option-roms to x-option-roms and kernel-cmdline to
auto-kernel-cmdline (Paolo Bonzini)
- Make i8259 PIT and i8254 PIC optional (Paolo Bonzini)
- Some fixes to the documentation (Paolo Bonzini)
- Switch documentation format from txt to rst (Peter Maydell)
- Move NMI interface to X86_MACHINE (Philippe Mathieu-Daudé, Paolo
Bonzini)
v4:
- This is a complete rewrite of the whole patchset, with a focus on
reusing as much existing code as possible to ease the maintenance burden
and making the machine type as compatible as possible by default. As
a result, the number of lines dedicated specifically to microvm is
383 (code lines measured by "cloc") and, with the default
configuration, it's now able to boot both PVH ELF images and
bzImages with either SeaBIOS or qboot.
v3:
- Add initrd support (thanks Stefano).
v2:
- Drop "[PATCH 1/4] hw/i386: Factorize CPU routine".
- Simplify machine definition (thanks Eduardo).
- Remove use of unneeded NUMA-related callbacks (thanks Eduardo).
- Add a patch to factorize PVH-related functions.
- Replace use of Linux's Zero Page with PVH (thanks Maran and Paolo).
---
Sergio Lopez (10):
hw/virtio: Factorize virtio-mmio headers
hw/i386/pc: rename functions shared with non-PC machines
hw/i386/pc: move shared x86 functions to x86.c and export them
hw/i386: split PCMachineState deriving X86MachineState from it
hw/i386: make x86.c independent from PCMachineState
fw_cfg: add "modify" functions for all types
hw/intc/apic: reject pic ints if isa_pic == NULL
roms: add microvm-bios (qboot) as binary and git submodule
docs/microvm.rst: document the new microvm machine type
hw/i386: Introduce the microvm machine type
.gitmodules | 3 +
default-configs/i386-softmmu.mak | 1 +
docs/microvm.rst | 98 ++++
hw/acpi/cpu_hotplug.c | 10 +-
hw/i386/Kconfig | 4 +
hw/i386/Makefile.objs | 2 +
hw/i386/acpi-build.c | 29 +-
hw/i386/amd_iommu.c | 3 +-
hw/i386/intel_iommu.c | 3 +-
hw/i386/microvm.c | 574 ++++++++++++++++++++++
hw/i386/pc.c | 779 +++---------------------------
hw/i386/pc_piix.c | 46 +-
hw/i386/pc_q35.c | 38 +-
hw/i386/pc_sysfw.c | 58 +--
hw/i386/x86.c | 789 +++++++++++++++++++++++++++++++
hw/intc/apic.c | 2 +-
hw/intc/ioapic.c | 2 +-
hw/nvram/fw_cfg.c | 29 ++
hw/virtio/virtio-mmio.c | 48 +-
include/hw/i386/microvm.h | 83 ++++
include/hw/i386/pc.h | 28 +-
include/hw/i386/x86.h | 93 ++++
include/hw/nvram/fw_cfg.h | 42 ++
include/hw/virtio/virtio-mmio.h | 73 +++
pc-bios/bios-microvm.bin | Bin 0 -> 65536 bytes
roms/Makefile | 6 +
roms/qboot | 1 +
27 files changed, 1948 insertions(+), 896 deletions(-)
create mode 100644 docs/microvm.rst
create mode 100644 hw/i386/microvm.c
create mode 100644 hw/i386/x86.c
create mode 100644 include/hw/i386/microvm.h
create mode 100644 include/hw/i386/x86.h
create mode 100644 include/hw/virtio/virtio-mmio.h
create mode 100755 pc-bios/bios-microvm.bin
create mode 160000 roms/qboot
--
2.21.0
next reply other threads:[~2019-10-02 11:33 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-10-02 11:30 Sergio Lopez [this message]
2019-10-02 11:30 ` [PATCH v5 01/10] hw/virtio: Factorize virtio-mmio headers Sergio Lopez
2019-10-03 10:15 ` Philippe Mathieu-Daudé
2019-10-03 11:26 ` Sergio Lopez
2019-10-03 13:11 ` Eric Blake
2019-10-03 13:47 ` Philippe Mathieu-Daudé
2019-10-07 9:32 ` Markus Armbruster
2019-10-02 11:30 ` [PATCH v5 02/10] hw/i386/pc: rename functions shared with non-PC machines Sergio Lopez
2019-10-02 15:14 ` Philippe Mathieu-Daudé
2019-10-03 10:04 ` Sergio Lopez
2019-10-02 11:30 ` [PATCH v5 03/10] hw/i386/pc: move shared x86 functions to x86.c and export them Sergio Lopez
2019-10-03 10:27 ` Philippe Mathieu-Daudé
2019-10-03 11:14 ` Sergio Lopez
2019-10-02 11:30 ` [PATCH v5 04/10] hw/i386: split PCMachineState deriving X86MachineState from it Sergio Lopez
2019-10-03 10:24 ` Philippe Mathieu-Daudé
2019-10-03 11:15 ` Sergio Lopez
2019-10-02 11:30 ` [PATCH v5 05/10] hw/i386: make x86.c independent from PCMachineState Sergio Lopez
2019-10-02 11:30 ` [PATCH v5 06/10] fw_cfg: add "modify" functions for all types Sergio Lopez
2019-10-02 11:31 ` [PATCH v5 07/10] hw/intc/apic: reject pic ints if isa_pic == NULL Sergio Lopez
2019-10-02 11:31 ` [PATCH v5 08/10] roms: add microvm-bios (qboot) as binary and git submodule Sergio Lopez
2019-10-03 10:07 ` Sergio Lopez
2019-10-03 10:19 ` Paolo Bonzini
2019-10-03 11:16 ` Sergio Lopez
2019-10-02 11:31 ` [PATCH v5 09/10] docs/microvm.rst: document the new microvm machine type Sergio Lopez
2019-10-02 13:22 ` Paolo Bonzini
2019-10-02 13:37 ` Sergio Lopez
2019-10-02 11:31 ` [PATCH v5 10/10] hw/i386: Introduce the " Sergio Lopez
2019-10-02 12:05 ` Thomas Huth
2019-10-02 13:24 ` Sergio Lopez
2019-10-02 12:03 ` [PATCH v5 00/10] " no-reply
2019-10-02 12:14 ` no-reply
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=20191002113103.45023-1-slp@redhat.com \
--to=slp@redhat.com \
--cc=ehabkost@redhat.com \
--cc=imammedo@redhat.com \
--cc=kraxel@redhat.com \
--cc=lersek@redhat.com \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=philmd@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=rth@twiddle.net \
--cc=sgarzare@redhat.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).