[PATCH 08/10] hw/i386/isapc: Adjust the check for valid CPUs in the isapc machine

Thomas Huth posted 10 patches 1 week, 2 days ago
Maintainers: Pierrick Bouvier <pierrick.bouvier@linaro.org>, "Michael S. Tsirkin" <mst@redhat.com>, Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, Paolo Bonzini <pbonzini@redhat.com>, Richard Henderson <richard.henderson@linaro.org>, "Philippe Mathieu-Daudé" <philmd@linaro.org>, Zhao Liu <zhao1.liu@intel.com>
[PATCH 08/10] hw/i386/isapc: Adjust the check for valid CPUs in the isapc machine
Posted by Thomas Huth 1 week, 2 days ago
From: Thomas Huth <thuth@redhat.com>

Now that we can run in both, x86_64 and i386 mode with one binary,
we must not hard-code the suffix of the CPU names here anymore.

Signed-off-by: Thomas Huth <thuth@redhat.com>
---
 target/i386/cpu.h |  1 +
 hw/i386/isapc.c   | 18 ++++++++++--------
 target/i386/cpu.c |  2 +-
 3 files changed, 12 insertions(+), 9 deletions(-)

diff --git a/target/i386/cpu.h b/target/i386/cpu.h
index 38309773ea8..78f2dadc2e3 100644
--- a/target/i386/cpu.h
+++ b/target/i386/cpu.h
@@ -2722,6 +2722,7 @@ void mark_unavailable_features(X86CPU *cpu, FeatureWord w, uint64_t mask,
                                const char *verbose_prefix);
 void mark_forced_on_features(X86CPU *cpu, FeatureWord w, uint64_t mask,
                              const char *verbose_prefix);
+char *x86_cpu_type_name(const char *model_name);
 
 static inline bool x86_has_cpuid_0x1f(X86CPU *cpu)
 {
diff --git a/hw/i386/isapc.c b/hw/i386/isapc.c
index 1ba9ae22cc3..c772b7f533a 100644
--- a/hw/i386/isapc.c
+++ b/hw/i386/isapc.c
@@ -43,13 +43,13 @@ static void pc_init_isa(MachineState *machine)
 
     bool valid_cpu_type = false;
     static const char * const valid_cpu_types[] = {
-        X86_CPU_TYPE_NAME("486"),
-        X86_CPU_TYPE_NAME("athlon"),
-        X86_CPU_TYPE_NAME("kvm32"),
-        X86_CPU_TYPE_NAME("pentium"),
-        X86_CPU_TYPE_NAME("pentium2"),
-        X86_CPU_TYPE_NAME("pentium3"),
-        X86_CPU_TYPE_NAME("qemu32"),
+        "486",
+        "athlon",
+        "kvm32",
+        "pentium",
+        "pentium2",
+        "pentium3",
+        "qemu32",
     };
 
     /*
@@ -59,8 +59,10 @@ static void pc_init_isa(MachineState *machine)
      * a warning if anyone tries to use a deprecated CPU.
      */
     for (i = 0; i < ARRAY_SIZE(valid_cpu_types); i++) {
-        if (!strcmp(machine->cpu_type, valid_cpu_types[i])) {
+        g_autofree char *valid_cpu = x86_cpu_type_name(valid_cpu_types[i]);
+        if (!strcmp(machine->cpu_type, valid_cpu)) {
             valid_cpu_type = true;
+            break;
         }
     }
 
diff --git a/target/i386/cpu.c b/target/i386/cpu.c
index 98e03cb9a88..a8ff1b29f33 100644
--- a/target/i386/cpu.c
+++ b/target/i386/cpu.c
@@ -2274,7 +2274,7 @@ void host_cpuid(uint32_t function, uint32_t count,
 /* Return type name for a given CPU model name
  * Caller is responsible for freeing the returned string.
  */
-static char *x86_cpu_type_name(const char *model_name)
+char *x86_cpu_type_name(const char *model_name)
 {
     if (target_i386()) {
         return g_strdup_printf("%s" I386_CPU_TYPE_SUFFIX, model_name);
-- 
2.53.0