diff options
-rw-r--r-- | include/hw/boards.h | 6 | ||||
-rw-r--r-- | vl.c | 10 |
2 files changed, 16 insertions, 0 deletions
diff --git a/include/hw/boards.h b/include/hw/boards.h index 7f044d101d..6b67adaef6 100644 --- a/include/hw/boards.h +++ b/include/hw/boards.h @@ -125,6 +125,10 @@ typedef struct { * Caller is responsible for freeing returned list. * @has_hotpluggable_cpus: * If true, board supports CPUs creation with -device/device_add. + * @default_cpu_type: + * specifies default CPU_TYPE, which will be used for parsing target + * specific features and for creating CPUs if CPU name wasn't provided + * explicitly at CLI * @minimum_page_bits: * If non-zero, the board promises never to create a CPU with a page size * smaller than this, so QEMU can use a more efficient larger page @@ -177,6 +181,7 @@ struct MachineClass { GArray *compat_props; const char *hw_version; ram_addr_t default_ram_size; + const char *default_cpu_type; bool option_rom_has_mr; bool rom_file_has_mr; int minimum_page_bits; @@ -231,6 +236,7 @@ struct MachineState { char *kernel_cmdline; char *initrd_filename; const char *cpu_model; + const char *cpu_type; AccelState *accelerator; CPUArchIdList *possible_cpus; }; @@ -4716,6 +4716,16 @@ int main(int argc, char **argv, char **envp) current_machine->boot_order = boot_order; current_machine->cpu_model = cpu_model; + + /* parse features once if machine provides default cpu_type */ + if (machine_class->default_cpu_type) { + current_machine->cpu_type = machine_class->default_cpu_type; + if (cpu_model) { + current_machine->cpu_type = + cpu_parse_cpu_model(machine_class->default_cpu_type, cpu_model); + } + } + machine_run_board_init(current_machine); realtime_init(); |