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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.