From nobody Mon Feb 9 02:28:09 2026 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; 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 Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1515513212411244.18686130694152; Tue, 9 Jan 2018 07:53:32 -0800 (PST) Received: from localhost ([::1]:59237 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eYwDP-0008Hq-99 for importer@patchew.org; Tue, 09 Jan 2018 10:53:27 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43367) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eYw6U-0003HP-Qr for qemu-devel@nongnu.org; Tue, 09 Jan 2018 10:46:20 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eYw6O-00042g-PJ for qemu-devel@nongnu.org; Tue, 09 Jan 2018 10:46:18 -0500 Received: from mx1.redhat.com ([209.132.183.28]:44940) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eYw6O-000428-Gz for qemu-devel@nongnu.org; Tue, 09 Jan 2018 10:46:12 -0500 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 5B543C0517AC; Tue, 9 Jan 2018 15:46:11 +0000 (UTC) Received: from localhost (ovpn-116-66.gru2.redhat.com [10.97.116.66]) by smtp.corp.redhat.com (Postfix) with ESMTP id 3846B8CCC5; Tue, 9 Jan 2018 15:46:06 +0000 (UTC) From: Eduardo Habkost To: qemu-devel@nongnu.org Date: Tue, 9 Jan 2018 13:45:19 -0200 Message-Id: <20180109154519.25634-8-ehabkost@redhat.com> In-Reply-To: <20180109154519.25634-1-ehabkost@redhat.com> References: <20180109154519.25634-1-ehabkost@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.32]); Tue, 09 Jan 2018 15:46:11 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH 7/7] [RFC] i386: Add PCID to {Westmere, SandyBridge, IvyBridge}-IBRS 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: Paolo Bonzini , Jiri Denemark , Vincent Bernat Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" RFC NOTE: we need to confirm if all Westmere/SandyBridge/IvyBridge CPUs out there support PCID, before applying this patch. RFC NOTE 2: in parallel, we are evaluating the possibility of enabling PCID on the existing Westmere/SandyBridge/IvyBridge CPU models, see https://patchew.org/QEMU/20180108205052.24385-1-vincent@bernat.im/ and https://patchew.org/QEMU/20180109070112.30806-1-vincent@bernat.im/ PCID was already available on Westmere, SandyBridge and IvyBridge, but we can't easily add it to the existing CPU models without breaking libvirt expectations about CPU model runnability (a runnable CPU model shouldn't become runnable just because of a machine-type or QEMU upgrade). However, Westmere-IBRS, SandyBridge-IBRS and IvyBridge-IBRS are new CPU models, so we can safely add PCID to them. Note that PCID is not necessary to mitigate Meltdown and/or Spectre, but it is really helpful to make performance not suffer when enabling KPTI on guest kernels. Cc: Jiri Denemark Suggested-by: Vincent Bernat Signed-off-by: Eduardo Habkost --- target/i386/cpu.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/target/i386/cpu.c b/target/i386/cpu.c index 9c36f9bd44..ad79fbb111 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -1119,6 +1119,7 @@ static X86CPUDefinition builtin_x86_defs[] =3D { CPUID_PGE | CPUID_MTRR | CPUID_SEP | CPUID_APIC | CPUID_CX8 | CPUID_MCE | CPUID_PAE | CPUID_MSR | CPUID_TSC | CPUID_PSE | CPUID_DE | CPUID_FP87, + /* Missing: CPUID_EXT_PCID */ .features[FEAT_1_ECX] =3D CPUID_EXT_AES | CPUID_EXT_POPCNT | CPUID_EXT_SSE42 | CPUID_EXT_SSE41 | CPUID_EXT_CX16 | CPUID_EXT_SSSE3 | @@ -1148,7 +1149,7 @@ static X86CPUDefinition builtin_x86_defs[] =3D { .features[FEAT_1_ECX] =3D CPUID_EXT_AES | CPUID_EXT_POPCNT | CPUID_EXT_SSE42 | CPUID_EXT_SSE41 | CPUID_EXT_CX16 | CPUID_EXT_SSSE3 | - CPUID_EXT_PCLMULQDQ | CPUID_EXT_SSE3, + CPUID_EXT_PCLMULQDQ | CPUID_EXT_SSE3 | CPUID_EXT_PCID, .features[FEAT_8000_0001_EDX] =3D CPUID_EXT2_LM | CPUID_EXT2_SYSCALL | CPUID_EXT2_NX, .features[FEAT_8000_0001_ECX] =3D @@ -1173,6 +1174,7 @@ static X86CPUDefinition builtin_x86_defs[] =3D { CPUID_PGE | CPUID_MTRR | CPUID_SEP | CPUID_APIC | CPUID_CX8 | CPUID_MCE | CPUID_PAE | CPUID_MSR | CPUID_TSC | CPUID_PSE | CPUID_DE | CPUID_FP87, + /* Missing: CPUID_EXT_PCID */ .features[FEAT_1_ECX] =3D CPUID_EXT_AVX | CPUID_EXT_XSAVE | CPUID_EXT_AES | CPUID_EXT_TSC_DEADLINE_TIMER | CPUID_EXT_POPCNT | @@ -1209,7 +1211,7 @@ static X86CPUDefinition builtin_x86_defs[] =3D { CPUID_EXT_TSC_DEADLINE_TIMER | CPUID_EXT_POPCNT | CPUID_EXT_X2APIC | CPUID_EXT_SSE42 | CPUID_EXT_SSE41 | CPUID_EXT_CX16 | CPUID_EXT_SSSE3 | CPUID_EXT_PCLMULQDQ | - CPUID_EXT_SSE3, + CPUID_EXT_SSE3 | CPUID_EXT_PCID, .features[FEAT_8000_0001_EDX] =3D CPUID_EXT2_LM | CPUID_EXT2_RDTSCP | CPUID_EXT2_NX | CPUID_EXT2_SYSCALL, @@ -1237,6 +1239,7 @@ static X86CPUDefinition builtin_x86_defs[] =3D { CPUID_PGE | CPUID_MTRR | CPUID_SEP | CPUID_APIC | CPUID_CX8 | CPUID_MCE | CPUID_PAE | CPUID_MSR | CPUID_TSC | CPUID_PSE | CPUID_DE | CPUID_FP87, + /* Missing: CPUID_EXT_PCID */ .features[FEAT_1_ECX] =3D CPUID_EXT_AVX | CPUID_EXT_XSAVE | CPUID_EXT_AES | CPUID_EXT_TSC_DEADLINE_TIMER | CPUID_EXT_POPCNT | @@ -1276,7 +1279,7 @@ static X86CPUDefinition builtin_x86_defs[] =3D { CPUID_EXT_TSC_DEADLINE_TIMER | CPUID_EXT_POPCNT | CPUID_EXT_X2APIC | CPUID_EXT_SSE42 | CPUID_EXT_SSE41 | CPUID_EXT_CX16 | CPUID_EXT_SSSE3 | CPUID_EXT_PCLMULQDQ | - CPUID_EXT_SSE3 | CPUID_EXT_F16C | CPUID_EXT_RDRAND, + CPUID_EXT_SSE3 | CPUID_EXT_F16C | CPUID_EXT_RDRAND | CPUID_EXT= _PCID, .features[FEAT_7_0_EBX] =3D CPUID_7_0_EBX_FSGSBASE | CPUID_7_0_EBX_SMEP | CPUID_7_0_EBX_ERMS, --=20 2.14.3