From: Paolo Bonzini <pbonzini@redhat.com>
To: Igor Mammedov <imammedo@redhat.com>
Cc: kwolf@redhat.com, peter.maydell@linaro.org, aliguori@us.ibm.com,
ehabkost@redhat.com, mst@redhat.com, jan.kiszka@siemens.com,
stefano.stabellini@eu.citrix.com, claudio.fontana@huawei.com,
qemu-devel@nongnu.org, quintela@redhat.com, armbru@redhat.com,
blauwirbel@gmail.com, yang.z.zhang@intel.com,
alex.williamson@redhat.com, aderumier@odiso.com,
kraxel@redhat.com, anthony.perard@citrix.com,
lcapitulino@redhat.com, afaerber@suse.de, rth@twiddle.net
Subject: Re: [Qemu-devel] [PATCH 11/12] qmp: add cpu_set qmp command
Date: Wed, 27 Mar 2013 11:36:04 +0100 [thread overview]
Message-ID: <5152CB94.1000200@redhat.com> (raw)
In-Reply-To: <1363876125-8264-12-git-send-email-imammedo@redhat.com>
Il 21/03/2013 15:28, Igor Mammedov ha scritto:
> Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> ---
> include/sysemu/sysemu.h | 2 ++
> qapi-schema.json | 9 +++++++++
> qmp-commands.hx | 26 ++++++++++++++++++++++++++
> qmp.c | 12 ++++++++++++
> stubs/Makefile.objs | 1 +
> stubs/do_cpu_hot_add.c | 7 +++++++
> 6 files changed, 57 insertions(+), 0 deletions(-)
> create mode 100644 stubs/do_cpu_hot_add.c
>
> diff --git a/include/sysemu/sysemu.h b/include/sysemu/sysemu.h
> index 4b8f721..8bcaf26 100644
> --- a/include/sysemu/sysemu.h
> +++ b/include/sysemu/sysemu.h
> @@ -156,6 +156,8 @@ void drive_hot_add(Monitor *mon, const QDict *qdict);
> void qemu_register_cpu_add_notifier(Notifier *notifier);
> void qemu_system_cpu_hotplug_request(uint32_t id);
>
> +void do_cpu_hot_add(const int64_t id, Error **errp);
> +
> /* pcie aer error injection */
> void pcie_aer_inject_error_print(Monitor *mon, const QObject *data);
> int do_pcie_aer_inject_error(Monitor *mon,
> diff --git a/qapi-schema.json b/qapi-schema.json
> index fdaa9da..7acec6e 100644
> --- a/qapi-schema.json
> +++ b/qapi-schema.json
> @@ -1385,6 +1385,15 @@
> { 'command': 'cpu', 'data': {'index': 'int'} }
>
> ##
> +# @cpu_set
> +#
> +# Sets specified cpu to online/ofline mode
> +#
> +# Notes: semantics is : cpu_set id=x status=online|offline
> +##
> +{ 'command': 'cpu_set', 'data': {'id': 'int', 'status': 'str'} }
> +
> +##
> # @memsave:
> #
> # Save a portion of guest memory to a file.
> diff --git a/qmp-commands.hx b/qmp-commands.hx
> index b370060..283df76 100644
> --- a/qmp-commands.hx
> +++ b/qmp-commands.hx
> @@ -385,6 +385,32 @@ Note: CPUs' indexes are obtained with the 'query-cpus' command.
> EQMP
>
> {
> + .name = "cpu_set",
> + .args_type = "id:i,status:s",
> + .mhandler.cmd_new = qmp_marshal_input_cpu_set,
> + },
> +
> +SQMP
> +cpu_set
> +-------
> +
> +Sets virtual cpu to online/ofline state
> +
> +Arguments:
> +
> +- "id": virtual cpu id (json-int)
> +- "status": desired state of cpu, online/offline (json-string)
> +
> +Example:
> +
> +-> { "execute": "cpu_set",
> + "arguments": { "id": 2,
> + "status": "online" } }
> +<- { "return": {} }
> +
> +EQMP
> +
> + {
> .name = "memsave",
> .args_type = "val:l,size:i,filename:s,cpu:i?",
> .mhandler.cmd_new = qmp_marshal_input_memsave,
> diff --git a/qmp.c b/qmp.c
> index 55b056b..5b84779 100644
> --- a/qmp.c
> +++ b/qmp.c
> @@ -108,6 +108,18 @@ void qmp_cpu(int64_t index, Error **errp)
> /* Just do nothing */
> }
>
> +void qmp_cpu_set(int64_t id, const char *status, Error **errp)
> +{
> + if (!strcmp(status, "online")) {
> + do_cpu_hot_add(id, errp);
> + } else if (!strcmp(status, "offline")) {
> + error_setg(errp, "Unplug is not implemented");
> + } else {
> + error_setg(errp, "Invalid parameter '%s'", status);
> + return;
> + }
> +}
Rather than adding stubs, what about the following:
1) put the QEMUMachineInitArgs in a global;
2) put a pointer to do_cpu_hot_add into the QEMUMachine;
3) call the callback from qmp_cpu_set if non-null, using the CPU model
from the QEMUMachineInitArgs
Paolo
> #ifndef CONFIG_VNC
> /* If VNC support is enabled, the "true" query-vnc command is
> defined in the VNC subsystem */
> diff --git a/stubs/Makefile.objs b/stubs/Makefile.objs
> index 6a492f5..4154a2b 100644
> --- a/stubs/Makefile.objs
> +++ b/stubs/Makefile.objs
> @@ -26,3 +26,4 @@ stub-obj-$(CONFIG_WIN32) += fd-register.o
> stub-obj-y += resume_vcpu.o
> stub-obj-y += get_icc_bus.o
> stub-obj-y += qemu_system_cpu_hotplug_request.o
> +stub-obj-y += do_cpu_hot_add.o
> diff --git a/stubs/do_cpu_hot_add.c b/stubs/do_cpu_hot_add.c
> new file mode 100644
> index 0000000..1f6d7a6
> --- /dev/null
> +++ b/stubs/do_cpu_hot_add.c
> @@ -0,0 +1,7 @@
> +#include "qapi/error.h"
> +#include "sysemu/sysemu.h"
> +
> +void do_cpu_hot_add(const int64_t id, Error **errp)
> +{
> + error_setg(errp, "Not implemented");
> +}
>
next prev parent reply other threads:[~2013-03-27 10:36 UTC|newest]
Thread overview: 64+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-03-21 14:28 [Qemu-devel] [RFC 00/12] target-i386: CPU hot-add with cpu_set QMP command Igor Mammedov
2013-03-21 14:28 ` [Qemu-devel] [PATCH 01/12] target-i386: consolidate error propagation in x86_cpu_realizefn() Igor Mammedov
2013-03-27 10:21 ` Paolo Bonzini
2013-04-01 20:00 ` Eduardo Habkost
2013-03-21 14:28 ` [Qemu-devel] [PATCH 02/12] target-i386: split APIC creation from initialization " Igor Mammedov
2013-04-04 8:59 ` Andreas Färber
2013-04-04 9:56 ` Igor Mammedov
2013-03-21 14:28 ` [Qemu-devel] [PATCH 03/12] target-i386: split out CPU creation and features parsing into cpu_x86_create() Igor Mammedov
2013-03-21 14:28 ` [Qemu-devel] [PATCH 04/12] target-i386: introduce apic-id property Igor Mammedov
2013-03-21 14:28 ` [Qemu-devel] [PATCH 05/12] target-i386: push hot-plugged VCPU state to KVM and unstop it Igor Mammedov
2013-03-27 11:01 ` Paolo Bonzini
2013-03-27 12:12 ` Igor Mammedov
2013-03-27 12:17 ` Andreas Färber
2013-03-27 13:27 ` Igor Mammedov
2013-03-27 14:30 ` Andreas Färber
2013-03-27 15:16 ` Igor Mammedov
2013-03-27 15:20 ` Paolo Bonzini
2013-03-27 19:46 ` Igor Mammedov
2013-03-27 19:51 ` [Qemu-devel] [PATCH 05/14] cpu: Pass CPUState to *cpu_synchronize_post*() Igor Mammedov
2013-03-27 19:51 ` [Qemu-devel] [PATCH 06/14] cpu: call cpu_synchronize_post_init() from CPUClass.realize() if hotplugged Igor Mammedov
2013-03-27 19:51 ` [Qemu-devel] [PATCH 07/14] cpu: introduce CPUClass.resume() method Igor Mammedov
2013-03-21 14:28 ` [Qemu-devel] [PATCH 06/12] target-i386: replace FROM_SYSBUS() with QOM type cast Igor Mammedov
2013-03-27 10:22 ` Paolo Bonzini
2013-04-04 9:03 ` Andreas Färber
2013-04-04 9:59 ` Igor Mammedov
2013-04-04 10:05 ` Andreas Färber
2013-04-04 10:22 ` Igor Mammedov
2013-03-21 14:28 ` [Qemu-devel] [PATCH 07/12] target-i386: Add ICC_BUS and attach apic, kvmvapic and cpu to it Igor Mammedov
2013-03-27 10:57 ` Paolo Bonzini
2013-03-28 10:55 ` Igor Mammedov
2013-03-29 7:22 ` li guang
2013-03-29 8:12 ` Igor Mammedov
2013-04-04 11:10 ` Andreas Färber
2013-04-04 12:52 ` Igor Mammedov
2013-03-21 14:28 ` [Qemu-devel] [PATCH 08/12] introduce CPU hot-plug notifier Igor Mammedov
2013-03-27 11:06 ` Paolo Bonzini
2013-03-27 15:24 ` Igor Mammedov
2013-03-27 15:36 ` Paolo Bonzini
2013-03-21 14:28 ` [Qemu-devel] [PATCH 09/12] rtc: update rtc_cmos on CPU hot-plug Igor Mammedov
2013-03-21 14:28 ` [Qemu-devel] [PATCH 10/12] acpi_piix4: add infrastructure to send CPU hot-plug GPE to guest Igor Mammedov
2013-03-27 10:47 ` Paolo Bonzini
2013-03-21 14:28 ` [Qemu-devel] [PATCH 11/12] qmp: add cpu_set qmp command Igor Mammedov
2013-03-22 2:44 ` Eric Blake
2013-03-25 15:35 ` [Qemu-devel] [PATCH 11/12 v2] qmp: add cpu-set " Igor Mammedov
2013-03-25 20:09 ` Luiz Capitulino
2013-03-25 20:22 ` Eric Blake
2013-03-26 13:43 ` Igor Mammedov
2013-03-26 14:02 ` Luiz Capitulino
2013-03-26 14:38 ` Eric Blake
2013-03-27 10:36 ` Paolo Bonzini [this message]
2013-03-21 14:28 ` [Qemu-devel] [PATCH 12/12] target-i386: implement CPU hot-add Igor Mammedov
2013-03-22 2:46 ` Eric Blake
2013-03-25 15:31 ` Igor Mammedov
2013-03-27 11:19 ` Paolo Bonzini
2013-04-03 17:58 ` Igor Mammedov
2013-04-03 18:10 ` Eduardo Habkost
2013-04-03 18:59 ` Igor Mammedov
2013-04-03 19:27 ` Eduardo Habkost
2013-04-03 20:09 ` Igor Mammedov
2013-04-03 20:57 ` Eduardo Habkost
2013-04-03 18:22 ` Andreas Färber
2013-04-03 19:01 ` Igor Mammedov
2013-03-21 14:44 ` [Qemu-devel] [RFC 00/12] target-i386: CPU hot-add with cpu_set QMP command Eric Blake
2013-03-21 15:38 ` 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=5152CB94.1000200@redhat.com \
--to=pbonzini@redhat.com \
--cc=aderumier@odiso.com \
--cc=afaerber@suse.de \
--cc=alex.williamson@redhat.com \
--cc=aliguori@us.ibm.com \
--cc=anthony.perard@citrix.com \
--cc=armbru@redhat.com \
--cc=blauwirbel@gmail.com \
--cc=claudio.fontana@huawei.com \
--cc=ehabkost@redhat.com \
--cc=imammedo@redhat.com \
--cc=jan.kiszka@siemens.com \
--cc=kraxel@redhat.com \
--cc=kwolf@redhat.com \
--cc=lcapitulino@redhat.com \
--cc=mst@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=quintela@redhat.com \
--cc=rth@twiddle.net \
--cc=stefano.stabellini@eu.citrix.com \
--cc=yang.z.zhang@intel.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.