From: Hu Tao <hutao@cn.fujitsu.com>
To: qemu-devel@nongnu.org
Cc: Vasilis Liaskovitis <vasilis.liaskovitis@profitbricks.com>
Subject: [Qemu-devel] [PATCH v5 00/14] ACPI memory hotplug
Date: Wed, 26 Jun 2013 17:13:23 +0800 [thread overview]
Message-ID: <cover.1372234719.git.hutao@cn.fujitsu.com> (raw)
It's been quite a while since v4 and lots of changes happend
in qemu and v4 just can't apply anymore. So this series is
basically a rebase. Another purpose is to bring up discussions
to make consensus on some questions since v4, see
http://lists.gnu.org/archive/html/qemu-devel/2013-01/msg01219.html
and http://lists.gnu.org/archive/html/qemu-devel/2013-02/msg05332.html
This series works with seabios counterpart.
changes from v4:
- rebased on a recent qemu-git
- based on another series which seperates i440fx refactor from v4.
http://lists.nongnu.org/archive/html/qemu-devel/2013-06/msg03500.html
- hot-unplug patches not included, as suggested by Vasilis, since
hot-unplug has some more complications with refcounting memory regions.
- fix some copy-paste errors in qapi-schema.json.
v4: http://lists.gnu.org/archive/html/qemu-devel/2012-12/msg02693.html
Issues:
- hot-remove needs to only unmap the dimm device from guest's view. Freeing the
memory should happen when the last user of the device (e.g. virtio-blk) unrefs
the device. A testcase is needed for this.
- Live Migration: Ramblocks are migrated before qdev VMStates are migrated. So
the DimmDevice is handled diferrently than other devices. Should this be
reworked ?( DimmDevice structure currently does not define a VMStateDescription)
Live migration works as long as the dimm layout (command line args) are
identical at the source and destination qemu command line, and destination takes
into account hot-operations that have occured on source. (v3 patch 10/19
created the DimmDevice that corresponds to an unknown incoming ramblock, e.g.
for a dimm that was hot-added on source. but has been dropped for the moment).
- A main blocker issue is windows guest functionality. The patchset does not
work for windows currently. Testing on win2012 server RC or windows2008
consumer prerelease, when adding a DIMM, there is a BSOD with ACPI_BIOS_ERROR
message. After this, the VM keeps rebooting with ACPI_BIOS_ERROR. The windows
pnpmem driver obviosuly has a problem with the seabios dimm implementation
(or the seabios dimm implementation is not fully ACPI-compliant). If someone
can review the seabios patches or has any ideas to debug this, let me know.
- hot-operation notification lists need to be added to migration state.
- If a virtio sg element straddles a ramblock boundary, virtio_map_sg can't
handle this and qemu exits with "virtio: Trying to map MMIO memory" assertion.
This was discovered with stress testing in a VM with hotplugged DIMMs. The
top-most commit in the qemu repo above tries to fix this (803aedf0) but maybe
you have a better idea. This problem is critical for hot-add upstreaming and
needs to be solved. Review/discussion on the list/irc is necessary.
- q35 was supposed/rumoured to have native acpi hotplug support, but I haven't
found it in the spec (and I think other people in the list didn't either). Iiuc
the plan is to support paravirtual memory hotplug for both piix4 and q35.
Hu Tao (5):
qapi: make visit_type_size fallback to v->type_int()
Implement dimm device abstraction
memory: record below_4g_mem_size, above_4g_mem_size
memory controller: initialize dram controller.
pc: Add dimm paravirt SRAT info
Vasilis Liaskovitis (9):
Add SIZE type to qdev properties
qemu-option: export parse_option_number
vl: handle "-device dimm"
acpi_piix4 : Implement memory device hotplug registers
acpi_ich9 : Implement memory device hotplug registers
Introduce paravirt interface QEMU_CFG_PCI_WINDOW
Implement "info memory" and "query-memory"
balloon: update with hotplugged memory
Implement dimm-info
default-configs/x86_64-softmmu.mak | 1 +
docs/specs/acpi_mem_hotplug.txt | 14 ++
docs/specs/fwcfg.txt | 28 ++++
hmp-commands.hx | 4 +
hmp.c | 25 ++++
hmp.h | 2 +
hw/Makefile.objs | 1 +
hw/acpi/ich9.c | 56 ++++++-
hw/acpi/piix4.c | 72 ++++++++-
hw/core/qdev-properties.c | 61 ++++++++
hw/i386/pc.c | 74 +++++++--
hw/i386/pc_piix.c | 1 +
hw/i386/pc_q35.c | 17 ++-
hw/mem-hotplug/Makefile.objs | 1 +
hw/mem-hotplug/dimm.c | 298 +++++++++++++++++++++++++++++++++++++
hw/pci-host/piix.c | 13 ++
hw/virtio/virtio-balloon.c | 13 +-
include/hw/acpi/ich9.h | 10 ++
include/hw/i386/pc.h | 8 +
include/hw/mem-hotplug/dimm.h | 78 ++++++++++
include/hw/nvram/fw_cfg.h | 1 +
include/hw/qdev-properties.h | 3 +
include/qemu/option.h | 4 +
include/sysemu/sysemu.h | 1 +
monitor.c | 14 ++
qapi-schema.json | 40 +++++
qapi/qapi-visit-core.c | 6 +-
qmp-commands.hx | 22 +++
util/qemu-option.c | 8 +-
vl.c | 60 ++++++++
30 files changed, 907 insertions(+), 29 deletions(-)
create mode 100644 docs/specs/acpi_mem_hotplug.txt
create mode 100644 docs/specs/fwcfg.txt
create mode 100644 hw/mem-hotplug/Makefile.objs
create mode 100644 hw/mem-hotplug/dimm.c
create mode 100644 include/hw/mem-hotplug/dimm.h
--
1.8.3.1
next reply other threads:[~2013-06-26 9:14 UTC|newest]
Thread overview: 56+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-06-26 9:13 Hu Tao [this message]
2013-06-26 9:13 ` [Qemu-devel] [PATCH v5 01/14] qapi: make visit_type_size fallback to v->type_int() Hu Tao
2013-06-26 9:13 ` [Qemu-devel] [PATCH v5 02/14] Add SIZE type to qdev properties Hu Tao
2013-07-08 9:37 ` Andreas Färber
2013-07-12 1:27 ` Hu Tao
2013-06-26 9:13 ` [Qemu-devel] [PATCH v5 03/14] qemu-option: export parse_option_number Hu Tao
2013-06-26 9:13 ` [Qemu-devel] [PATCH v5 04/14] Implement dimm device abstraction Hu Tao
2013-06-26 9:13 ` [Qemu-devel] [PATCH v5 05/14] vl: handle "-device dimm" Hu Tao
2013-06-26 9:46 ` Paolo Bonzini
2013-06-27 5:08 ` Wanlong Gao
2013-06-27 6:55 ` Paolo Bonzini
2013-07-09 16:53 ` Igor Mammedov
2013-07-12 2:39 ` Hu Tao
2013-07-14 16:58 ` Paolo Bonzini
2013-07-16 1:26 ` Hu Tao
2013-07-15 17:05 ` Vasilis Liaskovitis
2013-07-15 17:10 ` Paolo Bonzini
2013-07-15 17:20 ` Vasilis Liaskovitis
2013-07-16 1:27 ` Hu Tao
2013-07-16 6:19 ` Paolo Bonzini
2013-07-16 7:27 ` Hu Tao
2013-07-16 10:22 ` Igor Mammedov
2013-07-16 10:19 ` Igor Mammedov
2013-07-16 10:31 ` Paolo Bonzini
2013-07-16 12:00 ` Igor Mammedov
2013-07-16 12:17 ` Paolo Bonzini
2013-06-26 9:13 ` [Qemu-devel] [PATCH v5 06/14] acpi_piix4 : Implement memory device hotplug registers Hu Tao
2013-06-26 9:13 ` [Qemu-devel] [PATCH v5 07/14] acpi_ich9 " Hu Tao
2013-06-26 9:13 ` [Qemu-devel] [PATCH v5 08/14] memory: record below_4g_mem_size, above_4g_mem_size Hu Tao
2013-06-26 9:13 ` [Qemu-devel] [PATCH v5 09/14] memory controller: initialize dram controller Hu Tao
2013-06-26 9:13 ` [Qemu-devel] [PATCH v5 10/14] pc: Add dimm paravirt SRAT info Hu Tao
2013-07-10 10:10 ` Michael S. Tsirkin
2013-07-11 5:13 ` Igor Mammedov
2013-07-11 8:49 ` Michael S. Tsirkin
2013-07-12 1:33 ` Hu Tao
2013-07-14 5:47 ` Michael S. Tsirkin
2013-06-26 9:13 ` [Qemu-devel] [PATCH v5 11/14] Introduce paravirt interface QEMU_CFG_PCI_WINDOW Hu Tao
2013-06-26 9:13 ` [Qemu-devel] [PATCH v5 12/14] Implement "info memory" and "query-memory" Hu Tao
2013-06-28 20:27 ` Eric Blake
2013-06-26 9:13 ` [Qemu-devel] [PATCH v5 13/14] balloon: update with hotplugged memory Hu Tao
2013-06-26 9:13 ` [Qemu-devel] [PATCH v5 14/14] Implement dimm-info Hu Tao
2013-06-28 20:28 ` Eric Blake
2013-06-26 9:14 ` [Qemu-devel] [PATCH v5 0/7] support for ACPI memory hotplug Hu Tao
2013-06-26 9:14 ` [Qemu-devel] [PATCH v5 1/7] Add ACPI_EXTRACT_DEVICE* macros Hu Tao
2013-06-26 9:15 ` [Qemu-devel] [PATCH v5 2/7] Add SSDT memory device support Hu Tao
2013-06-26 9:15 ` [Qemu-devel] [PATCH v5 3/7] acpi-dsdt: Implement functions for memory hotplug Hu Tao
2013-06-26 9:15 ` [Qemu-devel] [PATCH v5 4/7] set psize to 0 when romfile_loadfile failed Hu Tao
2013-06-26 9:15 ` [Qemu-devel] [PATCH v5 5/7] acpi: generate hotplug memory devices Hu Tao
2013-07-12 10:07 ` Igor Mammedov
2013-06-26 9:15 ` [Qemu-devel] [PATCH v5 6/7] q35: Add memory hotplug handler Hu Tao
2013-06-26 9:15 ` [Qemu-devel] [PATCH v5 7/7] pci: Use paravirt interface for pcimem_start and pcimem64_start Hu Tao
2013-07-15 20:11 ` Vasilis Liaskovitis
2013-07-07 8:36 ` [Qemu-devel] [PATCH v5 0/7] support for ACPI memory hotplug Michael S. Tsirkin
2013-07-08 9:48 ` [Qemu-devel] [PATCH v5 00/14] " Andreas Färber
2013-07-12 1:30 ` Hu Tao
2013-07-14 16:56 ` Paolo Bonzini
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=cover.1372234719.git.hutao@cn.fujitsu.com \
--to=hutao@cn.fujitsu.com \
--cc=qemu-devel@nongnu.org \
--cc=vasilis.liaskovitis@profitbricks.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).