mirror of
https://github.com/qemu/qemu.git
synced 2025-09-27 09:01:08 +00:00
target/i386: merge host_cpu_instance_init() and host_cpu_max_instance_init()
Simplify the accelerators' cpu_instance_init callbacks by doing all host-cpu setup in a single function. Based-on: <20250711000603.438312-1-pbonzini@redhat.com> Cc: Xiaoyao Li <xiaoyao.li@intel.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
5f158abef4
commit
29f1ba338b
@ -132,27 +132,27 @@ void host_cpu_instance_init(X86CPU *cpu)
|
|||||||
{
|
{
|
||||||
X86CPUClass *xcc = X86_CPU_GET_CLASS(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 vendor[CPUID_VENDOR_SZ + 1] = { 0 };
|
||||||
char model_id[CPUID_MODEL_ID_SZ + 1] = { 0 };
|
char model_id[CPUID_MODEL_ID_SZ + 1] = { 0 };
|
||||||
int family, model, stepping;
|
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 */
|
/* Use max host physical address bits if -cpu max option is applied */
|
||||||
object_property_set_bool(OBJECT(cpu), "host-phys-bits", true, &error_abort);
|
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), "family", family, &error_abort);
|
||||||
object_property_set_int(OBJECT(cpu), "model", model, &error_abort);
|
object_property_set_int(OBJECT(cpu), "model", model, &error_abort);
|
||||||
object_property_set_int(OBJECT(cpu), "stepping", stepping,
|
object_property_set_int(OBJECT(cpu), "stepping", stepping,
|
||||||
|
@ -21,8 +21,6 @@ static void hvf_cpu_max_instance_init(X86CPU *cpu)
|
|||||||
{
|
{
|
||||||
CPUX86State *env = &cpu->env;
|
CPUX86State *env = &cpu->env;
|
||||||
|
|
||||||
host_cpu_max_instance_init(cpu);
|
|
||||||
|
|
||||||
env->cpuid_min_level =
|
env->cpuid_min_level =
|
||||||
hvf_get_supported_cpuid(0x0, 0, R_EAX);
|
hvf_get_supported_cpuid(0x0, 0, R_EAX);
|
||||||
env->cpuid_min_xlevel =
|
env->cpuid_min_xlevel =
|
||||||
|
@ -109,8 +109,6 @@ static void kvm_cpu_max_instance_init(X86CPU *cpu)
|
|||||||
CPUX86State *env = &cpu->env;
|
CPUX86State *env = &cpu->env;
|
||||||
KVMState *s = kvm_state;
|
KVMState *s = kvm_state;
|
||||||
|
|
||||||
host_cpu_max_instance_init(cpu);
|
|
||||||
|
|
||||||
object_property_set_bool(OBJECT(cpu), "pmu", true, &error_abort);
|
object_property_set_bool(OBJECT(cpu), "pmu", true, &error_abort);
|
||||||
|
|
||||||
if (lmce_supported()) {
|
if (lmce_supported()) {
|
||||||
|
Loading…
Reference in New Issue
Block a user