All of lore.kernel.org
 help / color / mirror / Atom feed
From: tip-bot for Kyle Huey <tipbot@zytor.com>
To: linux-tip-commits@vger.kernel.org
Cc: boris.ostrovsky@oracle.com, pbonzini@redhat.com,
	robert@ocallahan.org, khuey@kylehuey.com, me@kylehuey.com,
	viro@zeniv.linux.org.uk, andi@firstfloor.org,
	rafael.j.wysocki@intel.com, richard@nod.at,
	grzegorz.andrejczuk@intel.com, hpa@zytor.com, bp@suse.de,
	rkrcmar@redhat.com, tglx@linutronix.de, dsafonov@virtuozzo.com,
	dave.hansen@linux.intel.com, mingo@kernel.org,
	dmatlack@google.com, peterz@infradead.org, shuah@kernel.org,
	linux-kernel@vger.kernel.org, jdike@addtoit.com, luto@kernel.org,
	len.brown@intel.com, nadav.amit@gmail.com
Subject: [tip:x86/process] x86/cpufeature: Detect CPUID faulting support
Date: Mon, 20 Mar 2017 09:34:22 -0700	[thread overview]
Message-ID: <tip-90218ac77d0582eaf2d0872d8d900cbd5bf1f205@git.kernel.org> (raw)
In-Reply-To: <20170320081628.18952-8-khuey@kylehuey.com>

Commit-ID:  90218ac77d0582eaf2d0872d8d900cbd5bf1f205
Gitweb:     http://git.kernel.org/tip/90218ac77d0582eaf2d0872d8d900cbd5bf1f205
Author:     Kyle Huey <me@kylehuey.com>
AuthorDate: Mon, 20 Mar 2017 01:16:25 -0700
Committer:  Thomas Gleixner <tglx@linutronix.de>
CommitDate: Mon, 20 Mar 2017 16:10:34 +0100

x86/cpufeature: Detect CPUID faulting support

Intel supports faulting on the CPUID instruction beginning with Ivy Bridge.
When enabled, the processor will fault on attempts to execute the CPUID
instruction with CPL>0. This will allow a ptracer to emulate the CPUID
instruction.

Bit 31 of MSR_PLATFORM_INFO advertises support for this feature. It is
documented in detail in Section 2.3.2 of
https://bugzilla.kernel.org/attachment.cgi?id=243991

Detect support for this feature and expose it as X86_FEATURE_CPUID_FAULT.

Signed-off-by: Kyle Huey <khuey@kylehuey.com>
Reviewed-by: Borislav Petkov <bp@suse.de>
Cc: Grzegorz Andrejczuk <grzegorz.andrejczuk@intel.com>
Cc: kvm@vger.kernel.org
Cc: Radim Krčmář <rkrcmar@redhat.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Dave Hansen <dave.hansen@linux.intel.com>
Cc: Andi Kleen <andi@firstfloor.org>
Cc: linux-kselftest@vger.kernel.org
Cc: Nadav Amit <nadav.amit@gmail.com>
Cc: Robert O'Callahan <robert@ocallahan.org>
Cc: Richard Weinberger <richard@nod.at>
Cc: "Rafael J. Wysocki" <rafael.j.wysocki@intel.com>
Cc: Andy Lutomirski <luto@kernel.org>
Cc: Len Brown <len.brown@intel.com>
Cc: Shuah Khan <shuah@kernel.org>
Cc: user-mode-linux-devel@lists.sourceforge.net
Cc: Jeff Dike <jdike@addtoit.com>
Cc: Alexander Viro <viro@zeniv.linux.org.uk>
Cc: user-mode-linux-user@lists.sourceforge.net
Cc: David Matlack <dmatlack@google.com>
Cc: Boris Ostrovsky <boris.ostrovsky@oracle.com>
Cc: Dmitry Safonov <dsafonov@virtuozzo.com>
Cc: linux-fsdevel@vger.kernel.org
Cc: Paolo Bonzini <pbonzini@redhat.com>
Link: http://lkml.kernel.org/r/20170320081628.18952-8-khuey@kylehuey.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>

---
 arch/x86/include/asm/cpufeatures.h |  1 +
 arch/x86/include/asm/msr-index.h   |  2 ++
 arch/x86/kernel/cpu/intel.c        | 24 +++++++++++++++++++++++-
 3 files changed, 26 insertions(+), 1 deletion(-)

