All of lore.kernel.org
 help / color / mirror / Atom feed
From: David Gibson <david@gibson.dropbear.id.au>
To: Bharata B Rao <bharata@linux.vnet.ibm.com>
Cc: thuth@redhat.com, ehabkost@redhat.com, armbru@redhat.com,
	agraf@suse.de, qemu-devel@nongnu.org, qemu-ppc@nongnu.org,
	pbonzini@redhat.com, imammedo@redhat.com,
	"Andreas Färber" <afaerber@suse.de>
Subject: Re: [Qemu-devel] CPU hotplug, again
Date: Tue, 23 Feb 2016 21:05:04 +1100	[thread overview]
Message-ID: <20160223100504.GW2808@voom.fritz.box> (raw)
In-Reply-To: <20160223094026.GA21081@in.ibm.com>

[-- Attachment #1: Type: text/plain, Size: 3835 bytes --]

On Tue, Feb 23, 2016 at 03:10:26PM +0530, Bharata B Rao wrote:
> On Tue, Feb 23, 2016 at 04:24:31PM +1100, David Gibson wrote:
> > Hi Andreas,
> > 
> > I've now found (with Thomas' help) your RFC series for socket/core
> > based cpu hotplug on x86
> > (https://github.com/afaerber/qemu-cpu/compare/qom-cpu-x86).  It seems
> > sensible enough as far as it goes, but doesn't seem to address a bunch
> > of the things that I was attempting to do with the cpu-package
> > proposal - and which we absolutely need for cpu hotplug on Power.
> > 
> > 1) What interface do you envisage beyond cpu_add?
> > 
> > The patches I see just construct extra socket and core objects, but
> > still control hotplug (for x86) through the cpu_add interface.  That
> > interface is absolutely unusable on Power, since it operates on a
> > per-thread basis, whereas the PAPR guest<->host interfaces can only
> > communicate information at a per-core granularity.
> > 
> > 2) When hotplugging at core or socket granularity, where would the
> >    code to construct the individual thread objects sit?
> > 
> > Your series has the construction done in both the machine init path
> > and the hotplug path.  The latter works because hotplug occurs at
> > thread granularity.  If we're hotplugging at core or socket
> > granularity what would do the construct?  The core/socket object
> > itself (in instance_init?  in realize?); the hotplug handler?
> > something else?
> > 
> > 3) How does the management layer determine what is pluggable?
> > 
> > Both the number of pluggable slots, and what it will need to do to
> > populate them.
> > 
> > 4) How do we enforce that toplogies illegal for the platform can't be
> >    constructed?
> 
> 5) QOM-links
> 
> Andreas, You have often talked about setting up links from machine object
> to the CPU objects. Would the below code correctly capture that idea of
> yours ?
> 
> #define SPAPR_MACHINE_CPU_CORE_PROP "core"
> 
> /* MachineClass.init for sPAPR */
> static void ppc_spapr_init(MachineState *machine)
> {
>     sPAPRMachineState *spapr = SPAPR_MACHINE(machine);
>     int spapr_smp_cores = smp_cpus / smp_threads;
>     int spapr_max_cores = max_cpus / smp_threads;
> 
>     ...
>     for (i = 0; i < spapr_max_cores; i++) {
>         Object *obj = object_new(TYPE_SPAPR_CPU_CORE);
>         sPAPRCPUCore *core = SPAPR_CPU_CORE(obj);
>         char name[32];
> 
>         snprintf(name, sizeof(name), "%s[%d]", SPAPR_MACHINE_CPU_CORE_PROP, i);
> 
>         /*
>          * Create links from machine objects to all possible cores.
>          */
>         object_property_add_link(OBJECT(spapr), name, TYPE_SPAPR_CPU_CORE,
>                                  (Object **)&spapr->core[i],
>                                  NULL, NULL, &error_abort); 
> 
>         /*
>          * Set the QOM link from machine object to core object for all
>          * boot time CPUs specified with -smp. For rest of the hotpluggable
>          * cores this is done from the core hotplug path.
>          */
>         if (i < spapr_smp_cores) {
>             object_property_set_link(OBJECT(spapr), OBJECT(core),
>                                      SPAPR_MACHINE_CPU_CORE_PROP, &error_abort);

I hope we can at least have a helper function to both construct the
core and create the links, if we can't handle the link creation in the
core object itself.

Having to open-code it in each machine sounds like a recipe for subtle
differences in presentation between platforms, which is exactly what
we want to avoid.

>         }
>     ...
> }
> 

-- 
David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you.  NOT _the_ _other_
				| _way_ _around_!
http://www.ozlabs.org/~dgibson

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

  parent reply	other threads:[~2016-02-23 10:07 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-02-23  5:24 [Qemu-devel] CPU hotplug, again David Gibson
2016-02-23  9:40 ` Bharata B Rao
2016-02-23  9:49   ` Bharata B Rao
2016-02-23 10:05   ` David Gibson [this message]
2016-02-23 11:18     ` Igor Mammedov
2016-02-24  2:01       ` David Gibson
2016-02-24  4:02         ` Bharata B Rao
2016-02-24 10:48         ` Igor Mammedov
2016-02-24 11:28           ` David Gibson
2016-02-24 13:41             ` Igor Mammedov
2016-02-25  6:41               ` David Gibson
2016-02-25 13:29                 ` 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=20160223100504.GW2808@voom.fritz.box \
    --to=david@gibson.dropbear.id.au \
    --cc=afaerber@suse.de \
    --cc=agraf@suse.de \
    --cc=armbru@redhat.com \
    --cc=bharata@linux.vnet.ibm.com \
    --cc=ehabkost@redhat.com \
    --cc=imammedo@redhat.com \
    --cc=pbonzini@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 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.