qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Igor Mammedov <imammedo@redhat.com>
To: David Gibson <david@gibson.dropbear.id.au>
Cc: Bharata B Rao <bharata@linux.vnet.ibm.com>,
	qemu-devel@nongnu.org, qemu-ppc@nongnu.org, afaerber@suse.de,
	armbru@redhat.com, thuth@redhat.com, aik@ozlabs.ru,
	agraf@suse.de, pbonzini@redhat.com, ehabkost@redhat.com,
	pkrempa@redhat.com, mdroth@linux.vnet.ibm.com, eblake@redhat.com,
	mjrosato@linux.vnet.ibm.com, borntraeger@de.ibm.com
Subject: Re: [Qemu-devel] [for-2.7 PATCH v3 13/15] QMP: Add query-hotpluggable-cpus
Date: Mon, 6 Jun 2016 10:42:34 +0200	[thread overview]
Message-ID: <20160606104234.1eb18aac@nial.brq.redhat.com> (raw)
In-Reply-To: <20160606052808.GI9226@voom.fritz.box>

On Mon, 6 Jun 2016 15:28:09 +1000
David Gibson <david@gibson.dropbear.id.au> wrote:

> On Thu, May 12, 2016 at 09:18:23AM +0530, Bharata B Rao wrote:
> > From: Igor Mammedov <imammedo@redhat.com>
> > 
> > It will allow mgmt to query present and hotpluggable CPU objects,
> > it is required from a target platform that wishes to support command
> > to implement and set MachineClass.query_hotpluggable_cpus callback,
> > which will return a list of possible CPU objects with options that
> > would be needed for hotplugging possible CPU objects.
> > 
> > There are:
> > 'type': 'str' - QOM CPU object type for usage with device_add
> > 'vcpus-count': 'int' - number of logical VCPU threads per
> >                         CPU object (mgmt needs to know)
> > 
> > and a set of optional fields that are to used for hotplugging a CPU
> > objects and would allows mgmt tools to know what/where it could be
> > hotplugged;
> > [node],[socket],[core],[thread]
> > 
> > For present CPUs there is a 'qom-path' field which would allow mgmt to
> > inspect whatever object/abstraction the target platform considers
> > as CPU object.
> > 
> > Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> > Signed-off-by: Bharata B Rao <bharata@linux.vnet.ibm.com>  
> 
> Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
> 
> Igor, if you're ready for this to go ahead, I'll take it through my tree.
yep, it will allow me drop the same patch(es) from my ACPI CPU hotplug refactoring,
please take it through your tree.

