From: Igor Mammedov <imammedo@redhat.com>
To: qemu-devel@nongnu.org, aliguori@us.ibm.com
Cc: ehabkost@redhat.com, mst@redhat.com, jfrei@linux.vnet.ibm.com,
pbonzini@redhat.com, afaerber@suse.de, lig.fnst@cn.fujitsu.com
Subject: [Qemu-devel] [PATCH 0/4 v8 for-1.5] target-i386: CPU hot-add with cpu-add QMP command
Date: Tue, 30 Apr 2013 08:33:59 +0200 [thread overview]
Message-ID: <1367303643-16036-1-git-send-email-imammedo@redhat.com> (raw)
Implements alternative way for hot-adding CPU using cpu-add QMP command,
which could be useful until it would be possible to add CPUs via device_add.
To hot-add CPU use following command from qmp-shell:
cpu-add id=[0..max-cpus - 1)
git tree for testing: https://github.com/imammedo/qemu/tree/cpu_add.v8
based on qom-cpu tree
v8->v7:
* skip already applied patches
* split adding hot_add_cpu hook into separate function
* add cpu-model machine option and use QemuOpts for getting it
during CPU hotplug.
v7->v6:
* skip already applied patches
* rename icc-bus instance name to "icc"
* pass icc_bridge from board as argument down CPU creation call chain,
instead of dynamically resolving it for each CPU.
v6->v5:
* override hot_add_cpu hook statically
* extend and use memory_region_find() in IOAPIC
* s/signal_cpu_creation/tcg_signal_cpu_creation/
* add "since 1.5 to cpu-addQAPI schema description
v5->v4:
* style fixes
* new helper qemu_for_each_cpu()
* switch to qemu_for_each_cpu() in cpu_exists()
* "pc: update rtc ..." patch make depend it on "mc146818rtc: QOM'ify"
and use QOM cast style
* call CPU added notifier right before CPU becomes runable
* s/resume_vcpu/cpu_resume/
* acpi/piix4: add spec documentation for QEMU<->Seabios CPU hotplug
interface
* use error_propagate() in pc_new_cpu()
* skip cpu_exists() check in apic-id property setter if new value is
the same as current
* embed icc-bus inside icc-bridge and use qbus_create_inplace()
* move include/hw/i386/icc_bus.h into include/hw/cpu/
* make missing icc-bus fatal error for softmmu target
* split "move APIC to ICC bus" and "move IOAPIC to ICC bus" on smaller
patches
* use qdev_get_parent_bus() to get parent bus
* split "add cpu-add command..." on smaller patches
v4->v3:
* 'id' in cpu-add command will be a thread number instead of APIC ID
* split off resume_vcpu() into separate patch
* move notifier from rtc code into pc.c
v2->v3:
* use local error & propagate_error() instead of operating on
passed in errp in several places
* replace CPUClass.get_firmware_id() with CPUClass.get_arch_id()
* leave IOAPIC creation to board and just set bus to icc-bus
* include kvm-stub.o in cpu libary if no KVM is configured
* create resume_vcpu() stub and include it in libqemustub,
and use it directly instead of CPU method
* acpi_piix4: s/cpu_add_notifier/cpu_added_notifier/
v1->v2:
* generalize cpu sync to KVM, resume and hot-plug notification and
invoke them form CPUClass, to make available to all targets.
* introduce cpu_exists() and CPUClass.get_firmware_id() and use
the last one in acpi_piix to make code target independent.
* move IOAPIC to ICC bus, it was suggested and easy to convert.
* leave kvmvapic as SysBusDevice, it doesn't affect hot-plug and
created only once for all APIC instances. I haven't found yet
good/clean enough way to convert it to ICCDevice. May be follow-up
though.
* split one big ICC patch into several, one per converted device
* add cpu_hot_add hook to machine and implement it for target-i386,
instead of adding stabs. Could be used by other targets to
implement cpu-add.
* pre-allocate links<CPU> for all possible CPUs and make them available
at /machine/icc-bridge/cpu[0..N] QOM path, so users could find out
possible/free CPU IDs to use in cpu-add command.
Igor Mammedov (4):
add hot_add_cpu hook to QEMUMachine
QMP: add cpu-add command
add cpu-model option to -machine
target-i386: implement machine->hot_add_cpu hook
hw/i386/pc.c | 29 +++++++++++++++++++++++++++++
hw/i386/pc_piix.c | 1 +
hw/i386/pc_q35.c | 1 +
include/hw/boards.h | 1 +
include/hw/i386/pc.h | 1 +
qapi-schema.json | 13 +++++++++++++
qmp-commands.hx | 23 +++++++++++++++++++++++
qmp.c | 10 ++++++++++
vl.c | 12 +++++++++++-
9 files changed, 90 insertions(+), 1 deletion(-)
--
1.8.2.1
next reply other threads:[~2013-04-30 6:34 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-04-30 6:33 Igor Mammedov [this message]
2013-04-30 6:34 ` [Qemu-devel] [PATCH 1/4] add hot_add_cpu hook to QEMUMachine Igor Mammedov
2013-04-30 6:34 ` [Qemu-devel] [PATCH 2/4] QMP: add cpu-add command Igor Mammedov
2013-04-30 13:46 ` Eduardo Habkost
2013-04-30 13:53 ` [Qemu-devel] [libvirt] " Peter Krempa
2013-04-30 13:56 ` [Qemu-devel] " Igor Mammedov
2013-04-30 6:34 ` [Qemu-devel] [PATCH 3/4] add cpu-model option to -machine Igor Mammedov
2013-04-30 12:09 ` Eduardo Habkost
2013-04-30 6:34 ` [Qemu-devel] [PATCH 4/4] target-i386: implement machine->hot_add_cpu hook Igor Mammedov
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=1367303643-16036-1-git-send-email-imammedo@redhat.com \
--to=imammedo@redhat.com \
--cc=afaerber@suse.de \
--cc=aliguori@us.ibm.com \
--cc=ehabkost@redhat.com \
--cc=jfrei@linux.vnet.ibm.com \
--cc=lig.fnst@cn.fujitsu.com \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
/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.