From: Like Xu <like.xu@linux.intel.com>
To: qemu-trivial@nongnu.org
Cc: qemu-devel@nongnu.org, Eduardo Habkost <ehabkost@redhat.com>,
Igor Mammedov <imammedo@redhat.com>,
Peter Maydell <peter.maydell@linaro.org>,
"Dr . David Alan Gilbert" <dgilbert@redhat.com>,
Alistair Francis <alistair23@gmail.com>
Subject: [Qemu-trivial] [Qemu-devel] [PATCH v3 10/10] vl.c: Replace smp global variables with smp machine properties
Date: Sun, 19 May 2019 04:54:28 +0800 [thread overview]
Message-ID: <20190518205428.90532-11-like.xu@linux.intel.com> (raw)
In-Reply-To: <20190518205428.90532-1-like.xu@linux.intel.com>
The global smp variables in vl.c are completely replaced with machine properties.
Form this commit, the smp_cpus/smp_cores/smp_threads/max_cpus are deprecated
and only machine properties within MachineState are fully applied and enabled.
Signed-off-by: Like Xu <like.xu@linux.intel.com>
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
---
vl.c | 53 ++++++++++++++++++++++++++---------------------------
1 file changed, 26 insertions(+), 27 deletions(-)
diff --git a/vl.c b/vl.c
index 15d519e371..a700c93c77 100644
--- a/vl.c
+++ b/vl.c
@@ -162,10 +162,6 @@ static Chardev **serial_hds;
Chardev *parallel_hds[MAX_PARALLEL_PORTS];
int win2k_install_hack = 0;
int singlestep = 0;
-int smp_cpus;
-unsigned int max_cpus;
-int smp_cores = 1;
-int smp_threads = 1;
int acpi_enabled = 1;
int no_hpet = 0;
int fd_bootchk = 1;
@@ -1282,8 +1278,9 @@ static void smp_parse(QemuOpts *opts)
sockets = sockets > 0 ? sockets : 1;
cpus = cores * threads * sockets;
} else {
- max_cpus = qemu_opt_get_number(opts, "maxcpus", cpus);
- sockets = max_cpus / (cores * threads);
+ current_machine->smp.max_cpus =
+ qemu_opt_get_number(opts, "maxcpus", cpus);
+ sockets = current_machine->smp.max_cpus / (cores * threads);
}
} else if (cores == 0) {
threads = threads > 0 ? threads : 1;
@@ -1300,34 +1297,37 @@ static void smp_parse(QemuOpts *opts)
exit(1);
}
- max_cpus = qemu_opt_get_number(opts, "maxcpus", cpus);
+ current_machine->smp.max_cpus =
+ qemu_opt_get_number(opts, "maxcpus", cpus);
- if (max_cpus < cpus) {
+ if (current_machine->smp.max_cpus < cpus) {
error_report("maxcpus must be equal to or greater than smp");
exit(1);
}
- if (sockets * cores * threads > max_cpus) {
+ if (sockets * cores * threads > current_machine->smp.max_cpus) {
error_report("cpu topology: "
"sockets (%u) * cores (%u) * threads (%u) > "
"maxcpus (%u)",
- sockets, cores, threads, max_cpus);
+ sockets, cores, threads,
+ current_machine->smp.max_cpus);
exit(1);
}
- if (sockets * cores * threads != max_cpus) {
+ if (sockets * cores * threads != current_machine->smp.max_cpus) {
warn_report("Invalid CPU topology deprecated: "
"sockets (%u) * cores (%u) * threads (%u) "
"!= maxcpus (%u)",
- sockets, cores, threads, max_cpus);
+ sockets, cores, threads,
+ current_machine->smp.max_cpus);
}
- smp_cpus = cpus;
- smp_cores = cores;
- smp_threads = threads;
+ current_machine->smp.cpus = cpus;
+ current_machine->smp.cores = cores;
+ current_machine->smp.threads = threads;
}
- if (smp_cpus > 1) {
+ if (current_machine->smp.cpus > 1) {
Error *blocker = NULL;
error_setg(&blocker, QERR_REPLAY_NOT_SUPPORTED, "smp");
replay_add_blocker(blocker);
@@ -4128,26 +4128,25 @@ int main(int argc, char **argv, char **envp)
machine_class->default_cpus = machine_class->default_cpus ?: 1;
/* default to machine_class->default_cpus */
- smp_cpus = machine_class->default_cpus;
- max_cpus = machine_class->default_cpus;
+ current_machine->smp.cpus = machine_class->default_cpus;
+ current_machine->smp.max_cpus = machine_class->default_cpus;
+ current_machine->smp.cores = 1;
+ current_machine->smp.threads = 1;
smp_parse(qemu_opts_find(qemu_find_opts("smp-opts"), NULL));
- current_machine->smp.cpus = smp_cpus;
- current_machine->smp.max_cpus = max_cpus;
- current_machine->smp.cores = smp_cores;
- current_machine->smp.threads = smp_threads;
-
/* sanity-check smp_cpus and max_cpus against machine_class */
- if (smp_cpus < machine_class->min_cpus) {
+ if (current_machine->smp.cpus < machine_class->min_cpus) {
error_report("Invalid SMP CPUs %d. The min CPUs "
- "supported by machine '%s' is %d", smp_cpus,
+ "supported by machine '%s' is %d",
+ current_machine->smp.cpus,
machine_class->name, machine_class->min_cpus);
exit(1);
}
- if (max_cpus > machine_class->max_cpus) {
+ if (current_machine->smp.max_cpus > machine_class->max_cpus) {
error_report("Invalid SMP CPUs %d. The max CPUs "
- "supported by machine '%s' is %d", max_cpus,
+ "supported by machine '%s' is %d",
+ current_machine->smp.max_cpus,
machine_class->name, machine_class->max_cpus);
exit(1);
}
--
2.21.0
WARNING: multiple messages have this Message-ID (diff)
From: Like Xu <like.xu@linux.intel.com>
To: qemu-trivial@nongnu.org
Cc: Peter Maydell <peter.maydell@linaro.org>,
Eduardo Habkost <ehabkost@redhat.com>,
qemu-devel@nongnu.org,
"Dr . David Alan Gilbert" <dgilbert@redhat.com>,
Alistair Francis <alistair23@gmail.com>,
Igor Mammedov <imammedo@redhat.com>
Subject: [Qemu-devel] [PATCH v3 10/10] vl.c: Replace smp global variables with smp machine properties
Date: Sun, 19 May 2019 04:54:28 +0800 [thread overview]
Message-ID: <20190518205428.90532-11-like.xu@linux.intel.com> (raw)
In-Reply-To: <20190518205428.90532-1-like.xu@linux.intel.com>
The global smp variables in vl.c are completely replaced with machine properties.
Form this commit, the smp_cpus/smp_cores/smp_threads/max_cpus are deprecated
and only machine properties within MachineState are fully applied and enabled.
Signed-off-by: Like Xu <like.xu@linux.intel.com>
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
---
vl.c | 53 ++++++++++++++++++++++++++---------------------------
1 file changed, 26 insertions(+), 27 deletions(-)
diff --git a/vl.c b/vl.c
index 15d519e371..a700c93c77 100644
--- a/vl.c
+++ b/vl.c
@@ -162,10 +162,6 @@ static Chardev **serial_hds;
Chardev *parallel_hds[MAX_PARALLEL_PORTS];
int win2k_install_hack = 0;
int singlestep = 0;
-int smp_cpus;
-unsigned int max_cpus;
-int smp_cores = 1;
-int smp_threads = 1;
int acpi_enabled = 1;
int no_hpet = 0;
int fd_bootchk = 1;
@@ -1282,8 +1278,9 @@ static void smp_parse(QemuOpts *opts)
sockets = sockets > 0 ? sockets : 1;
cpus = cores * threads * sockets;
} else {
- max_cpus = qemu_opt_get_number(opts, "maxcpus", cpus);
- sockets = max_cpus / (cores * threads);
+ current_machine->smp.max_cpus =
+ qemu_opt_get_number(opts, "maxcpus", cpus);
+ sockets = current_machine->smp.max_cpus / (cores * threads);
}
} else if (cores == 0) {
threads = threads > 0 ? threads : 1;
@@ -1300,34 +1297,37 @@ static void smp_parse(QemuOpts *opts)
exit(1);
}
- max_cpus = qemu_opt_get_number(opts, "maxcpus", cpus);
+ current_machine->smp.max_cpus =
+ qemu_opt_get_number(opts, "maxcpus", cpus);
- if (max_cpus < cpus) {
+ if (current_machine->smp.max_cpus < cpus) {
error_report("maxcpus must be equal to or greater than smp");
exit(1);
}
- if (sockets * cores * threads > max_cpus) {
+ if (sockets * cores * threads > current_machine->smp.max_cpus) {
error_report("cpu topology: "
"sockets (%u) * cores (%u) * threads (%u) > "
"maxcpus (%u)",
- sockets, cores, threads, max_cpus);
+ sockets, cores, threads,
+ current_machine->smp.max_cpus);
exit(1);
}
- if (sockets * cores * threads != max_cpus) {
+ if (sockets * cores * threads != current_machine->smp.max_cpus) {
warn_report("Invalid CPU topology deprecated: "
"sockets (%u) * cores (%u) * threads (%u) "
"!= maxcpus (%u)",
- sockets, cores, threads, max_cpus);
+ sockets, cores, threads,
+ current_machine->smp.max_cpus);
}
- smp_cpus = cpus;
- smp_cores = cores;
- smp_threads = threads;
+ current_machine->smp.cpus = cpus;
+ current_machine->smp.cores = cores;
+ current_machine->smp.threads = threads;
}
- if (smp_cpus > 1) {
+ if (current_machine->smp.cpus > 1) {
Error *blocker = NULL;
error_setg(&blocker, QERR_REPLAY_NOT_SUPPORTED, "smp");
replay_add_blocker(blocker);
@@ -4128,26 +4128,25 @@ int main(int argc, char **argv, char **envp)
machine_class->default_cpus = machine_class->default_cpus ?: 1;
/* default to machine_class->default_cpus */
- smp_cpus = machine_class->default_cpus;
- max_cpus = machine_class->default_cpus;
+ current_machine->smp.cpus = machine_class->default_cpus;
+ current_machine->smp.max_cpus = machine_class->default_cpus;
+ current_machine->smp.cores = 1;
+ current_machine->smp.threads = 1;
smp_parse(qemu_opts_find(qemu_find_opts("smp-opts"), NULL));
- current_machine->smp.cpus = smp_cpus;
- current_machine->smp.max_cpus = max_cpus;
- current_machine->smp.cores = smp_cores;
- current_machine->smp.threads = smp_threads;
-
/* sanity-check smp_cpus and max_cpus against machine_class */
- if (smp_cpus < machine_class->min_cpus) {
+ if (current_machine->smp.cpus < machine_class->min_cpus) {
error_report("Invalid SMP CPUs %d. The min CPUs "
- "supported by machine '%s' is %d", smp_cpus,
+ "supported by machine '%s' is %d",
+ current_machine->smp.cpus,
machine_class->name, machine_class->min_cpus);
exit(1);
}
- if (max_cpus > machine_class->max_cpus) {
+ if (current_machine->smp.max_cpus > machine_class->max_cpus) {
error_report("Invalid SMP CPUs %d. The max CPUs "
- "supported by machine '%s' is %d", max_cpus,
+ "supported by machine '%s' is %d",
+ current_machine->smp.max_cpus,
machine_class->name, machine_class->max_cpus);
exit(1);
}
--
2.21.0
next prev parent reply other threads:[~2019-05-19 12:56 UTC|newest]
Thread overview: 63+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-05-18 20:54 [Qemu-trivial] [Qemu-devel] [PATCH v3 00/10] Refactor cpu topo into machine properties Like Xu
2019-05-18 20:54 ` Like Xu
2019-05-18 20:54 ` [Qemu-trivial] [Qemu-devel] [PATCH v3 01/10] hw/boards: Add struct CpuTopology to MachineState Like Xu
2019-05-18 20:54 ` Like Xu
2019-05-18 20:54 ` [Qemu-trivial] [Qemu-devel] [PATCH v3 02/10] machine: Refactor smp-related call chains to pass MachineState Like Xu
2019-05-18 20:54 ` Like Xu
2019-05-18 20:54 ` [Qemu-trivial] [Qemu-devel] [PATCH v3 03/10] general: Replace global smp variables with smp machine properties Like Xu
2019-05-18 20:54 ` Like Xu
2019-05-18 20:54 ` [Qemu-trivial] [Qemu-devel] [PATCH v3 04/10] hw/ppc: Replace global smp variables with machine smp properties Like Xu
2019-05-18 20:54 ` Like Xu
2019-06-06 2:52 ` [Qemu-trivial] " Eduardo Habkost
2019-06-06 2:52 ` Eduardo Habkost
2019-06-06 2:54 ` [Qemu-trivial] " Eduardo Habkost
2019-06-06 2:54 ` Eduardo Habkost
2019-06-06 3:07 ` [Qemu-trivial] " David Gibson
2019-06-06 3:07 ` David Gibson
2019-06-06 8:20 ` [Qemu-trivial] [Qemu-ppc] " Greg Kurz
2019-06-06 8:20 ` [Qemu-devel] [Qemu-ppc] " Greg Kurz
2019-06-06 8:37 ` [Qemu-trivial] " Like Xu
2019-06-06 8:37 ` Like Xu
2019-05-18 20:54 ` [Qemu-trivial] [Qemu-devel] [PATCH v3 05/10] hw/riscv: " Like Xu
2019-05-18 20:54 ` Like Xu
2019-05-20 21:45 ` [Qemu-trivial] " Alistair Francis
2019-05-20 21:45 ` Alistair Francis
2019-06-20 14:52 ` [Qemu-trivial] " Eduardo Habkost
2019-06-20 14:52 ` Eduardo Habkost
2019-06-21 0:53 ` [Qemu-trivial] " Like Xu
2019-06-21 0:53 ` Like Xu
2019-05-18 20:54 ` [Qemu-trivial] [Qemu-devel] [PATCH v3 06/10] hw/s390x: " Like Xu
2019-05-18 20:54 ` Like Xu
2019-06-06 2:56 ` [Qemu-trivial] " Eduardo Habkost
2019-06-06 2:56 ` Eduardo Habkost
2019-06-06 7:07 ` [Qemu-trivial] [qemu-s390x] " Christian Borntraeger
2019-06-06 7:07 ` [Qemu-devel] [qemu-s390x] " Christian Borntraeger
2019-06-06 7:56 ` [Qemu-trivial] [Qemu-devel] " Cornelia Huck
2019-06-06 7:56 ` Cornelia Huck
2019-06-28 18:33 ` [Qemu-trivial] [PATCH] fixup! " Eduardo Habkost
2019-06-28 18:33 ` [Qemu-devel] " Eduardo Habkost
2019-06-28 23:04 ` [Qemu-trivial] " no-reply
2019-06-28 23:04 ` no-reply
2019-05-18 20:54 ` [Qemu-trivial] [Qemu-devel] [PATCH v3 07/10] hw/i386: " Like Xu
2019-05-18 20:54 ` Like Xu
2019-06-06 2:57 ` [Qemu-trivial] " Eduardo Habkost
2019-06-06 2:57 ` Eduardo Habkost
2019-05-18 20:54 ` [Qemu-trivial] [Qemu-devel] [PATCH v3 08/10] hw/arm: " Like Xu
2019-05-18 20:54 ` Like Xu
2019-06-06 2:58 ` [Qemu-trivial] " Eduardo Habkost
2019-06-06 2:58 ` Eduardo Habkost
2019-06-06 2:58 ` [Qemu-arm] " Eduardo Habkost
2019-05-18 20:54 ` [Qemu-trivial] [Qemu-devel] [PATCH v3 09/10] hw: Replace global smp variables with MachineState for all remaining archs Like Xu
2019-05-18 20:54 ` Like Xu
2019-06-06 3:00 ` Eduardo Habkost
2019-05-18 20:54 ` Like Xu [this message]
2019-05-18 20:54 ` [Qemu-devel] [PATCH v3 10/10] vl.c: Replace smp global variables with smp machine properties Like Xu
2019-06-06 3:00 ` [Qemu-trivial] " Eduardo Habkost
2019-06-06 3:00 ` Eduardo Habkost
2019-05-26 13:51 ` [Qemu-trivial] [Qemu-devel] [PATCH v3 00/10] Refactor cpu topo into " Like Xu
2019-05-26 13:51 ` Like Xu
2019-05-29 0:37 ` Like Xu
2019-06-06 3:02 ` [Qemu-trivial] " Eduardo Habkost
2019-06-06 3:02 ` Eduardo Habkost
2019-06-07 21:25 ` [Qemu-trivial] " Eduardo Habkost
2019-06-07 21:25 ` Eduardo Habkost
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=20190518205428.90532-11-like.xu@linux.intel.com \
--to=like.xu@linux.intel.com \
--cc=alistair23@gmail.com \
--cc=dgilbert@redhat.com \
--cc=ehabkost@redhat.com \
--cc=imammedo@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=qemu-trivial@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 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.