The problem: - Some features are report at the same time on both CPUID[1].EDX and CPUID[8000_0001].EDX on AMD CPUs (e.g. fpu, tsc, msr, pae, mmx). - "-cpu <model>,+feature" should enable the bit only on CPUID[1] if it's not an AMD CPU, but it should enable the bit on both CPUID[1] and CPUID[8000_0001] if it's an AMD CPU. - The same should happen when implementing CPU properties: setting the property that enables a feature should set the duplicate CPUID[8000_0001].EDX bit only if CPU vendor is AMD.
Reference: http://article.gmane.org/gmane.comp.emulators.qemu/166024 The solution implemented by this series is: - On the CPU model table and while parsing CPU options/properties, set the bit only on CPUID[1] (the x86_def_t.features field). - When finishing initialization of the CPU cpuid fields, duplicate those feature bits on cpuid_ext2_features if and only if the CPU vendor is AMD. This series also removes the "cpudef" config support, to make this work easier (because the cpudef interface is based on low-level CPUID leaf+register specification, instead of a set of higher-level per-feature object properties). Eduardo Habkost (6): x86_cpudef_setup: coding style change i386: kill cpudef config section support i386: kvm: bit 10 of CPUID[8000_0001].EDX is reserved i386: kvm: use a #define for the set of alias feature bits i386: cpu: eliminate duplicate feature names i386: -cpu help: remove reference to specific CPUID leaves/registers target-i386/cpu.c | 153 +++++++++++++----------------------------------------- target-i386/cpu.h | 12 +++++ target-i386/kvm.c | 2 +- 3 files changed, 50 insertions(+), 117 deletions(-) -- 1.7.11.2