On 10/22/12 11:02, Igor Mammedov wrote:
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
This tree is failing to build cleanly:
CC microblaze-softmmu/hw/microblaze/../microblaze_boot.o
In file included from /home/don/qemu/include/qemu/cpu.h:23,
from /home/don/qemu/target-microblaze/cpu-qom.h:23,
from /home/don/qemu/target-microblaze/cpu.h:273,
from /home/don/qemu/qemu-common.h:128,
from /home/don/qemu/qlist.h:18,
from /home/don/qemu/qdict.h:17,
from /home/don/qemu/qemu-option.h:32,
from /home/don/qemu/hw/microblaze/../microblaze_boot.c:27:
/home/don/qemu/hw/qdev-core.h:68: error: expected
specifier-qualifier-list before 'QemuOpts'
make[1]: *** [hw/microblaze/../microblaze_boot.o] Error 1
make: *** [subdir-microblaze-softmmu] Error 2
bisected to:
commit 2652c28759bc658fee228d4d329d9d514683b261
Which looks to be:
http://lists.nongnu.org/archive/html/qemu-devel/2012-10/msg02786.html
-Don Slutz
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(-)