From: Bharata B Rao <bharata@linux.vnet.ibm.com>
To: Igor Mammedov <imammedo@redhat.com>
Cc: Eduardo Habkost <ehabkost@redhat.com>,
qemu-devel@nongnu.org, Dou Liyang <douly.fnst@cn.fujitsu.com>,
fanc.fnst@cn.fujitsu.com, caoj.fnst@cn.fujitsu.com,
stefanha@redhat.com, izumi.taku@jp.fujitsu.com,
vilanova@ac.upc.edu, peter.maydell@linaro.org,
Andrew Jones <drjones@redhat.com>,
David Gibson <david@gibson.dropbear.id.au>,
Thomas Huth <thuth@redhat.com>
Subject: Re: [Qemu-devel] [RFC 08/13] pc: add writeonly 'cpu' property to PCMachine
Date: Mon, 23 Jan 2017 12:20:33 +0530 [thread overview]
Message-ID: <20170123065033.GD21081@in.ibm.com> (raw)
In-Reply-To: <20170119160423.761d2c57@nial.brq.redhat.com>
On Thu, Jan 19, 2017 at 04:04:23PM +0100, Igor Mammedov wrote:
> On Wed, 18 Jan 2017 16:57:13 -0200
> Eduardo Habkost <ehabkost@redhat.com> wrote:
>
> > On Wed, Jan 18, 2017 at 06:13:24PM +0100, Igor Mammedov wrote:
> > > it will allow generic numa code to set cpu to numa node mapping
> > > in target independent manner in the next patch.
> > >
> > > Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> > > ---
> > > hw/i386/pc.c | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> > > 1 file changed, 56 insertions(+)
> > >
> > > diff --git a/hw/i386/pc.c b/hw/i386/pc.c
> > > index f8ea635..1d33a5e 100644
> > > --- a/hw/i386/pc.c
> > > +++ b/hw/i386/pc.c
> > > @@ -2201,6 +2201,56 @@ static void pc_machine_set_pit(Object *obj, bool value, Error **errp)
> > > pcms->pit = value;
> > > }
> > >
> > > +static void pc_machine_set_cpu(Object *obj, Visitor *v, const char *name,
> > > + void *opaque, Error **errp)
> > > +{
> > > + uint32_t apic_id;
> > > + X86CPUTopoInfo topo;
> > > + CPUArchId *cpu_slot;
> > > + Error *local_err = NULL;
> > > + CpuInstanceProperties *cpu_props = NULL;
> > > + PCMachineState *pcms = PC_MACHINE(obj);
> > > + MachineClass *mc = MACHINE_GET_CLASS(obj);
> > > +
> > > + visit_type_CpuInstanceProperties(v, name, &cpu_props, &local_err);
> > > + if (local_err) {
> > > + goto out;
> > > + }
> > > +
> > > + if (!cpu_props->has_node_id) {
> > > + error_setg(&local_err, "node-id property is not specified");
> > > + goto out;
> > > + }
> > > +
> > > + /*
> > > + * make sure that possible_cpus is initialized
> > > + * as property setter might be called before machine init is called
> > > + */
> > > + mc->possible_cpu_arch_ids(MACHINE(obj));
> > > +
> > > + topo.pkg_id = cpu_props->socket_id;
> > > + topo.core_id = cpu_props->core_id;
> > > + topo.smt_id = cpu_props->thread_id;
> > > + apic_id = apicid_from_topo_ids(smp_cores, smp_threads, &topo);
> > > + cpu_slot = pc_find_cpu_slot(pcms, apic_id, NULL);
> >
> > If we make TYPE_MACHINE provide an API to query CPU slots, e.g.:
> > CPUArchId *machine_find_cpu_slot(MachineState *m, CpuInstanceProperties *props)
> so if there is no objections,
> I'll move possible_cpus to MachineState
> and add to MachineClass above callback so target machine
> would be able to provide arch specific lookup function.
> it should work for both x86 and ARM.
The need for possible_cpus in MachineState for sPAPR isn't immediately
apparent to me. In the context of this new numa "cpu" property, PC target
seems to use possible_cpus to store and later lookup the numa node id for
a given CPU. Wondering if that could be achieved w/o needing possible_cpus
in MachineState ?
Regards,
Bharata.
next prev parent reply other threads:[~2017-01-23 6:50 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-01-18 17:13 [Qemu-devel] [RFC 00/13] numa: add '-numa cpu' option Igor Mammedov
2017-01-18 17:13 ` [Qemu-devel] [RFC 01/13] numa: access CPU's node id via property in hmp_info_numa() Igor Mammedov
2017-01-18 18:18 ` Eduardo Habkost
2017-01-19 14:41 ` Igor Mammedov
2017-01-18 17:13 ` [Qemu-devel] [RFC 02/13] pc: cleanup: move smbios_set_cpuid() into pc_build_smbios() Igor Mammedov
2017-01-20 19:01 ` Eduardo Habkost
2017-01-18 17:13 ` [Qemu-devel] [RFC 03/13] pc: don't return cpu pointer from pc_new_cpu() as it's not needed anymore Igor Mammedov
2017-01-20 19:02 ` Eduardo Habkost
2017-01-18 17:13 ` [Qemu-devel] [RFC 04/13] make possible_cpu_arch_ids() return const pointer Igor Mammedov
2017-01-18 17:13 ` [Qemu-devel] [RFC 05/13] pc: move pcms->possible_cpus init out of pc_cpus_init() Igor Mammedov
2017-01-20 3:31 ` Dou Liyang
2017-01-20 15:33 ` Igor Mammedov
2017-01-18 17:13 ` [Qemu-devel] [RFC 06/13] pc: calculate topology only once when possible_cpus is initialised Igor Mammedov
2017-01-18 17:13 ` [Qemu-devel] [RFC 07/13] pc: pass apic_id to pc_find_cpu_slot() directly so lookup could be done without CPU object Igor Mammedov
2017-01-18 17:13 ` [Qemu-devel] [RFC 08/13] pc: add writeonly 'cpu' property to PCMachine Igor Mammedov
2017-01-18 18:27 ` Eduardo Habkost
2017-01-19 14:45 ` Igor Mammedov
2017-01-18 18:57 ` Eduardo Habkost
2017-01-19 15:04 ` Igor Mammedov
2017-01-23 6:50 ` Bharata B Rao [this message]
2017-01-23 15:03 ` Eduardo Habkost
2017-01-24 10:07 ` Igor Mammedov
2017-01-18 17:13 ` [Qemu-devel] [RFC 09/13] numa: introduce '-numa cpu' cpu option Igor Mammedov
2017-01-18 18:22 ` Eric Blake
2017-01-19 15:09 ` Igor Mammedov
2017-01-20 13:40 ` Paolo Bonzini
2017-01-20 15:33 ` Igor Mammedov
2017-01-18 17:13 ` [Qemu-devel] [RFC 10/13] numa: replace cpu_index_to_socket_id() with cpu_index_to_instance_props() Igor Mammedov
2017-01-18 17:13 ` [Qemu-devel] [RFC 11/13] numa: use new machine.cpu property with -numa cpus=... CLI Igor Mammedov
2017-01-18 18:46 ` Eduardo Habkost
2017-01-19 14:36 ` Igor Mammedov
2017-01-18 17:13 ` [Qemu-devel] [RFC 12/13] pc: drop usage of legacy numa_get_node_for_cpu() Igor Mammedov
2017-01-18 17:13 ` [Qemu-devel] [RFC 13/13] pc: cpu: make sure that cpu.node-id matches -numa mapping Igor Mammedov
2017-01-19 9:45 ` [Qemu-devel] [RFC 00/13] numa: add '-numa cpu' option Daniel P. Berrange
2017-01-19 10:55 ` Eduardo Habkost
2017-01-19 14:09 ` Igor Mammedov
2017-01-20 15:37 ` 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=20170123065033.GD21081@in.ibm.com \
--to=bharata@linux.vnet.ibm.com \
--cc=caoj.fnst@cn.fujitsu.com \
--cc=david@gibson.dropbear.id.au \
--cc=douly.fnst@cn.fujitsu.com \
--cc=drjones@redhat.com \
--cc=ehabkost@redhat.com \
--cc=fanc.fnst@cn.fujitsu.com \
--cc=imammedo@redhat.com \
--cc=izumi.taku@jp.fujitsu.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@redhat.com \
--cc=thuth@redhat.com \
--cc=vilanova@ac.upc.edu \
/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.