Lines Matching +full:build +full:- +full:deprecated
9 * your option) any later version. See the COPYING file in the top-level
15 #include "s390x-internal.h"
20 #include "qemu/error-report.h"
23 #include "qemu/hw-version.h"
24 #include "qemu/qemu-print.h"
48 * generation 15 one base feature and one optional feature have been deprecated.
53 * (see https://www.ibm.com/support/pages/ibm-mainframe-life-cycle-history),
114 clear_bit(feat, (unsigned long *)&def->default_feat); in s390_cpudef_featoff()
124 if (def->gen < gen) { in s390_cpudef_featoff_greater()
127 if (def->gen == gen && def->ec_ga < ec_ga) { in s390_cpudef_featoff_greater()
131 clear_bit(feat, (unsigned long *)&def->default_feat); in s390_cpudef_featoff_greater()
142 bitmap_complement(group_def_off, group_def->feat, S390_FEAT_MAX); in s390_cpudef_group_featoff_greater()
147 if (cpu_def->gen < gen) { in s390_cpudef_group_featoff_greater()
150 if (cpu_def->gen == gen && cpu_def->ec_ga < ec_ga) { in s390_cpudef_group_featoff_greater()
154 bitmap_and((unsigned long *)&cpu_def->default_feat, in s390_cpudef_group_featoff_greater()
155 cpu_def->default_feat, group_def_off, S390_FEAT_MAX); in s390_cpudef_group_featoff_greater()
167 if (!cpu || !cpu->model) { in s390_get_hmfai()
170 return cpu->model->def->hmfai; in s390_get_hmfai()
181 if (!cpu || !cpu->model) { in s390_get_mha_pow()
184 return cpu->model->def->mha_pow; in s390_get_mha_pow()
196 if (!cpu || !cpu->model) { in s390_get_ibc_val()
199 unblocked_ibc = s390_ibc_from_cpu_model(cpu->model); in s390_get_ibc_val()
200 lowest_ibc = cpu->model->lowest_ibc; in s390_get_ibc_val()
212 if (!cpu || !cpu->model) { in s390_get_feat_block()
215 s390_fill_feat_block(cpu->model->features, type, data); in s390_get_feat_block()
226 if (!cpu || !cpu->model) { in s390_has_feat()
273 return test_bit(feat, cpu->model->features); in s390_has_feat()
308 if (def->gen > gen) { in s390_find_cpu_def()
310 } else if (def->gen == gen && ec_ga && def->ec_ga > ec_ga) { in s390_find_cpu_def()
317 bitmap_andnot(missing, def->base_feat, features, S390_FEAT_MAX); in s390_find_cpu_def()
329 if (def->type == type && def->ec_ga == ec_ga) { in s390_find_cpu_def()
333 if (def->type == type) { in s390_find_cpu_def()
352 if (scc->is_static) { in s390_print_cpu_model_list_entry()
355 if (scc->is_migration_safe) { in s390_print_cpu_model_list_entry()
356 g_string_append(details, "migration-safe, "); in s390_print_cpu_model_list_entry()
358 if (cc->deprecation_note) { in s390_print_cpu_model_list_entry()
359 g_string_append(details, "deprecated, "); in s390_print_cpu_model_list_entry()
361 if (details->len) { in s390_print_cpu_model_list_entry()
363 g_string_truncate(details, details->len - 2); in s390_print_cpu_model_list_entry()
366 /* strip off the -s390x-cpu */ in s390_print_cpu_model_list_entry()
367 g_strrstr(name, "-" TYPE_S390_CPU)[0] = 0; in s390_print_cpu_model_list_entry()
368 if (details->len) { in s390_print_cpu_model_list_entry()
369 qemu_printf(" %-15s %-35s (%s)\n", name, scc->desc, details->str); in s390_print_cpu_model_list_entry()
371 qemu_printf(" %-15s %-35s\n", name, scc->desc); in s390_print_cpu_model_list_entry()
388 return -1; in s390_cpu_list_compare()
392 return -1; in s390_cpu_list_compare()
396 return -1; in s390_cpu_list_compare()
402 if (cc_a->cpu_def != cc_b->cpu_def) { in s390_cpu_list_compare()
403 return cc_a->cpu_def - cc_b->cpu_def; in s390_cpu_list_compare()
406 /* exact same definition - list base model first */ in s390_cpu_list_compare()
407 return cc_a->is_static ? -1 : 1; in s390_cpu_list_compare()
426 qemu_printf(" %-20s %s\n", def->name, def->desc); in s390_cpu_list()
433 qemu_printf(" %-20s %s\n", def->name, def->desc); in s390_cpu_list()
560 if (test_bit(dep[i][0], model->features) && in check_consistency()
561 !test_bit(dep[i][1], model->features)) { in check_consistency()
563 s390_feat_def(dep[i][0])->name, in check_consistency()
564 s390_feat_def(dep[i][1])->name); in check_consistency()
579 msg, max_model->def->name); in check_compat_model_failed()
580 error_append_hint(errp, "Consider a different accelerator, try \"-accel help\"\n"); in check_compat_model_failed()
589 if (model->def->gen > max_model->def->gen) { in check_compatibility()
592 } else if (model->def->gen == max_model->def->gen && in check_compatibility()
593 model->def->ec_ga > max_model->def->ec_ga) { in check_compatibility()
599 if (only_migratable && test_bit(S390_FEAT_UNPACK, model->features)) { in check_compatibility()
601 "the --only-migratable option. You must remove either " in check_compatibility()
602 "the 'unpack' facility or the --only-migratable option"); in check_compatibility()
608 bitmap_andnot(missing, model->features, max_model->features, S390_FEAT_MAX); in check_compatibility()
651 if (xcc->kvm_required && !kvm_enabled()) { in s390_realize_cpu_model()
656 if (!cpu->model) { in s390_realize_cpu_model()
657 /* no host model support -> perform compatibility stuff */ in s390_realize_cpu_model()
669 cpu->model->lowest_ibc = max_model->lowest_ibc; in s390_realize_cpu_model()
670 cpu->model->cpu_id = max_model->cpu_id; in s390_realize_cpu_model()
671 cpu->model->cpu_id_format = max_model->cpu_id_format; in s390_realize_cpu_model()
672 cpu->model->cpu_ver = max_model->cpu_ver; in s390_realize_cpu_model()
674 check_consistency(cpu->model); in s390_realize_cpu_model()
675 if (!check_compatibility(max_model, cpu->model, errp)) { in s390_realize_cpu_model()
679 apply_cpu_model(cpu->model, errp); in s390_realize_cpu_model()
682 cpu->env.cpuid = s390_cpuid_from_cpu_model(cpu->model); in s390_realize_cpu_model()
684 cpu->env.cpuid = deposit64(cpu->env.cpuid, CPU_PHYS_ADDR_SHIFT, in s390_realize_cpu_model()
685 CPU_PHYS_ADDR_BITS, cpu->env.core_id); in s390_realize_cpu_model()
697 if (!cpu->model) { in get_feature()
703 value = test_bit(feat, cpu->model->features); in get_feature()
715 if (dev->realized) { in set_feature()
719 } else if (!cpu->model) { in set_feature()
729 if (!test_bit(feat, cpu->model->def->full_feat)) { in set_feature()
732 name, cpu->model->def->name); in set_feature()
735 set_bit(feat, cpu->model->features); in set_feature()
737 clear_bit(feat, cpu->model->features); in set_feature()
750 if (!cpu->model) { in get_feature_group()
757 bitmap_and(tmp, cpu->model->features, def->feat, S390_FEAT_MAX); in get_feature_group()
758 value = bitmap_equal(tmp, def->feat, S390_FEAT_MAX); in get_feature_group()
771 if (dev->realized) { in set_feature_group()
775 } else if (!cpu->model) { in set_feature_group()
786 if (!bitmap_intersects(def->feat, cpu->model->def->full_feat, in set_feature_group()
790 name, cpu->model->def->name); in set_feature_group()
793 bitmap_or(cpu->model->features, cpu->model->features, def->feat, in set_feature_group()
796 bitmap_andnot(cpu->model->features, cpu->model->features, def->feat, in set_feature_group()
806 cpu->model = g_malloc0(sizeof(*cpu->model)); in s390_cpu_model_initfn()
808 cpu->model->def = xcc->cpu_def; in s390_cpu_model_initfn()
809 if (xcc->is_static) { in s390_cpu_model_initfn()
810 /* base model - features will never change */ in s390_cpu_model_initfn()
811 bitmap_copy(cpu->model->features, cpu->model->def->base_feat, in s390_cpu_model_initfn()
814 /* latest model - features can change */ in s390_cpu_model_initfn()
815 bitmap_copy(cpu->model->features, in s390_cpu_model_initfn()
816 cpu->model->def->default_feat, S390_FEAT_MAX); in s390_cpu_model_initfn()
833 /* build the CPU model */ in s390_set_qemu_cpu_model()
843 cpu->model = g_malloc0(sizeof(*cpu->model)); in s390_qemu_cpu_model_initfn()
845 memcpy(cpu->model, &s390_qemu_cpu_model, sizeof(*cpu->model)); in s390_qemu_cpu_model_initfn()
868 cpu->model = g_new(S390CPUModel, 1); in s390_max_cpu_model_initfn()
870 memcpy(cpu->model, max_model, sizeof(*cpu->model)); in s390_max_cpu_model_initfn()
877 g_free(cpu->model); in s390_cpu_model_finalize()
878 cpu->model = NULL; in s390_cpu_model_finalize()
883 return S390_CPU_GET_CLASS(obj)->is_migration_safe; in get_is_migration_safe()
888 return S390_CPU_GET_CLASS(obj)->is_static; in get_is_static()
893 return g_strdup(S390_CPU_GET_CLASS(obj)->desc); in get_description()
901 object_class_property_add_bool(oc, "migration-safe", get_is_migration_safe, in s390_cpu_model_class_register_props()
909 object_class_property_add(oc, def->name, "bool", get_feature, in s390_cpu_model_class_register_props()
911 object_class_property_set_description(oc, def->name, def->desc); in s390_cpu_model_class_register_props()
915 object_class_property_add(oc, def->name, "bool", get_feature_group, in s390_cpu_model_class_register_props()
917 object_class_property_set_description(oc, def->name, def->desc); in s390_cpu_model_class_register_props()
926 xcc->kvm_required = true; in s390_host_cpu_model_class_init()
927 xcc->desc = "KVM only: All recognized features"; in s390_host_cpu_model_class_init()
936 xcc->cpu_def = (const S390CPUDef *) data; in s390_base_cpu_model_class_init()
937 xcc->is_migration_safe = true; in s390_base_cpu_model_class_init()
938 xcc->is_static = true; in s390_base_cpu_model_class_init()
939 xcc->desc = xcc->cpu_def->desc; in s390_base_cpu_model_class_init()
947 xcc->cpu_def = (const S390CPUDef *) data; in s390_cpu_model_class_init()
948 xcc->is_migration_safe = true; in s390_cpu_model_class_init()
949 xcc->desc = xcc->cpu_def->desc; in s390_cpu_model_class_init()
956 xcc->is_migration_safe = true; in s390_qemu_cpu_model_class_init()
957 xcc->desc = g_strdup_printf("QEMU Virtual CPU version %s", in s390_qemu_cpu_model_class_init()
970 xcc->desc = in s390_max_cpu_model_class_init()
983 return g_strdup_printf(S390_CPU_TYPE_NAME("%s-base"), model_name); in s390_base_cpu_type_name()
1035 /* CSSKE is deprecated on newer generations */ in init_ignored_base_feat()