diff --git a/arch/x86/include/asm/cpufeatures.h b/arch/x86/include/asm/cpufeatures.h
index b04bb6d..0fe0044 100644
--- a/arch/x86/include/asm/cpufeatures.h
+++ b/arch/x86/include/asm/cpufeatures.h
@@ -187,6 +187,7 @@
  * Reuse free bits when adding new feature flags!
  */
 #define X86_FEATURE_RING3MWAIT	( 7*32+ 0) /* Ring 3 MONITOR/MWAIT */
+#define X86_FEATURE_CPUID_FAULT ( 7*32+ 1) /* Intel CPUID faulting */
 #define X86_FEATURE_CPB		( 7*32+ 2) /* AMD Core Performance Boost */
 #define X86_FEATURE_EPB		( 7*32+ 3) /* IA32_ENERGY_PERF_BIAS support */
 #define X86_FEATURE_CAT_L3	( 7*32+ 4) /* Cache Allocation Technology L3 */
diff --git a/arch/x86/include/asm/msr-index.h b/arch/x86/include/asm/msr-index.h
index f429b70..b1f75da 100644
--- a/arch/x86/include/asm/msr-index.h
+++ b/arch/x86/include/asm/msr-index.h
@@ -45,6 +45,8 @@
 #define MSR_IA32_PERFCTR1		0x000000c2
 #define MSR_FSB_FREQ			0x000000cd
 #define MSR_PLATFORM_INFO		0x000000ce
+#define MSR_PLATFORM_INFO_CPUID_FAULT_BIT	31
+#define MSR_PLATFORM_INFO_CPUID_FAULT		BIT_ULL(MSR_PLATFORM_INFO_CPUID_FAULT_BIT)
 
 #define MSR_PKG_CST_CONFIG_CONTROL	0x000000e2
 #define NHM_C3_AUTO_DEMOTE		(1UL << 25)
diff --git a/arch/x86/kernel/cpu/intel.c b/arch/x86/kernel/cpu/intel.c
index e229318..a07f829 100644
--- a/arch/x86/kernel/cpu/intel.c
+++ b/arch/x86/kernel/cpu/intel.c
@@ -488,6 +488,28 @@ static void intel_bsp_resume(struct cpuinfo_x86 *c)
 	init_intel_energy_perf(c);
 }
 
