Introduce x86_cpu_compat_set_level(), which can be used by machine-type init functions to keep compatibility when CPU models are changed.
Signed-off-by: Eduardo Habkost <ehabk...@redhat.com> --- target-i386/cpu.c | 22 ++++++++++++++++++++++ target-i386/cpu.h | 1 + 2 files changed, 23 insertions(+) diff --git a/target-i386/cpu.c b/target-i386/cpu.c index a207474..6ef5842 100644 --- a/target-i386/cpu.c +++ b/target-i386/cpu.c @@ -996,6 +996,28 @@ void x86_cpu_compat_set_features(const char *cpu_model, FeatureWord w, } } +/** + * x86_cpu_compat_set_level: + * @cpu_model: CPU model name to be changed. If NULL, all CPU models are changed + * @level: New value for 'level' field on CPU model + * + * Change CPU model 'level' field for compatibility. + * + * This function may be used by machine-type compatibility functions + * to set a backwards-compatible value for the 'level' field on CPU models. + */ +void x86_cpu_compat_set_level(const char *cpu_model, uint32_t level) +{ + x86_def_t *def; + int i; + for (i = 0; i < ARRAY_SIZE(builtin_x86_defs); i++) { + def = &builtin_x86_defs[i]; + if (!cpu_model || !strcmp(cpu_model, def->name)) { + def->level = level; + } + } +} + #ifdef CONFIG_KVM static int cpu_x86_fill_model_id(char *str) { diff --git a/target-i386/cpu.h b/target-i386/cpu.h index 60581e1..86a5988 100644 --- a/target-i386/cpu.h +++ b/target-i386/cpu.h @@ -1256,6 +1256,7 @@ void disable_kvm_pv_eoi(void); void x86_cpu_compat_set_features(const char *cpu_model, FeatureWord w, uint32_t feat_add, uint32_t feat_remove); +void x86_cpu_compat_set_level(const char *cpu_model, uint32_t level); /* Return name of 32-bit register, from a R_* constant */ -- 1.8.1.4