This is basically a x86 CPU subclasses RFC, preceded by some changes that I would like to include even if this particular approach to the x86 CPU subclasses doesn't get accepted (so the first patches are marked as PATCH instead of RFC).
The main differences from the RFC sent by Andreas previously is: - As we can't guarantee that class_init will get called only after KVM is initialized, the class for "host" initializes everything inside instance_init - Because of that difference, there's a separate base class for the predefined CPU models (TYPE_X86_PREDEF_CPU), that won't be used for TYPE_X86_HOST_CPU. - Instead of moving all x86_def_t fields inline to X86CPUClass, I am embedding x86_def_t inside PredefX86CPUClass, so kvm_cpu_fill_host() can keep getting x86_def_t* as argument, so they can still be used by kvm_check_features_against_host() _and_ by the -cpu "host" initialization code. This series is based on: - [PATCH 0/2] Fixes for -cpu host KVM/SVM feature initialization Message-Id: <1356719854-16401-1-git-send-email-ehabk...@redhat.com> - [PATCH 00/20 v4] x86 CPU cleanup (wave 2) Message-Id: <1356724895-24118-1-git-send-email-imamm...@redhat.com> Git tree for testing: git://github.com/ehabkost/qemu-hacks.git x86-cpu-model-classes.RFC.v3 https://github.com/ehabkost/qemu-hacks/tree/x86-cpu-model-classes.RFC.v3 Eduardo Habkost (9): 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: Move CPU creation code to model name lookup function target-i386: CPU subclass for -cpu "host" target-i386: CPU subclasses for predefined CPU models target-i386: Unify CPU object creation on x86_cpu_create_from_name() target-i386/cpu-qom.h | 1 + target-i386/cpu.c | 785 ++++++++++++++++++++++++++++++++++++++------------ target-i386/cpu.h | 4 +- target-i386/helper.c | 26 +- 4 files changed, 614 insertions(+), 202 deletions(-) -- 1.7.11.7