+static void init_cpuid_fault(struct cpuinfo_x86 *c)
+{
+	u64 msr;
+
+	if (!rdmsrl_safe(MSR_PLATFORM_INFO, &msr)) {
+		if (msr & MSR_PLATFORM_INFO_CPUID_FAULT)
+			set_cpu_cap(c, X86_FEATURE_CPUID_FAULT);
+	}
+}
+
+static void init_intel_misc_features(struct cpuinfo_x86 *c)
+{
+	u64 msr;
+
+	if (rdmsrl_safe(MSR_MISC_FEATURES_ENABLES, &msr))
+		return;
+
+	/* Check features and update capabilities */
+	init_cpuid_fault(c);
+	probe_xeon_phi_r3mwait(c);
+}
+
 static void init_intel(struct cpuinfo_x86 *c)
 {
 	unsigned int l2 = 0;
@@ -602,7 +624,7 @@ static void init_intel(struct cpuinfo_x86 *c)
 
 	init_intel_energy_perf(c);
 
-	probe_xeon_phi_r3mwait(c);
+	init_intel_misc_features(c);
 }
 
 #ifdef CONFIG_X86_32

  reply	other threads:[~2017-03-20 16:35 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-03-20  8:16 [PATCH v16 0/10] x86/arch_prctl Add ARCH_[GET|SET]_CPUID for controlling the CPUID instruction Kyle Huey
2017-03-20  8:16 ` Kyle Huey
2017-03-20  8:16 ` [PATCH v16 01/10] x86/msr: Rename MISC_FEATURE_ENABLES to MISC_FEATURES_ENABLES Kyle Huey
2017-03-20  8:16   ` Kyle Huey
2017-03-20 16:31   ` [tip:x86/process] " tip-bot for Kyle Huey
2018-07-27 17:18   ` [PATCH v16 01/10] " jmattson
2018-07-27 17:18     ` Jim Mattson
2018-07-27 17:18     ` Jim Mattson
2018-07-27 17:18     ` Jim Mattson
2017-03-20  8:16 ` [PATCH v16 02/10] x86/arch_prctl: Rename 'code' argument to 'option' Kyle Huey
2017-03-20  8:16   ` Kyle Huey
2017-03-20 16:31   ` [tip:x86/process] " tip-bot for Kyle Huey
2017-03-20  8:16 ` [PATCH v16 03/10] x86/arch_prctl/64: Use SYSCALL_DEFINE2 to define sys_arch_prctl Kyle Huey
2017-03-20  8:16   ` Kyle Huey
2017-03-20 16:32   ` [tip:x86/process] x86/arch_prctl/64: Use SYSCALL_DEFINE2 to define sys_arch_prctl() tip-bot for Kyle Huey
2017-03-20  8:16 ` [PATCH v16 04/10] x86/arch_prctl/64: Rename do_arch_prctl to do_arch_prctl_64 Kyle Huey
2017-03-20  8:16   ` Kyle Huey
2017-03-20 16:32   ` [tip:x86/process] x86/arch_prctl/64: Rename do_arch_prctl() to do_arch_prctl_64() tip-bot for Kyle Huey
2017-03-20  8:16 ` [PATCH v16 05/10] x86/arch_prctl: Add do_arch_prctl_common Kyle Huey
2017-03-20  8:16   ` Kyle Huey
2017-03-20 16:33   ` [tip:x86/process] x86/arch_prctl: Add do_arch_prctl_common() tip-bot for Kyle Huey
2017-03-20  8:16 ` [PATCH v16 06/10] x86/syscalls/32: Wire up arch_prctl on x86-32 Kyle Huey
2017-03-20  8:16   ` Kyle Huey
2017-03-20 16:33   ` [tip:x86/process] " tip-bot for Kyle Huey
2017-03-20  8:16 ` [PATCH v16 07/10] x86/cpufeature: Detect CPUID faulting support Kyle Huey
2017-03-20  8:16   ` Kyle Huey
2017-03-20 16:34   ` tip-bot for Kyle Huey [this message]
2017-03-20  8:16 ` [PATCH v16 08/10] x86/arch_prctl: Add ARCH_[GET|SET]_CPUID Kyle Huey
2017-03-20  8:16   ` Kyle Huey
2017-03-20 15:00   ` Thomas Gleixner
2017-03-20 15:00     ` Thomas Gleixner
2017-03-20 16:39     ` Kyle Huey
2017-03-20 16:39       ` Kyle Huey
2017-03-20 16:34   ` [tip:x86/process] " tip-bot for Kyle Huey
2017-03-21  8:34     ` Ingo Molnar
2017-03-21 18:33       ` Kyle Huey
2017-03-20  8:16 ` [PATCH v16 09/10] x86/arch_prctl: Selftest for ARCH_[GET|SET]_CPUID Kyle Huey
2017-03-20  8:16   ` Kyle Huey
2017-10-11  3:35   ` Wanpeng Li
2017-10-11  3:35     ` Wanpeng Li
2017-10-11  3:56     ` Kyle Huey
2017-10-11  3:56       ` Kyle Huey
2017-10-11  6:25       ` Wanpeng Li
2017-10-11  6:25         ` Wanpeng Li
2017-10-20  8:53       ` Thomas Gleixner
2017-10-20  8:53         ` Thomas Gleixner
2017-03-20  8:16 ` [PATCH v16 10/10] KVM: x86: virtualize cpuid faulting Kyle Huey
2017-03-20  8:16   ` Kyle Huey
2017-04-21  9:58   ` Paolo Bonzini

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=tip-90218ac77d0582eaf2d0872d8d900cbd5bf1f205@git.kernel.org \
    --to=tipbot@zytor.com \
    --cc=andi@firstfloor.org \
    --cc=boris.ostrovsky@oracle.com \
    --cc=bp@suse.de \
    --cc=dave.hansen@linux.intel.com \
    --cc=dmatlack@google.com \
    --cc=dsafonov@virtuozzo.com \
    --cc=grzegorz.andrejczuk@intel.com \
    --cc=hpa@zytor.com \
    --cc=jdike@addtoit.com \
    --cc=khuey@kylehuey.com \
    --cc=len.brown@intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-tip-commits@vger.kernel.org \
    --cc=luto@kernel.org \
    --cc=me@kylehuey.com \
    --cc=mingo@kernel.org \
    --cc=nadav.amit@gmail.com \
    --cc=pbonzini@redhat.com \
    --cc=peterz@infradead.org \
    --cc=rafael.j.wysocki@intel.com \
    --cc=richard@nod.at \
    --cc=rkrcmar@redhat.com \
    --cc=robert@ocallahan.org \
    --cc=shuah@kernel.org \
    --cc=tglx@linutronix.de \
    --cc=viro@zeniv.linux.org.uk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.