All of lore.kernel.org
 help / color / mirror / Atom feed
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

             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.