From: Igor Mammedov <imammedo@redhat.com>
To: David Gibson <david@gibson.dropbear.id.au>
Cc: qemu-devel@nongnu.org, peter.maydell@linaro.org,
pkrempa@redhat.com, ehabkost@redhat.com, pbonzini@redhat.com,
drjones@redhat.com, cohuck@redhat.com
Subject: Re: [Qemu-devel] [RFC v2 3/6] possible_cpus: add CPUArchId::type field
Date: Tue, 31 Oct 2017 15:01:14 +0100 [thread overview]
Message-ID: <20171031150114.60e0958e@nial.brq.redhat.com> (raw)
In-Reply-To: <20171019063151.GA13245@umbus>
On Thu, 19 Oct 2017 17:31:51 +1100
David Gibson <david@gibson.dropbear.id.au> wrote:
> On Wed, Oct 18, 2017 at 01:12:12PM +0200, Igor Mammedov wrote:
> > For enabling early cpu to numa node configuration at runtime
> > qmp_query_hotpluggable_cpus() should provide a list of available
> > cpu slots at early stage, before machine_init() is called and
> > the 1st cpu is created, so that mgmt might be able to call it
> > and use output to set numa mapping.
> > Use MachineClass::possible_cpu_arch_ids() callback to set
> > cpu type info, along with the rest of possible cpu properties,
> > to let machine define which cpu type* will be used.
> >
> > * for SPAPR it will be a spapr core type and for ARM/s390x/x86
> > a respective descendant of CPUClass.
> >
> > Move parse_numa_opts() in vl.c after cpu_model is parsed into
> > cpu_type so that possible_cpu_arch_ids() would know which
> > cpu_type to use during layout initialization.
> >
> > Signed-off-by: Igor Mammedov <imammedo@redhat.com>
>
> Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
>
> > ---
> > v2:
> > - fix NULL dereference caused by not initialized
> > MachineState::cpu_type at the time parse_numa_opts()
> > were called
> > ---
> > include/hw/boards.h | 2 ++
> > hw/arm/virt.c | 3 ++-
> > hw/core/machine.c | 12 ++++++------
> > hw/i386/pc.c | 4 +++-
> > hw/ppc/spapr.c | 13 ++++++++-----
> > hw/s390x/s390-virtio-ccw.c | 1 +
> > vl.c | 3 +--
> > 7 files changed, 23 insertions(+), 15 deletions(-)
> >
> > diff --git a/include/hw/boards.h b/include/hw/boards.h
> > index 191a5b3..fa21758 100644
> > --- a/include/hw/boards.h
> > +++ b/include/hw/boards.h
> > @@ -80,6 +80,7 @@ void machine_set_cpu_numa_node(MachineState *machine,
> > * CPUArchId:
> > * @arch_id - architecture-dependent CPU ID of present or possible CPU
>
> I know this isn't really in scope for this patch, but is @arch_id here
> supposed to have meaning defined by the target, or by the machine?
>
> If it's the machime, it could do with a rename - "arch" means target
> to most people (thanks to Linux).
>
> If it's the target, it's kind of bogus, because it doesn't necessarily
> have a clear meaning per target - get_arch_id in CPUClass has the same
> problem, which is probably one reason it's basically only used by the
> x86 code at present.
>
> e.g. for target/ppc, what do we use? There's the PIR, which is in the
> CPU.. but only on some cpu models, not all. There will generally be
> some kind of master PIC id, but there are different PIC models on
> different boards. What goes in the devicetree? Well only some
> machines use devicetree, and they might define the cpu reg
> differently.
>
> Board designs will generally try to make some if not all of those
> possible values equal for simplicity, but there's still no real way of
> defining a sensible arch_id independent of machine / board.
I'd say arch_id is machine specific so far, it was introduced when we
didn't have CpuInstanceProperties and at that time we considered only
vcpus (threads) and doesn't really apply to spapr cores.
In general we could do away with arch_id and use CpuInstanceProperties
instead, but arch_id also serves aux purpose, it allows machine to
pre-calculate(cache) apic-id/mpidr values in one place and then they
are/(could be) used by arch in-depended code to build acpi tables.
So if we drop arch_id we would need to introduce a machine hook,
which would translate CpuInstanceProperties into current arch_id.
next prev parent reply other threads:[~2017-10-31 14:01 UTC|newest]
Thread overview: 93+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-10-16 16:22 [Qemu-devel] [RFC 0/6] enable numa configuration before machine_init() from HMP/QMP Igor Mammedov
2017-10-16 16:22 ` [Qemu-devel] [RFC 1/6] numa: postpone options post-processing till machine_run_board_init() Igor Mammedov
2017-10-17 5:49 ` David Gibson
2017-10-16 16:22 ` [Qemu-devel] [RFC 2/6] numa: split out NumaOptions parsing into parse_NumaOptions() Igor Mammedov
2017-10-18 3:27 ` David Gibson
2017-10-18 14:53 ` Eric Blake
2017-10-16 16:22 ` [Qemu-devel] [RFC 3/6] possible_cpus: add CPUArchId::type field Igor Mammedov
2017-10-18 11:12 ` [Qemu-devel] [RFC v2 " Igor Mammedov
2017-10-19 6:31 ` David Gibson
2017-10-31 14:01 ` Igor Mammedov [this message]
2017-11-06 18:02 ` Eduardo Habkost
2017-11-07 15:04 ` Cornelia Huck
2017-11-09 6:58 ` David Gibson
2017-11-09 20:02 ` Eduardo Habkost
2017-11-10 10:14 ` Cornelia Huck
2017-11-10 12:34 ` David Hildenbrand
2017-11-10 12:58 ` Eduardo Habkost
2017-11-10 13:07 ` David Hildenbrand
2017-11-21 14:02 ` Igor Mammedov
2017-11-09 6:53 ` David Gibson
2017-10-16 16:22 ` [Qemu-devel] [RFC 4/6] CLI: add -paused option Igor Mammedov
2017-10-16 16:35 ` Daniel P. Berrange
2017-10-17 8:17 ` Igor Mammedov
2017-10-17 10:56 ` Laszlo Ersek
2017-10-17 11:11 ` Peter Krempa
2017-10-20 15:38 ` Eduardo Habkost
2017-10-16 16:59 ` Eduardo Habkost
2017-10-16 17:01 ` Paolo Bonzini
2017-10-16 17:17 ` Eduardo Habkost
2017-10-17 8:47 ` Paolo Bonzini
2017-10-17 9:25 ` Igor Mammedov
2017-10-17 14:48 ` Daniel P. Berrange
2017-10-17 15:21 ` Laszlo Ersek
2017-10-17 15:35 ` Daniel P. Berrange
2017-10-17 15:42 ` Laszlo Ersek
2017-10-17 15:47 ` Daniel P. Berrange
2017-10-17 15:47 ` Igor Mammedov
2017-10-17 15:52 ` Daniel P. Berrange
2017-10-17 9:10 ` Igor Mammedov
2017-10-19 10:42 ` David Gibson
2017-10-20 0:15 ` Eduardo Habkost
2017-10-20 1:19 ` David Gibson
2017-10-20 14:21 ` Eduardo Habkost
2017-10-23 9:49 ` Igor Mammedov
2017-10-23 9:53 ` Daniel P. Berrange
2017-10-23 10:36 ` Igor Mammedov
2017-10-23 10:49 ` Daniel P. Berrange
2017-10-23 11:18 ` Igor Mammedov
2017-10-25 10:52 ` Eduardo Habkost
2017-10-25 10:35 ` Eduardo Habkost
2017-10-23 9:30 ` Alex Bennée
2017-10-16 16:22 ` [Qemu-devel] [RFC 5/6] HMP: add set-numa-node command Igor Mammedov
2017-10-16 16:22 ` [Qemu-devel] [RFC 6/6] QMP: " Igor Mammedov
2017-10-16 16:36 ` [Qemu-devel] [RFC 0/6] enable numa configuration before machine_init() from HMP/QMP Daniel P. Berrange
2017-10-16 17:05 ` Eduardo Habkost
2017-10-17 7:27 ` Igor Mammedov
2017-10-17 15:07 ` Daniel P. Berrange
2017-10-17 15:24 ` Laszlo Ersek
2017-10-17 16:06 ` Igor Mammedov
2017-10-17 16:09 ` Daniel P. Berrange
2017-10-17 16:18 ` Igor Mammedov
2017-10-18 12:59 ` Eduardo Habkost
2017-10-18 14:44 ` Igor Mammedov
2017-10-18 14:49 ` Daniel P. Berrange
2017-10-18 15:24 ` Igor Mammedov
2017-10-18 15:27 ` Daniel P. Berrange
2017-10-18 20:11 ` Eduardo Habkost
2017-10-18 15:30 ` Daniel P. Berrange
2017-10-18 20:22 ` Eduardo Habkost
2017-10-19 11:49 ` David Gibson
2017-10-19 12:23 ` Paolo Bonzini
2017-10-20 1:21 ` David Gibson
2017-10-20 19:53 ` Eduardo Habkost
2017-10-23 8:17 ` Igor Mammedov
2017-10-23 8:45 ` Igor Mammedov
2017-10-25 6:57 ` Eduardo Habkost
2017-10-25 7:02 ` Daniel P. Berrange
2017-10-25 13:37 ` Eduardo Habkost
2017-10-19 15:21 ` Igor Mammedov
2017-10-19 15:28 ` Daniel P. Berrange
2017-10-19 19:56 ` Eduardo Habkost
2017-10-20 9:07 ` Daniel P. Berrange
2017-10-20 20:07 ` Eduardo Habkost
2017-10-23 8:53 ` Igor Mammedov
2017-10-23 10:04 ` Igor Mammedov
2017-10-23 10:19 ` Daniel P. Berrange
2017-10-18 12:19 ` Paolo Bonzini
2017-10-18 12:27 ` Daniel P. Berrange
2017-10-18 12:33 ` Paolo Bonzini
2017-10-18 14:26 ` Igor Mammedov
2017-10-18 14:29 ` Paolo Bonzini
2017-10-18 14:54 ` Igor Mammedov
2017-10-18 14:21 ` 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=20171031150114.60e0958e@nial.brq.redhat.com \
--to=imammedo@redhat.com \
--cc=cohuck@redhat.com \
--cc=david@gibson.dropbear.id.au \
--cc=drjones@redhat.com \
--cc=ehabkost@redhat.com \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=pkrempa@redhat.com \
--cc=qemu-devel@nongnu.org \
/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).