mirror of https://github.com/xemu-project/xemu.git
target/i386: return bool from x86_cpu_filter_features
Prepare for filtering non-boolean features such as AVX10 version. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Reviewed-by: Zhao Liu <zhao1.liu@intel.com> Signed-off-by: Tao Su <tao1.su@linux.intel.com> Link: https://lore.kernel.org/r/20241031085233.425388-4-tao1.su@linux.intel.com Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
b888c78070
commit
3507c6f046
|
@ -5840,7 +5840,7 @@ static void x86_cpu_parse_featurestr(const char *typename, char *features,
|
|||
}
|
||||
}
|
||||
|
||||
static void x86_cpu_filter_features(X86CPU *cpu, bool verbose);
|
||||
static bool x86_cpu_filter_features(X86CPU *cpu, bool verbose);
|
||||
|
||||
/* Build a list with the name of all features on a feature word array */
|
||||
static void x86_cpu_list_feature_names(FeatureWordArray features,
|
||||
|
@ -7556,9 +7556,9 @@ void x86_cpu_expand_features(X86CPU *cpu, Error **errp)
|
|||
* Finishes initialization of CPUID data, filters CPU feature
|
||||
* words based on host availability of each feature.
|
||||
*
|
||||
* Returns: 0 if all flags are supported by the host, non-zero otherwise.
|
||||
* Returns: true if any flag is not supported by the host, false otherwise.
|
||||
*/
|
||||
static void x86_cpu_filter_features(X86CPU *cpu, bool verbose)
|
||||
static bool x86_cpu_filter_features(X86CPU *cpu, bool verbose)
|
||||
{
|
||||
CPUX86State *env = &cpu->env;
|
||||
FeatureWord w;
|
||||
|
@ -7610,6 +7610,8 @@ static void x86_cpu_filter_features(X86CPU *cpu, bool verbose)
|
|||
mark_unavailable_features(cpu, FEAT_7_0_EBX, CPUID_7_0_EBX_INTEL_PT, prefix);
|
||||
}
|
||||
}
|
||||
|
||||
return x86_cpu_have_filtered_features(cpu);
|
||||
}
|
||||
|
||||
static void x86_cpu_hyperv_realize(X86CPU *cpu)
|
||||
|
@ -7707,14 +7709,14 @@ static void x86_cpu_realizefn(DeviceState *dev, Error **errp)
|
|||
}
|
||||
}
|
||||
|
||||
x86_cpu_filter_features(cpu, cpu->check_cpuid || cpu->enforce_cpuid);
|
||||
|
||||
if (cpu->enforce_cpuid && x86_cpu_have_filtered_features(cpu)) {
|
||||
error_setg(&local_err,
|
||||
accel_uses_host_cpuid() ?
|
||||
if (x86_cpu_filter_features(cpu, cpu->check_cpuid || cpu->enforce_cpuid)) {
|
||||
if (cpu->enforce_cpuid) {
|
||||
error_setg(&local_err,
|
||||
accel_uses_host_cpuid() ?
|
||||
"Host doesn't support requested features" :
|
||||
"TCG doesn't support requested features");
|
||||
goto out;
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
|
||||
/* On AMD CPUs, some CPUID[8000_0001].EDX bits must match the bits on
|
||||
|
|
Loading…
Reference in New Issue