diff options
author | Paolo Bonzini | 2020-10-27 16:08:04 +0100 |
---|---|---|
committer | Paolo Bonzini | 2020-12-10 18:15:14 +0100 |
commit | 7a84268dc9be3456e8d7d2fcc5ad0e3dec50899d (patch) | |
tree | aa1f44977b8460460694400bdbd372a10093d46b /softmmu | |
parent | vl: separate qemu_create_machine (diff) | |
download | qemu-7a84268dc9be3456e8d7d2fcc5ad0e3dec50899d.tar.gz qemu-7a84268dc9be3456e8d7d2fcc5ad0e3dec50899d.tar.xz qemu-7a84268dc9be3456e8d7d2fcc5ad0e3dec50899d.zip |
vl: separate qemu_apply_machine_options
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'softmmu')
-rw-r--r-- | softmmu/vl.c | 81 |
1 files changed, 45 insertions, 36 deletions
diff --git a/softmmu/vl.c b/softmmu/vl.c index 5af52454ee..acf09b2040 100644 --- a/softmmu/vl.c +++ b/softmmu/vl.c @@ -2704,6 +2704,49 @@ static bool object_create_early(const char *type, QemuOpts *opts) return true; } +static void qemu_apply_machine_options(void) +{ + MachineClass *machine_class = MACHINE_GET_CLASS(current_machine); + QemuOpts *machine_opts = qemu_get_machine_opts(); + QemuOpts *opts; + + qemu_opt_foreach(machine_opts, machine_set_property, current_machine, + &error_fatal); + current_machine->ram_size = ram_size; + current_machine->maxram_size = maxram_size; + current_machine->ram_slots = ram_slots; + + opts = qemu_opts_find(qemu_find_opts("boot-opts"), NULL); + if (opts) { + boot_order = qemu_opt_get(opts, "order"); + if (boot_order) { + validate_bootdevices(boot_order, &error_fatal); + } + + boot_once = qemu_opt_get(opts, "once"); + if (boot_once) { + validate_bootdevices(boot_once, &error_fatal); + } + + boot_menu = qemu_opt_get_bool(opts, "menu", boot_menu); + boot_strict = qemu_opt_get_bool(opts, "strict", false); + } + + if (!boot_order) { + boot_order = machine_class->default_boot_order; + } + + current_machine->boot_order = boot_order; + + if (semihosting_enabled() && !semihosting_get_argc()) { + const char *kernel_filename = qemu_opt_get(machine_opts, "kernel"); + const char *kernel_cmdline = qemu_opt_get(machine_opts, "append") ?: ""; + /* fall back to the -kernel/-append */ + semihosting_arg_fallback(kernel_filename, kernel_cmdline); + } + +} + static void qemu_create_early_backends(void) { MachineClass *machine_class = MACHINE_GET_CLASS(current_machine); @@ -3448,7 +3491,7 @@ static void qemu_machine_creation_done(void) void qemu_init(int argc, char **argv, char **envp) { - QemuOpts *opts, *machine_opts; + QemuOpts *opts; QemuOpts *icount_opts = NULL, *accel_opts = NULL; QemuOptsList *olist; int optind; @@ -4387,12 +4430,7 @@ void qemu_init(int argc, char **argv, char **envp) qemu_create_default_devices(); qemu_create_early_backends(); - machine_opts = qemu_get_machine_opts(); - qemu_opt_foreach(machine_opts, machine_set_property, current_machine, - &error_fatal); - current_machine->ram_size = ram_size; - current_machine->maxram_size = maxram_size; - current_machine->ram_slots = ram_slots; + qemu_apply_machine_options(); /* * Note: uses machine properties such as kernel-irqchip, must run @@ -4428,37 +4466,8 @@ void qemu_init(int argc, char **argv, char **envp) */ migration_object_init(); - opts = qemu_opts_find(qemu_find_opts("boot-opts"), NULL); - if (opts) { - boot_order = qemu_opt_get(opts, "order"); - if (boot_order) { - validate_bootdevices(boot_order, &error_fatal); - } - - boot_once = qemu_opt_get(opts, "once"); - if (boot_once) { - validate_bootdevices(boot_once, &error_fatal); - } - - boot_menu = qemu_opt_get_bool(opts, "menu", boot_menu); - boot_strict = qemu_opt_get_bool(opts, "strict", false); - } - - if (!boot_order) { - boot_order = machine_class->default_boot_order; - } - - if (semihosting_enabled() && !semihosting_get_argc()) { - const char *kernel_filename = qemu_opt_get(machine_opts, "kernel"); - const char *kernel_cmdline = qemu_opt_get(machine_opts, "append"); - /* fall back to the -kernel/-append */ - semihosting_arg_fallback(kernel_filename, kernel_cmdline); - } - qemu_create_late_backends(); - current_machine->boot_order = boot_order; - /* parse features once if machine provides default cpu_type */ current_machine->cpu_type = machine_class->default_cpu_type; if (cpu_option) { |