From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55469) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Zu05y-0005ev-S3 for qemu-devel@nongnu.org; Wed, 04 Nov 2015 10:35:36 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Zu05u-0006UU-QY for qemu-devel@nongnu.org; Wed, 04 Nov 2015 10:35:30 -0500 Received: from mx1.redhat.com ([209.132.183.28]:60152) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Zu05u-0006UP-L7 for qemu-devel@nongnu.org; Wed, 04 Nov 2015 10:35:26 -0500 From: Eduardo Habkost Date: Wed, 4 Nov 2015 13:35:12 -0200 Message-Id: <1446651312-23487-1-git-send-email-ehabkost@redhat.com> Subject: [Qemu-devel] [PATCH] target-i386: Remove POPCNT from qemu64 and qemu32 CPU models List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Paolo Bonzini , Igor Mammedov , Richard Henderson , "Dr. David Alan Gilbert" , "Michael S. Tsirkin" POPCNT is not available on Penryn and older and on Opteron_G2 and older, and we want to make the default CPU runnable in most hosts, so it won't be enabled by default in KVM mode. We should eventually have all features supported by TCG enabled by default in TCG mode, but as we don't have a good mechanism today to ensure we have different defaults in KVM and TCG mode, disable POPCNT in the qemu64 and qemu32 CPU models entirely. Signed-off-by: Eduardo Habkost --- This patch needs to be applied after the series: Subject: [PATCH v2 0/3] target-i386: Don't trigger CPUID warnings by default in KVM mode (in most hosts) --- include/hw/i386/pc.h | 10 ++++++++++ target-i386/cpu.c | 4 ++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h index 8b54863..4bbc0ff 100644 --- a/include/hw/i386/pc.h +++ b/include/hw/i386/pc.h @@ -337,6 +337,16 @@ bool e820_get_entry(int, uint32_t, uint64_t *, uint64_t *); .driver = "qemu64" "-" TYPE_X86_CPU,\ .property = "abm",\ .value = "on",\ + },\ + {\ + .driver = "qemu64" "-" TYPE_X86_CPU,\ + .property = "popcnt",\ + .value = "on",\ + },\ + {\ + .driver = "qemu32" "-" TYPE_X86_CPU,\ + .property = "popcnt",\ + .value = "on",\ }, #define PC_COMPAT_2_3 \ diff --git a/target-i386/cpu.c b/target-i386/cpu.c index 35cd267..5a62ef5 100644 --- a/target-i386/cpu.c +++ b/target-i386/cpu.c @@ -671,7 +671,7 @@ static X86CPUDefinition builtin_x86_defs[] = { CPUID_MTRR | CPUID_CLFLUSH | CPUID_MCA | CPUID_PSE36, .features[FEAT_1_ECX] = - CPUID_EXT_SSE3 | CPUID_EXT_CX16 | CPUID_EXT_POPCNT, + CPUID_EXT_SSE3 | CPUID_EXT_CX16, .features[FEAT_8000_0001_EDX] = CPUID_EXT2_LM | CPUID_EXT2_SYSCALL | CPUID_EXT2_NX, .features[FEAT_8000_0001_ECX] = @@ -771,7 +771,7 @@ static X86CPUDefinition builtin_x86_defs[] = { .features[FEAT_1_EDX] = PPRO_FEATURES, .features[FEAT_1_ECX] = - CPUID_EXT_SSE3 | CPUID_EXT_POPCNT, + CPUID_EXT_SSE3, .xlevel = 0x80000004, }, { -- 2.1.0