On 7/11/2025 3:55 PM, Paolo Bonzini wrote:
Simplify the accelerators' cpu_instance_init callbacks by doing all
host-cpu setup in a single function.

Based-on: <20250711000603.438312-1-pbonz...@redhat.com>
Cc: Xiaoyao Li <xiaoyao...@intel.com>
Signed-off-by: Paolo Bonzini <pbonz...@redhat.com>

Miss to remove the declaration.

With below added,

Reviewed-by: Xiaoyao Li <xiaoyao...@intel.com>

-------------8<-------------------
diff --git a/target/i386/host-cpu.h b/target/i386/host-cpu.h
index b97ec01c9bec..5b2ad491a8ca 100644
--- a/target/i386/host-cpu.h
+++ b/target/i386/host-cpu.h
@@ -12,7 +12,6 @@

 uint32_t host_cpu_phys_bits(void);
 void host_cpu_instance_init(X86CPU *cpu);
-void host_cpu_max_instance_init(X86CPU *cpu);
 bool host_cpu_realizefn(CPUState *cs, Error **errp);

void host_cpu_vendor_fms(char *vendor, int *family, int *model, int *stepping);


---
  target/i386/host-cpu.c    | 28 ++++++++++++++--------------
  target/i386/hvf/hvf-cpu.c |  2 --
  target/i386/kvm/kvm-cpu.c |  2 --
  3 files changed, 14 insertions(+), 18 deletions(-)

diff --git a/target/i386/host-cpu.c b/target/i386/host-cpu.c
index 7512567298b..3399edc1ad0 100644
--- a/target/i386/host-cpu.c
+++ b/target/i386/host-cpu.c
@@ -132,27 +132,27 @@ void host_cpu_instance_init(X86CPU *cpu)
  {
      X86CPUClass *xcc = X86_CPU_GET_CLASS(cpu);
- if (xcc->model) {
-        char vendor[CPUID_VENDOR_SZ + 1];
-
-        host_cpu_vendor_fms(vendor, NULL, NULL, NULL);
-        object_property_set_str(OBJECT(cpu), "vendor", vendor, &error_abort);
-    }
-}
-
-void host_cpu_max_instance_init(X86CPU *cpu)
-{
      char vendor[CPUID_VENDOR_SZ + 1] = { 0 };
      char model_id[CPUID_MODEL_ID_SZ + 1] = { 0 };
      int family, model, stepping;
+ /*
+     * setting vendor applies to both max/host and builtin_x86_defs CPU.
+     * FIXME: this probably should warn or should be skipped if vendors do
+     * not match, because family numbers are incompatible between Intel and 
AMD.
+     */
+    host_cpu_vendor_fms(vendor, &family, &model, &stepping);
+    object_property_set_str(OBJECT(cpu), "vendor", vendor, &error_abort);
+
+    if (!xcc->max_features) {
+        return;
+    }
+
+    host_cpu_fill_model_id(model_id);
+
      /* Use max host physical address bits if -cpu max option is applied */
      object_property_set_bool(OBJECT(cpu), "host-phys-bits", true, 
&error_abort);
- host_cpu_vendor_fms(vendor, &family, &model, &stepping);
-    host_cpu_fill_model_id(model_id);
-
-    object_property_set_str(OBJECT(cpu), "vendor", vendor, &error_abort);
      object_property_set_int(OBJECT(cpu), "family", family, &error_abort);
      object_property_set_int(OBJECT(cpu), "model", model, &error_abort);
      object_property_set_int(OBJECT(cpu), "stepping", stepping,
diff --git a/target/i386/hvf/hvf-cpu.c b/target/i386/hvf/hvf-cpu.c
index 2b991f2fc8e..94ee096ecf7 100644
--- a/target/i386/hvf/hvf-cpu.c
+++ b/target/i386/hvf/hvf-cpu.c
@@ -21,8 +21,6 @@ static void hvf_cpu_max_instance_init(X86CPU *cpu)
  {
      CPUX86State *env = &cpu->env;
- host_cpu_max_instance_init(cpu);
-
      env->cpuid_min_level =
          hvf_get_supported_cpuid(0x0, 0, R_EAX);
      env->cpuid_min_xlevel =
diff --git a/target/i386/kvm/kvm-cpu.c b/target/i386/kvm/kvm-cpu.c
index 6fed353548e..a99b8764644 100644
--- a/target/i386/kvm/kvm-cpu.c
+++ b/target/i386/kvm/kvm-cpu.c
@@ -109,8 +109,6 @@ static void kvm_cpu_max_instance_init(X86CPU *cpu)
      CPUX86State *env = &cpu->env;
      KVMState *s = kvm_state;
- host_cpu_max_instance_init(cpu);
-
      object_property_set_bool(OBJECT(cpu), "pmu", true, &error_abort);
if (lmce_supported()) {


Reply via email to