}
}
-static void parse_memory_options(const char *arg)
+static void parse_memory_options(void)
{
- QemuOpts *opts;
+ QemuOpts *opts = qemu_find_opts_singleton("memory");
QDict *dict, *prop;
const char *mem_str;
+ Location loc;
- opts = qemu_opts_parse_noisily(qemu_find_opts("memory"), arg, true);
- if (!opts) {
- exit(EXIT_FAILURE);
- }
+ loc_push_none(&loc);
+ qemu_opts_loc_restore(opts);
prop = qdict_new();
qdict_put(dict, "memory", prop);
keyval_merge(machine_opts_dict, dict, &error_fatal);
qobject_unref(dict);
+ loc_pop(&loc);
}
static void qemu_create_machine(QDict *qdict)
if (g_str_equal(group, "object") ||
g_str_equal(group, "machine") ||
g_str_equal(group, "smp-opts") ||
- g_str_equal(group, "boot-opts") ||
- g_str_equal(group, "memory")) {
+ g_str_equal(group, "boot-opts")) {
return false;
}
return true;
machine_merge_property("smp", dict, &error_fatal);
} else if (g_str_equal(group, "boot-opts")) {
machine_merge_property("boot", dict, &error_fatal);
- } else if (g_str_equal(group, "memory")) {
- machine_merge_property("memory", dict, &error_fatal);
} else {
abort();
}
exit(0);
break;
case QEMU_OPTION_m:
- parse_memory_options(optarg);
+ opts = qemu_opts_parse_noisily(qemu_find_opts("memory"), optarg, true);
+ if (opts == NULL) {
+ exit(1);
+ }
break;
#ifdef CONFIG_TPM
case QEMU_OPTION_tpmdev:
configure_rtc(qemu_find_opts_singleton("rtc"));
+ /* Transfer QemuOpts options into machine options */
+ parse_memory_options();
+
qemu_create_machine(machine_opts_dict);
suspend_mux_open();