This is an attempt to convert the accel initialization and registration code to be QOM-based. Some use cases for this are:
* Isolating KVM-specific CPU initialization and compatibility code; * Use compat_props to implement accelrator-specific compatibility code on machine-types; * Returning accelerator-specific information on the "query-cpu-definitions" QMP command (e.g. "runnable" information; CPU features). Changes v2 -> v3: * Rename hw/core/accel.c to accel.c * Rename include/hw/accel.h to include/sysemu/accel.h * Report unknown accelerator as "not found" instead of "does not exist" * Squashed "accel: Create accel object when initializing machine" and "accel: Save AccelState on MachineState when initializing" in a single patch Changes v1 -> v2: * Remove the TYPE_X86_ACCEL interface and KVM-specific changes, by now (they will be submitted later). * Introduce ACCEL_CLASS_NAME(s) macro. Cc: Michael Mueller <m...@linux.vnet.ibm.com> Cc: Christian Borntraeger <borntrae...@de.ibm.com> Cc: Alexander Graf <ag...@suse.de> Cc: "Jason J. Herne" <jjhe...@linux.vnet.ibm.com> Cc: Paolo Bonzini <pbonz...@redhat.com> Cc: Andreas Färber <afaer...@suse.de> Cc: Marcel Apfelbaum <marce...@redhat.com> Cc: "Michael S. Tsirkin" <m...@redhat.com> Eduardo Habkost (17): vl.c: Small coding style fix accel: Move accel code to accel.c accel: Create AccelType typedef accel: Simplify configure_accelerator() using AccelType *acc variable accel: Move accel name lookup to separate function accel: Use QOM classes for accel types accel: Make AccelClass.available() optional accel: Report unknown accelerator as "not found" instead of "does not exist" accel: Move KVM accel registration to kvm-all.c accel: Move Xen registration code to xen-common.c accel: Move qtest accel registration to qtest.c accel: Remove tcg_available() function accel: Move accel init/allowed code to separate function accel: Rename 'init' method to 'init_machine' accel: Pass MachineState object to accel init functions accel: Create accel object when initializing machine kvm: Make KVMState be the TYPE_KVM_ACCEL instance struct Makefile.objs | 1 + accel.c | 157 +++++++++++++++++++++++++++++++++++++++++++++ arch_init.c | 5 -- include/hw/boards.h | 1 + include/hw/xen/xen.h | 1 - include/qemu/typedefs.h | 3 + include/sysemu/accel.h | 62 ++++++++++++++++++ include/sysemu/arch_init.h | 1 - include/sysemu/kvm.h | 2 - include/sysemu/qtest.h | 1 - kvm-all.c | 40 ++++++++++-- kvm-stub.c | 5 -- qtest.c | 27 +++++++- vl.c | 83 +----------------------- xen-common-stub.c | 6 -- xen-common.c | 25 +++++++- 16 files changed, 311 insertions(+), 109 deletions(-) create mode 100644 accel.c create mode 100644 include/sysemu/accel.h -- 1.9.3