v5: - Use static properties instead of dynamic ones - Compile in KVM CPUID features only if CONFIG_KVM is defined - Add "f-kvm_steal_tm" and "f-kvmclock_stable" CPUID feature names - Some qdev hacking to: - allow iterate over Property[] before object instance exists - find a static bit property definition by specifying bit number and field's offset - Replace error_set() with error_setg() where patches touch it.
git tree for testing: https://github.com/imammedo/qemu/tree/x86-cpu-properties.v5 Depends on "CPU as Device" series: http://lists.nongnu.org/archive/html/qemu-devel/2012-10/msg02776.html Reference to a previous version: http://lists.gnu.org/archive/html/qemu-devel/2012-10/msg00210.html Igor Mammedov (37): target-i386: return Error from cpu_x86_find_by_name() target-i386: cpu_x86_register(): report error from property setter target-i386: if x86_cpu_realize() failed report error and do cleanup target-i386: filter out not TCG features if running without kvm at realize time target-i386: move out CPU features initialization in separate func add visitor for parsing hz[KMG] input string target-i386: use visit_type_hz to parse tsc_freq property value target-i386: define static properties for cpuid features qdev: export qdev_prop_find() and allow it to be used with DeviceClass instead of Object target-i386: parse cpu_model string into set of stringified properties target-i386: introduce vendor-override static property target-i386: convert "xlevel" to static property target-i386: convert "level" to static property target-i386: postpone cpuid_level update to realize time target-i386: set default value of "hypervisor" feature using static property target-i386: set kvm CPUID default feature values using static properties target-i386: make 'f-kvmclock' compatible with legacy behaviour target-i386: add stubs for hyperv_(vapic_recommended|relaxed_timing_enabled|get_spinlock_retries)() qdev: add DEFINE_ABSTRACT_PROP() helper target-i386: convert 'hv_spinlocks' to static property target-i386: convert 'hv_relaxed' to static property target-i386: convert 'hv_vapic' to static property target-i386: convert 'check' and 'enforce' to static properties target-i386: use define for cpuid vendor string size target-i386: replace uint32_t vendor fields by vendor string in x86_def_t target-i386: convert "vendor" property to static property target-i386: convert "tsc-frequency" to static property target-i386: convert "model-id" to static property target-i386: convert "stepping" to static property target-i386: convert "model" to static property target-i386: convert "family" to static property target-i386: use static properties for setting cpuid features qdev: QDEV_PROP_FOREACH and QDEV_CLASS_FOREACH qdev: introduce QDEV_FIND_PROP_FROM_BIT and qdev_prop_find_bit() target-i386: use static properties in check_features_against_host() to print CPUID feature names target-i386: use static properties to list CPUID features target-i386: cleanup cpu_x86_find_by_name(), only fill x86_def_t in it hw/qdev-properties.h | 26 +- qapi/qapi-visit-core.c | 11 + qapi/qapi-visit-core.h | 2 + qapi/string-input-visitor.c | 22 + qom/qdev-core.c | 10 +- qom/qdev-properties.c | 50 +- target-i386/cpu.c | 1667 +++++++++++++++++++++++-------------------- target-i386/cpu.h | 12 +- target-i386/helper.c | 9 +- target-i386/hyperv.h | 9 +- 10 files changed, 992 insertions(+), 826 deletions(-) -- 1.7.11.7