diff options
| author | Peter Maydell <peter.maydell@linaro.org> | 2017-10-10 13:25:46 +0100 |
|---|---|---|
| committer | Peter Maydell <peter.maydell@linaro.org> | 2017-10-10 13:25:46 +0100 |
| commit | 567d0a19c7998fa366598b83d5a6e5f0759d3ea9 (patch) | |
| tree | 7cac6341df37f80a05a7d71bdabe1ff3892c9994 /hw/core/machine.c | |
| parent | 530049bc1dcc24c1178a29d99ca08b6dd08413e0 (diff) | |
| parent | e0dd5fd41a1a38766009f442967fab700d2d0550 (diff) | |
| download | focaccia-qemu-567d0a19c7998fa366598b83d5a6e5f0759d3ea9.tar.gz focaccia-qemu-567d0a19c7998fa366598b83d5a6e5f0759d3ea9.zip | |
Merge remote-tracking branch 'remotes/ehabkost/tags/x86-and-machine-pull-request' into staging
x86 and machine queue, 2017-10-09 Includes x86, QOM, CPU, and option/config parsing patches. Highlights: * Deprecation of -nodefconfig option; * MachineClass::valid_cpu_types field. # gpg: Signature made Tue 10 Oct 2017 03:31:33 BST # gpg: using RSA key 0x2807936F984DC5A6 # gpg: Good signature from "Eduardo Habkost <ehabkost@redhat.com>" # Primary key fingerprint: 5A32 2FD5 ABC4 D3DB ACCF D1AA 2807 936F 984D C5A6 * remotes/ehabkost/tags/x86-and-machine-pull-request: x86: Correct translation of some rdgsbase and wrgsbase encodings vl: exit if maxcpus is negative qom: update doc comment for type_register[_static]() config: qemu_config_parse() return number of config groups qemu-options: Deprecate -nodefconfig vl: Eliminate defconfig variable machine: Add a valid_cpu_types property qom/cpu: move cpu_model null check to cpu_class_by_name() Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'hw/core/machine.c')
| -rw-r--r-- | hw/core/machine.c | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/hw/core/machine.c b/hw/core/machine.c index 80647edc2a..36c2fb069c 100644 --- a/hw/core/machine.c +++ b/hw/core/machine.c @@ -758,6 +758,38 @@ void machine_run_board_init(MachineState *machine) if (nb_numa_nodes) { machine_numa_finish_init(machine); } + + /* If the machine supports the valid_cpu_types check and the user + * specified a CPU with -cpu check here that the user CPU is supported. + */ + if (machine_class->valid_cpu_types && machine->cpu_type) { + ObjectClass *class = object_class_by_name(machine->cpu_type); + int i; + + for (i = 0; machine_class->valid_cpu_types[i]; i++) { + if (object_class_dynamic_cast(class, + machine_class->valid_cpu_types[i])) { + /* The user specificed CPU is in the valid field, we are + * good to go. + */ + break; + } + } + + if (!machine_class->valid_cpu_types[i]) { + /* The user specified CPU is not valid */ + error_report("Invalid CPU type: %s", machine->cpu_type); + error_printf("The valid types are: %s", + machine_class->valid_cpu_types[0]); + for (i = 1; machine_class->valid_cpu_types[i]; i++) { + error_printf(", %s", machine_class->valid_cpu_types[i]); + } + error_printf("\n"); + + exit(1); + } + } + machine_class->init(machine); } |