> 
> > ---
> >  include/hw/boards.h |  5 +++++
> >  monitor.c           | 13 +++++++++++++
> >  qapi-schema.json    | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++
> >  qmp-commands.hx     | 23 ++++++++++++++++++++++
> >  4 files changed, 96 insertions(+)
> > 
> > diff --git a/include/hw/boards.h b/include/hw/boards.h
> > index 8d4fe56..0db0c1e 100644
> > --- a/include/hw/boards.h
> > +++ b/include/hw/boards.h
> > @@ -81,6 +81,10 @@ typedef struct {
> >   *    Returns an array of @CPUArchId architecture-dependent CPU IDs
> >   *    which includes CPU IDs for present and possible to hotplug CPUs.
> >   *    Caller is responsible for freeing returned list.
> > + * @query_hotpluggable_cpus:
> > + *    Returns a @HotpluggableCPUList, which describes CPUs objects which
> > + *    could be added with -device/device_add.
> > + *    Caller is responsible for freeing returned list.
> >   */
> >  struct MachineClass {
> >      /*< private >*/
> > @@ -124,6 +128,7 @@ struct MachineClass {
> >                                             DeviceState *dev);
> >      unsigned (*cpu_index_to_socket_id)(unsigned cpu_index);
> >      CPUArchIdList *(*possible_cpu_arch_ids)(MachineState *machine);
> > +    HotpluggableCPUList *(*query_hotpluggable_cpus)(MachineState *machine);
> >  };
> >  
> >  /**
> > diff --git a/monitor.c b/monitor.c
> > index d1c1930..b469225 100644
> > --- a/monitor.c
> > +++ b/monitor.c
> > @@ -4267,3 +4267,16 @@ GICCapabilityList *qmp_query_gic_capabilities(Error **errp)
> >      return NULL;
> >  }
> >  #endif
> > +
> > +HotpluggableCPUList *qmp_query_hotpluggable_cpus(Error **errp)
> > +{
> > +    MachineState *ms = MACHINE(qdev_get_machine());
> > +    MachineClass *mc = MACHINE_GET_CLASS(ms);
> > +
> > +    if (!mc->query_hotpluggable_cpus) {
> > +        error_setg(errp, QERR_FEATURE_DISABLED, "query-hotpluggable-cpus");
> > +        return NULL;
> > +    }
> > +
> > +    return mc->query_hotpluggable_cpus(ms);
> > +}
> > diff --git a/qapi-schema.json b/qapi-schema.json
> > index 54634c4..137e532 100644
> > --- a/qapi-schema.json
> > +++ b/qapi-schema.json
> > @@ -4178,3 +4178,58 @@
> >  # Since: 2.6
> >  ##
> >  { 'command': 'query-gic-capabilities', 'returns': ['GICCapability'] }
> > +
> > +##
> > +# CpuInstanceProperties
> > +#
> > +# List of properties to be used for hotplugging a CPU instance,
> > +# it should be passed by management with device_add command when
> > +# a CPU is being hotplugged.
> > +#
> > +# Note: currently there are 4 properties that could be present
> > +# but management should be prepared to pass through other
> > +# properties with device_add command to allow for future
> > +# interface extension.
> > +#
> > +# @node: #optional NUMA node ID the CPU belongs to
> > +# @socket: #optional socket number within node/board the CPU belongs to
> > +# @core: #optional core number within socket the CPU belongs to
> > +# @thread: #optional thread number within core the CPU belongs to
> > +#
> > +# Since: 2.7
> > +##
> > +{ 'struct': 'CpuInstanceProperties',
> > +  'data': { '*node': 'int',
> > +            '*socket': 'int',
> > +            '*core': 'int',
> > +            '*thread': 'int'
> > +  }
> > +}
> > +
> > +##
> > +# @HotpluggableCPU
> > +#
> > +# @type: CPU object type for usage with device_add command
> > +# @props: list of properties to be used for hotplugging CPU
> > +# @vcpus-count: number of logical VCPU threads @HotpluggableCPU provides
> > +# @qom-path: #optional link to existing CPU object if CPU is present or
> > +#            omitted if CPU is not present.
> > +#
> > +# Since: 2.7
> > +##
> > +{ 'struct': 'HotpluggableCPU',
> > +  'data': { 'type': 'str',
> > +            'vcpus-count': 'int',
> > +            'props': 'CpuInstanceProperties',
> > +            '*qom-path': 'str'
> > +          }
> > +}
> > +
> > +##
> > +# @query-hotpluggable-cpus
> > +#
> > +# Returns: a list of HotpluggableCPU objects.
> > +#
> > +# Since: 2.7
> > +##
> > +{ 'command': 'query-hotpluggable-cpus', 'returns': ['HotpluggableCPU'] }
> > diff --git a/qmp-commands.hx b/qmp-commands.hx
> > index de896a5..5640147 100644
> > --- a/qmp-commands.hx
> > +++ b/qmp-commands.hx
> > @@ -4880,3 +4880,26 @@ Example:
> >                  { "version": 3, "emulated": false, "kernel": true } ] }
> >  
> >  EQMP
> > +
> > +    {
> > +        .name       = "query-hotpluggable-cpus",
> > +        .args_type  = "",
> > +        .mhandler.cmd_new = qmp_marshal_query_hotpluggable_cpus,
> > +    },
> > +
> > +SQMP
> > +Show existing/possible CPUs
> > +---------------------------
> > +
> > +Arguments: None.
> > +
> > +Example for pseries machine type started with
> > +-smp 2,cores=2,maxcpus=4 -cpu POWER8:
> > +
> > +-> { "execute": "query-hotpluggable-cpus" }
> > +<- {"return": [
> > +     { "props": { "core": 8 }, "type": "POWER8-spapr-cpu-core",
> > +       "vcpus-count": 1 },
> > +     { "props": { "core": 0 }, "type": "POWER8-spapr-cpu-core",
> > +       "vcpus-count": 1, "qom-path": "/machine/unattached/device[0]"}
> > +   ]}'  
> 

  reply	other threads:[~2016-06-06  8:42 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-05-12  3:48 [Qemu-devel] [for-2.7 PATCH v3 00/15] Core based CPU hotplug for PowerPC sPAPR Bharata B Rao
2016-05-12  3:48 ` [Qemu-devel] [for-2.7 PATCH v3 01/15] exec: Remove cpu from cpus list during cpu_exec_exit() Bharata B Rao
2016-05-26 10:12   ` Paolo Bonzini
2016-05-27  3:07     ` David Gibson
2016-05-27  9:51       ` Paolo Bonzini
2016-05-12  3:48 ` [Qemu-devel] [for-2.7 PATCH v3 02/15] exec: Do vmstate unregistration from cpu_exec_exit() Bharata B Rao
2016-05-26 10:22   ` Paolo Bonzini
2016-05-30 15:22   ` [Qemu-devel] [PATCH] fixup! " Igor Mammedov
2016-05-31  0:02     ` David Gibson
2016-05-12  3:48 ` [Qemu-devel] [for-2.7 PATCH v3 03/15] cpu: Reclaim vCPU objects Bharata B Rao
2016-05-26 10:19   ` Paolo Bonzini
2016-05-26 10:47     ` Bharata B Rao
     [not found]     ` <201605261048.u4QAibq4039252@mx0a-001b2d01.pphosted.com>
2016-05-26 10:51       ` Paolo Bonzini
2016-05-12  3:48 ` [Qemu-devel] [for-2.7 PATCH v3 04/15] cpu: Add a sync version of cpu_remove() Bharata B Rao
2016-05-26 10:22   ` Paolo Bonzini
2016-05-12  3:48 ` [Qemu-devel] [for-2.7 PATCH v3 05/15] qdev: hotplug: Introduce HotplugHandler.pre_plug() callback Bharata B Rao
2016-06-02  1:15   ` David Gibson
2016-06-02  9:32     ` Igor Mammedov
2016-06-03  5:10       ` David Gibson
2016-06-03  9:23         ` Igor Mammedov
2016-05-12  3:48 ` [Qemu-devel] [for-2.7 PATCH v3 06/15] cpu: Abstract CPU core type Bharata B Rao
2016-06-02  3:38   ` David Gibson
2016-06-02  9:35     ` Igor Mammedov
2016-06-02 18:12     ` Eduardo Habkost
2016-06-03  5:06       ` David Gibson
2016-05-12  3:48 ` [Qemu-devel] [for-2.7 PATCH v3 07/15] spapr: Abstract CPU core device and type specific core devices Bharata B Rao
2016-06-03  5:25   ` David Gibson
2016-06-08  9:42     ` Bharata B Rao
2016-06-09  0:45       ` David Gibson
2016-05-12  3:48 ` [Qemu-devel] [for-2.7 PATCH v3 08/15] spapr: convert boot CPUs into CPU " Bharata B Rao
2016-06-03  5:32   ` David Gibson
2016-06-08 12:23     ` Bharata B Rao
2016-05-12  3:48 ` [Qemu-devel] [for-2.7 PATCH v3 09/15] spapr: CPU hotplug support Bharata B Rao
2016-06-03  6:10   ` David Gibson
2016-05-12  3:48 ` [Qemu-devel] [for-2.7 PATCH v3 10/15] xics, xics_kvm: Handle CPU unplug correctly Bharata B Rao
2016-06-03  6:14   ` David Gibson
2016-05-12  3:48 ` [Qemu-devel] [for-2.7 PATCH v3 11/15] spapr_drc: Prevent detach racing against attach for CPU DR Bharata B Rao
2016-06-03  6:17   ` David Gibson
2016-05-12  3:48 ` [Qemu-devel] [for-2.7 PATCH v3 12/15] spapr: CPU hot unplug support Bharata B Rao
2016-06-03  6:27   ` David Gibson
2016-05-12  3:48 ` [Qemu-devel] [for-2.7 PATCH v3 13/15] QMP: Add query-hotpluggable-cpus Bharata B Rao
2016-06-06  5:28   ` David Gibson
2016-06-06  8:42     ` Igor Mammedov [this message]
2016-05-12  3:48 ` [Qemu-devel] [for-2.7 PATCH v3 14/15] hmp: Add 'info hotpluggable-cpus' HMP command Bharata B Rao
2016-06-06  5:29   ` David Gibson
2016-05-12  3:48 ` [Qemu-devel] [for-2.7 PATCH v3 15/15] spapr: implement query-hotpluggable-cpus callback Bharata B Rao
2016-06-06  5:37   ` David Gibson
2016-05-25  6:54 ` [Qemu-devel] [for-2.7 PATCH v3 00/15] Core based CPU hotplug for PowerPC sPAPR Thomas Huth
2016-05-25 16:03   ` Andreas Färber
2016-05-26  6:20 ` David Gibson

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=20160606104234.1eb18aac@nial.brq.redhat.com \
    --to=imammedo@redhat.com \
    --cc=afaerber@suse.de \
    --cc=agraf@suse.de \
    --cc=aik@ozlabs.ru \
    --cc=armbru@redhat.com \
    --cc=bharata@linux.vnet.ibm.com \
    --cc=borntraeger@de.ibm.com \
    --cc=david@gibson.dropbear.id.au \
    --cc=eblake@redhat.com \
    --cc=ehabkost@redhat.com \
    --cc=mdroth@linux.vnet.ibm.com \
    --cc=mjrosato@linux.vnet.ibm.com \
    --cc=pbonzini@redhat.com \
    --cc=pkrempa@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-ppc@nongnu.org \
    --cc=thuth@redhat.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).