This is a new RFC for the x86 CPU subclasses. This version handles the "host" subclass differently, and I believe this made the code much simpler.
However, a few tricks were necessary: - To keep the "default_kvm_features" compat functions working (this shouldn't be necessary once we start using global properties for the compat code). - For the vendor property setting (because it depends on a kvm_enabled() check, that can't be made on class_init). I don't know how we will be able to convert that logic using global properties/defaults in the future. - To keep the original model names in the "-cpu ?" output, for compatibility. This series depends on multiple series: - pc-1.4 kvm_mmu_opt disable series I sent today; - -cpu "enforce" fix series I sent today; - A experimental rebased version of Igor's "wave 2" x86 CPU init cleanup. Because of the tricky dependencies, I recommend you use the git tree for testing: git://github.com/ehabkost/qemu-hacks.git x86-cpu-model-classes.RFC.v4 https://github.com/ehabkost/qemu-hacks/tree/x86-cpu-model-classes.RFC.v4 Eduardo Habkost (6): target-i386: Move CPU object creation to cpu.c target-i386: Make cpu_x86_create() get Error argument target-i386: Simplify cpu_x86_find_by_name() logic target-i386: Set feature string parsing results directly on CPU object target-i386: Move kvm_features/hypervisor initialization to cpu_x86_find_by_name() target-i386: CPU model subclasses include/sysemu/kvm.h | 3 + target-i386/cpu-qom.h | 26 + target-i386/cpu.c | 1548 ++++++++++++++++++++++++++++++------------------- target-i386/cpu.h | 4 +- target-i386/helper.c | 26 +- target-i386/kvm.c | 2 + 6 files changed, 988 insertions(+), 621 deletions(-) -- 1.7.11.7