On 07/07/2015 19:21, Eduardo Habkost wrote: > On Tue, Jul 07, 2015 at 12:42:01PM +0200, Paolo Bonzini wrote: >> ABM is only implemented as a single instruction set by AMD; all AMD >> processors support both instructions or neither. Intel considers POPCNT >> as part of SSE4.2, and LZCNT as part of BMI1, but Intel also uses AMD's >> ABM flag to indicate support for both POPCNT and LZCNT. It has to be >> added to Haswell and Broadwell because Haswell, by adding LZCNT, has >> completed the ABM. >> >> Tested with "qemu-kvm -cpu Haswell-noTSX,enforce" (and also with older >> machine types) on an Haswell-EP machine. >> >> Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> >> --- >> hw/i386/pc_piix.c | 4 ++++ >> hw/i386/pc_q35.c | 4 ++++ >> target-i386/cpu.c | 8 ++++---- >> 3 files changed, 12 insertions(+), 4 deletions(-) >> >> diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c >> index 56cdcb9..d9e9987 100644 >> --- a/hw/i386/pc_piix.c >> +++ b/hw/i386/pc_piix.c >> @@ -312,6 +312,10 @@ static void pc_compat_2_3(MachineState *machine) >> if (kvm_enabled()) { >> pcms->smm = ON_OFF_AUTO_OFF; >> } >> + x86_cpu_compat_set_features("Haswell", FEAT_8000_0001_ECX, 0, >> CPUID_EXT3_ABM); >> + x86_cpu_compat_set_features("Haswell-noTSX", FEAT_8000_0001_ECX, 0, >> CPUID_EXT3_ABM); >> + x86_cpu_compat_set_features("Broadwell", FEAT_8000_0001_ECX, 0, >> CPUID_EXT3_ABM); >> + x86_cpu_compat_set_features("Broadwell-noTSX", FEAT_8000_0001_ECX, 0, >> CPUID_EXT3_ABM); > > x86_cpu_compat_set_features() is not necessary anymore, please use > PC_COMPAT_2_3 to disable ABM.
Would this be appropriate for 2.4, or should I just wait for 2.5? Paolo