Re: [libvirt] [PATCH 2/4] QMP: add cpu-add command

2013-04-30 Thread Eduardo Habkost
(CCing libvir-list)

On Tue, Apr 30, 2013 at 08:34:01AM +0200, Igor Mammedov wrote:
 Adds cpu-add id=xxx QMP command.
 
 cpu-add's id argument is a CPU number in a range [0..max-cpus)
 
 Example QMP command:
  - { execute: cpu-add, arguments: { id: 2 } }
  - { return: {} }
 
 Signed-off-by: Igor Mammedov imamm...@redhat.com
 Acked-by: Luiz Capitulino lcapitul...@redhat.com
 Reviewed-by: Eric Blake ebl...@redhat.com

The only way to find out if CPU hotplug is really available on a given
machine-type is by actually trying to run cpu-add, right? Is this
sufficient for libvirt requirements?


 ---
 v7:
   * added Since 1.5 to cpu-add qapi schema definition
 v6:
   * added valid values description to qapi schema
   * split out cpu_hot_add hooks introduction into separate patch
   * split out implementation of cpu_hot_add for target-i386
 v5:
   * accept id=[0..max_cpus) range in cpu-add command
 v4:
   * merge qmp: add cpu-add qmp command  target-i386: implement CPU 
 hot-add patches
   * move notifier call to CPUCLass.realize()
   * add hook cpu_hot_add to QEMUMachine
   * make QEMUMachineInitArgs global and keep default cpu_model there
 
 v3:
   * it appears that 'online/offline' in cpu-set are confusing people
 with what command actually does and users might have to distinguish
 if 'offline' is not implemented by parsing error message. To simplify
 things replace cpu-set with cpu-add command to show more clear what
 command does and just add cpu-del when CPU remove is implemented.
 
 v2:
   * s/cpu_set/cpu-set/
   * qmp doc style fix
   * use bool type instead of opencodding online/offline string
  suggested-by: Eric Blake ebl...@redhat.com
 ---
  qapi-schema.json | 13 +
  qmp-commands.hx  | 23 +++
  qmp.c| 10 ++
  3 files changed, 46 insertions(+)
 
 diff --git a/qapi-schema.json b/qapi-schema.json
 index 5b0fb3b..6f58b0f 100644
 --- a/qapi-schema.json
 +++ b/qapi-schema.json
 @@ -1387,6 +1387,19 @@
  { 'command': 'cpu', 'data': {'index': 'int'} }
  
  ##
 +# @cpu-add
 +#
 +# Adds CPU with specified ID
 +#
 +# @id: ID of CPU to be created, valid values [0..max_cpus)
 +#
 +# Returns: Nothing on success
 +#
 +# Since 1.5
 +##
 +{ 'command': 'cpu-add', 'data': {'id': 'int'} }
 +
 +##
  # @memsave:
  #
  # Save a portion of guest memory to a file.
 diff --git a/qmp-commands.hx b/qmp-commands.hx
 index 0e89132..ed99eb8 100644
 --- a/qmp-commands.hx
 +++ b/qmp-commands.hx
 @@ -385,6 +385,29 @@ Note: CPUs' indexes are obtained with the 'query-cpus' 
 command.
  EQMP
  
  {
 +.name   = cpu-add,
 +.args_type  = id:i,
 +.mhandler.cmd_new = qmp_marshal_input_cpu_add,
 +},
 +
 +SQMP
 +cpu-add
 +---
 +
 +Adds virtual cpu
 +
 +Arguments:
 +
 +- id: cpu id (json-int)
 +
 +Example:
 +
 +- { execute: cpu-add, arguments: { id: 2 } }
 +- { 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 ed6c7ef..dd34be6 100644
 --- a/qmp.c
 +++ b/qmp.c
 @@ -24,6 +24,7 @@
  #include hw/qdev.h
  #include sysemu/blockdev.h
  #include qom/qom-qobject.h
 +#include hw/boards.h
  
  NameInfo *qmp_query_name(Error **errp)
  {
 @@ -108,6 +109,15 @@ void qmp_cpu(int64_t index, Error **errp)
  /* Just do nothing */
  }
  
 +void qmp_cpu_add(int64_t id, Error **errp)
 +{
 +if (current_machine-hot_add_cpu) {
 +current_machine-hot_add_cpu(id, errp);
 +} else {
 +error_setg(errp, Not supported);
 +}
 +}
 +
  #ifndef CONFIG_VNC
  /* If VNC support is enabled, the true query-vnc command is
 defined in the VNC subsystem */
 -- 
 1.8.2.1
 

-- 
Eduardo

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list


Re: [libvirt] [PATCH 2/4] QMP: add cpu-add command

2013-04-30 Thread Peter Krempa

On 04/30/13 15:46, Eduardo Habkost wrote:

(CCing libvir-list)

On Tue, Apr 30, 2013 at 08:34:01AM +0200, Igor Mammedov wrote:

Adds cpu-add id=xxx QMP command.

cpu-add's id argument is a CPU number in a range [0..max-cpus)

Example QMP command:
  - { execute: cpu-add, arguments: { id: 2 } }
  - { return: {} }

Signed-off-by: Igor Mammedov imamm...@redhat.com
Acked-by: Luiz Capitulino lcapitul...@redhat.com
Reviewed-by: Eric Blake ebl...@redhat.com


The only way to find out if CPU hotplug is really available on a given
machine-type is by actually trying to run cpu-add, right? Is this
sufficient for libvirt requirements?





As long as the command fails when it's not supported it's okay.

(cpu_set HMP command does not fail when offlining a cpu even if it isn't 
supported and that's real pain to use)


Peter


--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list