mirror of
https://github.com/xemu-project/xemu.git
synced 2025-02-09 05:38:34 +00:00
vl: stop recording -smp in QemuOpts
-readconfig is still recording SMP options in QemuOpts instead of using machine_opts_dict. This means that SMP options from -readconfig are ignored. Just stop using QemuOpts for -smp, making it return false for is_qemuopts_group. Configuration files will merge the values in machine_opts_dict using the new function machine_merge_property. At the same time, fix -mem-prealloc which looked at QemuOpts to find the number of guest CPUs, which it used as the default number of preallocation threads. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
a3c2f12830
commit
e4383ca240
22
softmmu/vl.c
22
softmmu/vl.c
@ -31,6 +31,7 @@
|
||||
#include "qapi/compat-policy.h"
|
||||
#include "qapi/error.h"
|
||||
#include "qapi/qmp/qdict.h"
|
||||
#include "qapi/qmp/qstring.h"
|
||||
#include "qapi/qmp/qjson.h"
|
||||
#include "qemu-version.h"
|
||||
#include "qemu/cutils.h"
|
||||
@ -2166,7 +2167,8 @@ static int global_init_func(void *opaque, QemuOpts *opts, Error **errp)
|
||||
static bool is_qemuopts_group(const char *group)
|
||||
{
|
||||
if (g_str_equal(group, "object") ||
|
||||
g_str_equal(group, "machine")) {
|
||||
g_str_equal(group, "machine") ||
|
||||
g_str_equal(group, "smp-opts")) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
@ -2186,6 +2188,8 @@ static void qemu_record_config_group(const char *group, QDict *dict,
|
||||
*/
|
||||
assert(!from_json);
|
||||
keyval_merge(machine_opts_dict, dict, errp);
|
||||
} else if (g_str_equal(group, "smp-opts")) {
|
||||
machine_merge_property("smp", dict, &error_fatal);
|
||||
} else {
|
||||
abort();
|
||||
}
|
||||
@ -2452,13 +2456,15 @@ static void qemu_validate_options(const QDict *machine_opts)
|
||||
static void qemu_process_sugar_options(void)
|
||||
{
|
||||
if (mem_prealloc) {
|
||||
char *val;
|
||||
|
||||
val = g_strdup_printf("%d",
|
||||
(uint32_t) qemu_opt_get_number(qemu_find_opts_singleton("smp-opts"), "cpus", 1));
|
||||
object_register_sugar_prop("memory-backend", "prealloc-threads", val,
|
||||
false);
|
||||
g_free(val);
|
||||
QObject *smp = qdict_get(machine_opts_dict, "smp");
|
||||
if (smp && qobject_type(smp) == QTYPE_QDICT) {
|
||||
QObject *cpus = qdict_get(qobject_to(QDict, smp), "cpus");
|
||||
if (cpus && qobject_type(cpus) == QTYPE_QSTRING) {
|
||||
const char *val = qstring_get_str(qobject_to(QString, cpus));
|
||||
object_register_sugar_prop("memory-backend", "prealloc-threads",
|
||||
val, false);
|
||||
}
|
||||
}
|
||||
object_register_sugar_prop("memory-backend", "prealloc", "on", false);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user