[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 13/17] target-i386: cpu: create cpu_x86_find_cpudef(
From: |
Eduardo Habkost |
Subject: |
[Qemu-devel] [PATCH 13/17] target-i386: cpu: create cpu_x86_find_cpudef() function |
Date: |
Mon, 12 Nov 2012 19:38:58 -0200 |
Move the code that looks for a given CPU model to a separate function.
This will make it easier to separate the cpudef lookup code and the
feature string parsing code, later.
Signed-off-by: Eduardo Habkost <address@hidden>
---
target-i386/cpu.c | 36 ++++++++++++++++++++++++++++--------
1 file changed, 28 insertions(+), 8 deletions(-)
diff --git a/target-i386/cpu.c b/target-i386/cpu.c
index 3a85989..c2594bd 100644
--- a/target-i386/cpu.c
+++ b/target-i386/cpu.c
@@ -1146,6 +1146,33 @@ static void x86_cpuid_set_tsc_freq(Object *obj, Visitor
*v, void *opaque,
cpu->env.tsc_khz = value / 1000;
}
+/* Find a CPU model definition and put the result on a X86CPUDefinition struct
+ */
+static int cpu_x86_find_cpudef(const char *name,
+ X86CPUDefinition *result,
+ Error **errp)
+{
+ X86CPUDefinition *def;
+
+ for (def = x86_defs; def; def = def->next)
+ if (name && !strcmp(name, def->name))
+ break;
+ if (kvm_enabled() && name && strcmp(name, "host") == 0) {
+ kvm_cpu_fill_host(result);
+ } else if (!def) {
+ goto error;
+ } else {
+ memcpy(result, def, sizeof(*def));
+ }
+ return 0;
+
+error:
+ if (!error_is_set(errp)) {
+ error_set(errp, QERR_INVALID_PARAMETER_COMBINATION);
+ }
+ return -1;
+}
+
static int cpu_x86_find_by_name(X86CPUDefinition *x86_cpu_def,
const char *cpu_model, Error **errp)
{
@@ -1175,15 +1202,8 @@ static int cpu_x86_find_by_name(X86CPUDefinition
*x86_cpu_def,
name = model_pieces[0];
features = model_pieces[1];
- for (def = x86_defs; def; def = def->next)
- if (name && !strcmp(name, def->name))
- break;
- if (kvm_enabled() && name && strcmp(name, "host") == 0) {
- kvm_cpu_fill_host(x86_cpu_def);
- } else if (!def) {
+ if (cpu_x86_find_cpudef(name, x86_cpu_def, errp) < 0) {
goto error;
- } else {
- memcpy(x86_cpu_def, def, sizeof(*def));
}
add_flagname_to_bitmaps("hypervisor", &plus_features,
--
1.7.11.7
- [Qemu-devel] [PATCH 06/17] target-i386: cpu_x86_init(): print error message in case of error, (continued)
- [Qemu-devel] [PATCH 06/17] target-i386: cpu_x86_init(): print error message in case of error, Eduardo Habkost, 2012/11/12
- [Qemu-devel] [PATCH 09/17] target-i386: move out CPU features initialization to separate func, Eduardo Habkost, 2012/11/12
- [Qemu-devel] [PATCH 10/17] target-i386: kill cpu_x86_register(), Eduardo Habkost, 2012/11/12
- [Qemu-devel] [PATCH 12/17] target-i386: cpu_x86_find_by_name(): split CPU model and feature string first, Eduardo Habkost, 2012/11/12
- [Qemu-devel] [PATCH 14/17] target-i386: cpu_x86_init(): rename cpu_model to cpu_string, Eduardo Habkost, 2012/11/12
- [Qemu-devel] [PATCH 08/17] target-i386: cpu_x86_register(): reorder CPU property setting, Eduardo Habkost, 2012/11/12
- [Qemu-devel] [PATCH 15/17] target-i386: cpu_x86_init(): eliminate extra 'def1' variable, Eduardo Habkost, 2012/11/12
- [Qemu-devel] [PATCH 11/17] target-i386: return Error from cpu_x86_find_by_name(), Eduardo Habkost, 2012/11/12
- [Qemu-devel] [PATCH 07/17] target-i386: cpu_x86_register(): report errors using Error parameter, Eduardo Habkost, 2012/11/12
- [Qemu-devel] [PATCH 13/17] target-i386: cpu: create cpu_x86_find_cpudef() function,
Eduardo Habkost <=
- [Qemu-devel] [PATCH 17/17] target-i386: cpu_x86_init(): reorder split of CPU string and creation of CPU object, Eduardo Habkost, 2012/11/12
- [Qemu-devel] [PATCH 16/17] target-i386: cpu: separate cpudef lookup from feature string parsing, Eduardo Habkost, 2012/11/12