From nobody Fri Nov 7 01:54:29 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1545307974449798.1893019325983; Thu, 20 Dec 2018 04:12:54 -0800 (PST) Received: from localhost ([::1]:36956 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gZxC8-0008J9-VN for importer@patchew.org; Thu, 20 Dec 2018 07:12:53 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53501) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gZxAQ-0007Lg-Lk for qemu-devel@nongnu.org; Thu, 20 Dec 2018 07:11:07 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gZxAN-0005n8-Hf for qemu-devel@nongnu.org; Thu, 20 Dec 2018 07:11:06 -0500 Received: from mail-wm1-x344.google.com ([2a00:1450:4864:20::344]:51591) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1gZxAN-0005mX-AV for qemu-devel@nongnu.org; Thu, 20 Dec 2018 07:11:03 -0500 Received: by mail-wm1-x344.google.com with SMTP id b11so1771707wmj.1 for ; Thu, 20 Dec 2018 04:11:03 -0800 (PST) Received: from donizetti.lan ([93.56.166.5]) by smtp.gmail.com with ESMTPSA id t70sm10497142wmd.36.2018.12.20.04.11.00 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 20 Dec 2018 04:11:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=jR7xGgqq7oA2/Y/hjG46Jdn22ZsbEYkLj9lvnVmQNPw=; b=a0zQ/1+bszTHfAEuCLrLlLIyrRP/PNKvWkNJ9DF6XI78WPSVhZ1VCgp1SkthjDOlhm qxEl43yC+xiQxuu/9S0nh9M+oKyukscnTQQpZbjEICb1SBxhPUjv/TxMsa7lQ+zJVvpM wLwXt8UFu3ReQkjYM0BZGtc6VbbwZZ/p0Wi5hAVbcK8VpSa09wkowKAFIrYcA6tGSvll vJv/Oy8WokaV4fF3TGzpgjKBdsiy9oqatpqFfPYKvYgy+/EBIKOCaSl8rIgWmVtkExth bJbODXDMM2jeoSyInu8aWbXLenRf7+I9O/zPwMGm0KXEF+9hngDe+hNkbhHQzCCiovwv BNVg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :mime-version:content-transfer-encoding; bh=jR7xGgqq7oA2/Y/hjG46Jdn22ZsbEYkLj9lvnVmQNPw=; b=DEJ68E5+Yp0Y8LdHN6JyZUFib75xyA0fp8UNxyuIaIyseX0T6FWluetvvRKjwlYW8v 9SX3lt26Px1ZwqyLo2UK3NpurohPCblKTuj61nj2LigTKLEYkEqqOamr2xsqszkRnefK hYL33O6yUaCgpZgahq+kGbEOxnmpBWvPkZBGBKbG3PvFOaj6M9khYSleLX0aoGorsmC5 owPucgBoUBYA/n0OXmCYK9XuwjAkUUHexZHvVVgLvowc/+SRAEPjWEIH2q7Q68qSnxze EFAhRksGrOPPg//m28uIMqGJhQTYDeXMI0rjGuIxs1qmLNL+cXyVsuMt0TNDoybgRoTR LbmQ== X-Gm-Message-State: AA+aEWYlyNKuh+TqnHaQHUmGFUyjiADrUTa9MQXlMPjcWdMLIGtgVJjX t1VNxzY5gWj14LG5AhreMill2yq1 X-Google-Smtp-Source: AFSGD/VgSgSZRWVurIKJnmYvo2EVWoydVMjDY+ljxmeFhqUHbuDVGCw6vfizNJ2CBaQq09FouX7F7g== X-Received: by 2002:a1c:16c5:: with SMTP id 188mr10723383wmw.69.1545307861883; Thu, 20 Dec 2018 04:11:01 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Thu, 20 Dec 2018 13:11:00 +0100 Message-Id: <20181220121100.21554-1-pbonzini@redhat.com> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::344 Subject: [Qemu-devel] [PATCH] target/i386: Disable MPX support on named CPU models X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: ehabkost@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" MPX support is being phased out by Intel; GCC has dropped it, Linux is also going to do that. Even though KVM will have special code to support MPX after the kernel proper stops enabling it in XCR0, we probably also want to deprecate that in a few years. As a start, do not enable it by default for any named CPU model starting with the 4.0 machine types; this include Skylake, Icelake and Cascadelake. Signed-off-by: Paolo Bonzini Reviewed-by:=C2=A0 Wainer dos Santos Moschetta --- include/hw/i386/pc.h | 29 +++++++++++++++++++++++++++++ target/i386/cpu.c | 14 +++++++------- 2 files changed, 36 insertions(+), 7 deletions(-) diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h index 9d29c4b1df..39619e9c01 100644 --- a/include/hw/i386/pc.h +++ b/include/hw/i386/pc.h @@ -296,6 +296,35 @@ bool e820_get_entry(int, uint32_t, uint64_t *, uint64_= t *); =20 #define PC_COMPAT_3_1 \ HW_COMPAT_3_1 \ + {\ + .driver =3D "Skylake-Client" "-" TYPE_X86_CPU,\ + .property =3D "mpx",\ + .value =3D "on",\ + },{\ + .driver =3D "Skylake-Client-IBRS" "-" TYPE_X86_CPU,\ + .property =3D "mpx",\ + .value =3D "on",\ + },{\ + .driver =3D "Skylake-Server" "-" TYPE_X86_CPU,\ + .property =3D "mpx",\ + .value =3D "on",\ + },{\ + .driver =3D "Skylake-Server-IBRS" "-" TYPE_X86_CPU,\ + .property =3D "mpx",\ + .value =3D "on",\ + },{\ + .driver =3D "Cascadelake-Server" "-" TYPE_X86_CPU,\ + .property =3D "mpx",\ + .value =3D "on",\ + },{\ + .driver =3D "Icelake-Client" "-" TYPE_X86_CPU,\ + .property =3D "mpx",\ + .value =3D "on",\ + },{\ + .driver =3D "Icelake-Server" "-" TYPE_X86_CPU,\ + .property =3D "mpx",\ + .value =3D "on",\ + }, =20 #define PC_COMPAT_3_0 \ HW_COMPAT_3_0 \ diff --git a/target/i386/cpu.c b/target/i386/cpu.c index 677a3bd5fb..1dc1f569da 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -2296,7 +2296,7 @@ static X86CPUDefinition builtin_x86_defs[] =3D { CPUID_7_0_EBX_HLE | CPUID_7_0_EBX_AVX2 | CPUID_7_0_EBX_SMEP | CPUID_7_0_EBX_BMI2 | CPUID_7_0_EBX_ERMS | CPUID_7_0_EBX_INVPCI= D | CPUID_7_0_EBX_RTM | CPUID_7_0_EBX_RDSEED | CPUID_7_0_EBX_ADX | - CPUID_7_0_EBX_SMAP | CPUID_7_0_EBX_MPX, + CPUID_7_0_EBX_SMAP, /* Missing: XSAVES (not supported by some Linux versions, * including v4.1 to v4.12). * KVM doesn't yet expose any XSAVES state save component, @@ -2343,7 +2343,7 @@ static X86CPUDefinition builtin_x86_defs[] =3D { CPUID_7_0_EBX_HLE | CPUID_7_0_EBX_AVX2 | CPUID_7_0_EBX_SMEP | CPUID_7_0_EBX_BMI2 | CPUID_7_0_EBX_ERMS | CPUID_7_0_EBX_INVPCI= D | CPUID_7_0_EBX_RTM | CPUID_7_0_EBX_RDSEED | CPUID_7_0_EBX_ADX | - CPUID_7_0_EBX_SMAP | CPUID_7_0_EBX_MPX, + CPUID_7_0_EBX_SMAP, /* Missing: XSAVES (not supported by some Linux versions, * including v4.1 to v4.12). * KVM doesn't yet expose any XSAVES state save component, @@ -2388,7 +2388,7 @@ static X86CPUDefinition builtin_x86_defs[] =3D { CPUID_7_0_EBX_HLE | CPUID_7_0_EBX_AVX2 | CPUID_7_0_EBX_SMEP | CPUID_7_0_EBX_BMI2 | CPUID_7_0_EBX_ERMS | CPUID_7_0_EBX_INVPCI= D | CPUID_7_0_EBX_RTM | CPUID_7_0_EBX_RDSEED | CPUID_7_0_EBX_ADX | - CPUID_7_0_EBX_SMAP | CPUID_7_0_EBX_MPX | CPUID_7_0_EBX_CLWB | + CPUID_7_0_EBX_SMAP | CPUID_7_0_EBX_CLWB | CPUID_7_0_EBX_AVX512F | CPUID_7_0_EBX_AVX512DQ | CPUID_7_0_EBX_AVX512BW | CPUID_7_0_EBX_AVX512CD | CPUID_7_0_EBX_AVX512VL | CPUID_7_0_EBX_CLFLUSHOPT, @@ -2440,7 +2440,7 @@ static X86CPUDefinition builtin_x86_defs[] =3D { CPUID_7_0_EBX_HLE | CPUID_7_0_EBX_AVX2 | CPUID_7_0_EBX_SMEP | CPUID_7_0_EBX_BMI2 | CPUID_7_0_EBX_ERMS | CPUID_7_0_EBX_INVPCI= D | CPUID_7_0_EBX_RTM | CPUID_7_0_EBX_RDSEED | CPUID_7_0_EBX_ADX | - CPUID_7_0_EBX_SMAP | CPUID_7_0_EBX_MPX | CPUID_7_0_EBX_CLWB | + CPUID_7_0_EBX_SMAP | CPUID_7_0_EBX_CLWB | CPUID_7_0_EBX_AVX512F | CPUID_7_0_EBX_AVX512DQ | CPUID_7_0_EBX_AVX512BW | CPUID_7_0_EBX_AVX512CD | CPUID_7_0_EBX_AVX512VL, @@ -2490,7 +2490,7 @@ static X86CPUDefinition builtin_x86_defs[] =3D { CPUID_7_0_EBX_HLE | CPUID_7_0_EBX_AVX2 | CPUID_7_0_EBX_SMEP | CPUID_7_0_EBX_BMI2 | CPUID_7_0_EBX_ERMS | CPUID_7_0_EBX_INVPCI= D | CPUID_7_0_EBX_RTM | CPUID_7_0_EBX_RDSEED | CPUID_7_0_EBX_ADX | - CPUID_7_0_EBX_SMAP | CPUID_7_0_EBX_MPX | CPUID_7_0_EBX_CLWB | + CPUID_7_0_EBX_SMAP | CPUID_7_0_EBX_CLWB | CPUID_7_0_EBX_AVX512F | CPUID_7_0_EBX_AVX512DQ | CPUID_7_0_EBX_AVX512BW | CPUID_7_0_EBX_AVX512CD | CPUID_7_0_EBX_AVX512VL | CPUID_7_0_EBX_CLFLUSHOPT | @@ -2546,7 +2546,7 @@ static X86CPUDefinition builtin_x86_defs[] =3D { CPUID_7_0_EBX_HLE | CPUID_7_0_EBX_AVX2 | CPUID_7_0_EBX_SMEP | CPUID_7_0_EBX_BMI2 | CPUID_7_0_EBX_ERMS | CPUID_7_0_EBX_INVPCI= D | CPUID_7_0_EBX_RTM | CPUID_7_0_EBX_RDSEED | CPUID_7_0_EBX_ADX | - CPUID_7_0_EBX_SMAP | CPUID_7_0_EBX_MPX | CPUID_7_0_EBX_INTEL_P= T, + CPUID_7_0_EBX_SMAP | CPUID_7_0_EBX_INTEL_PT, .features[FEAT_7_0_ECX] =3D CPUID_7_0_ECX_VBMI | CPUID_7_0_ECX_UMIP | CPUID_7_0_ECX_PKU | CPUID_7_0_ECX_OSPKE | CPUID_7_0_ECX_VBMI2 | CPUID_7_0_ECX_GFNI= | @@ -2601,7 +2601,7 @@ static X86CPUDefinition builtin_x86_defs[] =3D { CPUID_7_0_EBX_HLE | CPUID_7_0_EBX_AVX2 | CPUID_7_0_EBX_SMEP | CPUID_7_0_EBX_BMI2 | CPUID_7_0_EBX_ERMS | CPUID_7_0_EBX_INVPCI= D | CPUID_7_0_EBX_RTM | CPUID_7_0_EBX_RDSEED | CPUID_7_0_EBX_ADX | - CPUID_7_0_EBX_SMAP | CPUID_7_0_EBX_MPX | CPUID_7_0_EBX_CLWB | + CPUID_7_0_EBX_SMAP | CPUID_7_0_EBX_CLWB | CPUID_7_0_EBX_AVX512F | CPUID_7_0_EBX_AVX512DQ | CPUID_7_0_EBX_AVX512BW | CPUID_7_0_EBX_AVX512CD | CPUID_7_0_EBX_AVX512VL | CPUID_7_0_EBX_CLFLUSHOPT | --=20 2.20.1