From: Andrew Jones <drjones@redhat.com>
To: qemu-devel@nongnu.org, qemu-ppc@nongnu.org, qemu-arm@nongnu.org
Cc: peter.maydell@linaro.org, ehabkost@redhat.com, agraf@suse.de,
pbonzini@redhat.com, dgibson@redhat.com, imammedo@redhat.com,
david@gibson.dropbear.id.au
Subject: [Qemu-devel] [PATCH RFC 08/16] hw/core/machine: set cpu global nr_cores, nr_threads in pre_init
Date: Fri, 10 Jun 2016 19:40:19 +0200 [thread overview]
Message-ID: <1465580427-13596-9-git-send-email-drjones@redhat.com> (raw)
In-Reply-To: <1465580427-13596-1-git-send-email-drjones@redhat.com>
CPUState nr_cores and nr_threads are properties so we can set
them using the GlobalProperty API. Doing this in machine pre_init
allows us to easily propagate the values from the machine properties
to all cpus. An excellent bonus of this is that we can now remove
the references to the cpu topology globals smp_cores,smp_threads
from cpus.c.
Signed-off-by: Andrew Jones <drjones@redhat.com>
---
cpus.c | 2 --
hw/core/machine.c | 18 ++++++++++++++++++
2 files changed, 18 insertions(+), 2 deletions(-)
diff --git a/cpus.c b/cpus.c
index 326742f445eef..36d8faa0091c8 100644
--- a/cpus.c
+++ b/cpus.c
@@ -1427,8 +1427,6 @@ static void qemu_dummy_start_vcpu(CPUState *cpu)
void qemu_init_vcpu(CPUState *cpu)
{
- cpu->nr_cores = smp_cores;
- cpu->nr_threads = smp_threads;
cpu->stopped = true;
if (!cpu->as) {
diff --git a/hw/core/machine.c b/hw/core/machine.c
index 75c5a1fdd7de1..5427924d4c911 100644
--- a/hw/core/machine.c
+++ b/hw/core/machine.c
@@ -511,9 +511,22 @@ static void machine_set_smp_parameters(MachineState *ms)
ms->cpus = cpus;
}
+#define NR_CPUS_STRLEN sizeof(stringify(MAX_CPUMASK_BITS))
+
static void machine_pre_init(MachineState *ms)
{
MachineClass *mc = MACHINE_CLASS(object_get_class(OBJECT(ms)));
+ static char nr_cores[NR_CPUS_STRLEN], nr_threads[NR_CPUS_STRLEN];
+ static GlobalProperty cpu_nr_cores = {
+ .driver = "cpu",
+ .property = "nr-cores",
+ .value = nr_cores,
+ };
+ static GlobalProperty cpu_nr_threads = {
+ .driver = "cpu",
+ .property = "nr-threads",
+ .value = nr_threads,
+ };
machine_set_smp_parameters(ms);
smp_cores = ms->cores;
@@ -529,6 +542,11 @@ static void machine_pre_init(MachineState *ms)
exit(1);
}
+ snprintf(nr_cores, NR_CPUS_STRLEN, "%d", ms->cores);
+ snprintf(nr_threads, NR_CPUS_STRLEN, "%d", ms->threads);
+ qdev_prop_register_global(&cpu_nr_cores);
+ qdev_prop_register_global(&cpu_nr_threads);
+
if (ms->cpus > 1) {
Error *blocker = NULL;
error_setg(&blocker, QERR_REPLAY_NOT_SUPPORTED, "smp");
--
2.4.11
next prev parent reply other threads:[~2016-06-10 17:43 UTC|newest]
Thread overview: 77+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-06-10 17:40 [Qemu-arm] [PATCH RFC 00/16] Rework SMP parameters Andrew Jones
2016-06-10 17:40 ` [Qemu-arm] [PATCH RFC 01/16] vl: smp_parse: cleanups Andrew Jones
2016-06-14 1:15 ` David Gibson
2016-06-10 17:40 ` [Qemu-arm] [PATCH RFC 02/16] vl: smp: add checks for maxcpus based topologies Andrew Jones
2016-06-14 1:28 ` David Gibson
2016-06-14 6:43 ` [Qemu-arm] [Qemu-devel] " Andrew Jones
2016-06-10 17:40 ` [Qemu-arm] [PATCH RFC 03/16] hw/smbios/smbios: fix number of sockets calculation Andrew Jones
2016-07-11 14:23 ` Igor Mammedov
2016-06-10 17:40 ` [Qemu-arm] [PATCH RFC 04/16] hw/core/machine: Introduce pre_init Andrew Jones
2016-06-14 1:30 ` David Gibson
2016-06-14 5:58 ` [Qemu-arm] [Qemu-devel] " Andrew Jones
2016-07-14 20:10 ` Eduardo Habkost
2016-07-15 6:26 ` Andrew Jones
2016-06-10 17:40 ` [Qemu-arm] [PATCH RFC 05/16] hw/core/machine: add smp properites Andrew Jones
2016-06-14 2:00 ` David Gibson
2016-06-14 6:08 ` [Qemu-arm] [Qemu-devel] " Andrew Jones
2016-06-15 0:37 ` David Gibson
2016-06-15 7:11 ` Andrew Jones
2016-07-14 20:18 ` Eduardo Habkost
2016-07-15 6:29 ` Andrew Jones
2016-06-10 17:40 ` [Qemu-arm] [PATCH RFC 06/16] vl: move smp parsing to machine pre_init Andrew Jones
2016-06-13 17:04 ` Paolo Bonzini
2016-06-13 20:35 ` [Qemu-arm] [Qemu-devel] " Andrew Jones
2016-06-14 8:17 ` Paolo Bonzini
2016-06-14 11:39 ` [Qemu-arm] " Andrew Jones
2016-06-14 11:53 ` [Qemu-arm] " Paolo Bonzini
2016-06-14 14:03 ` [Qemu-devel] " Andrew Jones
2016-06-14 14:05 ` [Qemu-arm] " Paolo Bonzini
2016-06-15 0:51 ` David Gibson
2016-06-15 7:19 ` Andrew Jones
2016-06-15 0:43 ` [Qemu-arm] " David Gibson
2016-06-10 17:40 ` [Qemu-devel] [PATCH RFC 07/16] qom/cpu: make nr-cores, nr-threads real properties Andrew Jones
2016-06-11 6:54 ` [Qemu-arm] " Thomas Huth
2016-06-12 13:48 ` Andrew Jones
2016-06-14 2:12 ` David Gibson
2016-06-14 6:19 ` Andrew Jones
2016-06-15 0:56 ` David Gibson
2016-07-14 20:07 ` Eduardo Habkost
2016-07-15 6:35 ` Andrew Jones
2016-07-15 9:11 ` Igor Mammedov
2016-07-15 16:10 ` [Qemu-devel] QOM: best way for parents to pass information to children? (was Re: [PATCH RFC 07/16] qom/cpu: make nr-cores, nr-threads real properties) Eduardo Habkost
2016-07-15 16:10 ` [Qemu-arm] QOM: best way for parents to pass information to children? (was Re: [Qemu-devel] " Eduardo Habkost
2016-07-15 16:30 ` [Qemu-devel] QOM: best way for parents to pass information to children? (was " Andreas Färber
2016-07-15 16:30 ` [Qemu-arm] QOM: best way for parents to pass information to children? (was Re: [Qemu-devel] " Andreas Färber
2016-07-15 17:43 ` [Qemu-devel] QOM: best way for parents to pass information to children? (was " Eduardo Habkost
2016-07-15 17:43 ` [Qemu-arm] QOM: best way for parents to pass information to children? (was Re: [Qemu-devel] " Eduardo Habkost
2016-07-15 18:38 ` [Qemu-arm] [Qemu-devel] QOM: best way for parents to pass information to children? (was " Igor Mammedov
2016-07-15 21:33 ` Eduardo Habkost
2016-07-16 15:30 ` Andrew Jones
2016-07-19 11:54 ` Eduardo Habkost
2016-07-18 7:23 ` Igor Mammedov
2016-07-19 11:59 ` Eduardo Habkost
2016-07-19 12:21 ` Paolo Bonzini
2016-07-19 13:29 ` Igor Mammedov
2016-07-19 13:39 ` Paolo Bonzini
2016-06-10 17:40 ` Andrew Jones [this message]
2016-06-10 17:40 ` [Qemu-arm] [PATCH RFC 09/16] hw/i386/pc: don't use smp_cores, smp_threads Andrew Jones
2016-07-14 20:33 ` [Qemu-devel] " Eduardo Habkost
2016-06-10 17:40 ` [Qemu-arm] [PATCH RFC 10/16] hw/ppc/spapr: " Andrew Jones
2016-06-14 3:03 ` David Gibson
2016-06-14 6:23 ` [Qemu-arm] [Qemu-devel] " Andrew Jones
2016-06-15 0:59 ` David Gibson
2016-06-15 7:34 ` Andrew Jones
2016-06-10 17:40 ` [Qemu-arm] [PATCH RFC 11/16] target-ppc: don't use smp_threads Andrew Jones
2016-06-10 17:40 ` [Qemu-devel] [PATCH RFC 12/16] hw/arm/virt: rename *.smp_cpus to *.cpus Andrew Jones
2016-06-10 17:40 ` [Qemu-arm] [PATCH RFC 13/16] hw/arm/virt: don't use smp_cpus, max_cpus Andrew Jones
2016-06-10 17:40 ` [Qemu-arm] [PATCH RFC 14/16] hw/arm/virt: stash cpu topo info in VirtGuestInfo Andrew Jones
2016-07-14 20:43 ` [Qemu-arm] [Qemu-devel] " Eduardo Habkost
2016-07-15 6:40 ` Andrew Jones
2016-06-10 17:40 ` [Qemu-devel] [PATCH RFC 15/16] smbios: don't use smp_cores, smp_threads Andrew Jones
2016-07-14 20:51 ` [Qemu-arm] " Eduardo Habkost
2016-07-15 6:45 ` Andrew Jones
2016-06-10 17:40 ` [Qemu-arm] [PATCH RFC 16/16] sysemu/cpus: bye, bye " Andrew Jones
2016-06-11 6:42 ` [Qemu-arm] [Qemu-devel] [PATCH RFC 00/16] Rework SMP parameters Thomas Huth
2016-06-12 13:58 ` Andrew Jones
2016-06-12 14:03 ` Andrew Jones
2016-07-14 9:16 ` Andrew Jones
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=1465580427-13596-9-git-send-email-drjones@redhat.com \
--to=drjones@redhat.com \
--cc=agraf@suse.de \
--cc=david@gibson.dropbear.id.au \
--cc=dgibson@redhat.com \
--cc=ehabkost@redhat.com \
--cc=imammedo@redhat.com \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=qemu-ppc@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).