On Tue, Oct 23, 2012 at 03:56:52PM +0200, Igor Mammedov wrote: > On Tue, 23 Oct 2012 09:32:53 -0400 > Don Slutz <d...@cloudswitch.com> wrote: > > > 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: > Since series targeted to target-i386, I haven't tested it with build all. > Thanks for finding bug in CPU as DeviceState series though. > > > > 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, > Looks like circular header dependency strikes again ^^^, > I've had patch that fixes qlist.h which doesn't need qemu-common.h, when I > experimented with inlining APIC in X86CPU. Let's me dig it out, it should > help.
I have fixed this on v5 of the CPU DeviceState series. I ended up having to fix header dependencies of multiple files, just to be able to safely remove qemu-common.h from qlist.h. > > > 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(-) > > > > > > > > -- > Regards, > Igor -- Eduardo