linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/2] x86: Enumerate direct stores instructions
@ 2018-10-24 21:57 Fenghua Yu
  2018-10-24 21:57 ` [PATCH 1/2] x86/cpufeatures: Enumerate MOVDIRI instruction Fenghua Yu
  2018-10-24 21:57 ` [PATCH 2/2] x86/cpufeatures: Enumerate MOVDIR64B instruction Fenghua Yu
  0 siblings, 2 replies; 5+ messages in thread
From: Fenghua Yu @ 2018-10-24 21:57 UTC (permalink / raw)
  To: Thomas Gleixner, Ingo Molnar, H Peter Anvin, Ravi V Shankar, Ashok Raj
  Cc: linux-kernel, Fenghua Yu

Direct stores instructionis MOVDIRI and MOVDIR64B will be available in
Tremont and other future x86 processors.

This patch set enumerates the instructions through CPUID.

GCC 8 implements intrinsics for the direct stores instructions.
User can try these instructions from GCC tree:
https://gcc.gnu.org/git/?p=gcc.git;a=summary
Before running the instructions, user needs to check availability of
the features by CPUID, or /proc/cpuinfo, etc.

Detailed information on the instructions and the MSR can be found in
the latest Intel Architecture Instruction Set Extensions and Future
Features Programming Reference at
https://software.intel.com/sites/default/files/managed/c5/15/architecture-instruction-set-extensions-programming-reference.pdf

Please note: this patch set was sent out with umonitor/umwait/tpause
instructions patches before. But since we find the other patches are not
fully ready yet, this time these direct stores instructions patches are
sent out separately.

Fenghua Yu (2):
  x86/cpufeatures: Enumerate MOVDIRI instruction
  x86/cpufeatures: Enumerate MOVDIR64B instruction

 arch/x86/include/asm/cpufeatures.h | 2 ++
 1 file changed, 2 insertions(+)

-- 
2.5.0


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH 1/2] x86/cpufeatures: Enumerate MOVDIRI instruction
  2018-10-24 21:57 [PATCH 0/2] x86: Enumerate direct stores instructions Fenghua Yu
@ 2018-10-24 21:57 ` Fenghua Yu
  2018-10-25  5:45   ` [tip:x86/urgent] " tip-bot for Fenghua Yu
  2018-10-24 21:57 ` [PATCH 2/2] x86/cpufeatures: Enumerate MOVDIR64B instruction Fenghua Yu
  1 sibling, 1 reply; 5+ messages in thread
From: Fenghua Yu @ 2018-10-24 21:57 UTC (permalink / raw)
  To: Thomas Gleixner, Ingo Molnar, H Peter Anvin, Ravi V Shankar, Ashok Raj
  Cc: linux-kernel, Fenghua Yu

MOVDIRI moves doubleword or quadword from register to memory through
direct store which is implemented by using write combining (WC) for
writing data directly into memory without caching the data.

Programmable agents can handle streaming offload (e.g. high speed packet
processing in network). Hardware implements a doorbell (tail pointer)
register that is updated by software when adding new work-elements to
the streaming offload work-queue.

MOVDIRI can be used as the doorbell write which is a 4-byte or 8-byte
uncachable write to MMIO. MOVDIRI has lower overhead than other ways
to write the doorbell.

Availability of the MOVDIRI instruction is indicated by the presence of
the CPUID feature flag MOVDIRI(CPUID.0x07.0x0:ECX[bit 27]).

Please check the latest Intel Architecture Instruction Set Extensions
and Future Features Programming Reference for more details on the CPUID
feature MOVDIRI flag.

Signed-off-by: Fenghua Yu <fenghua.yu@intel.com>
---
 arch/x86/include/asm/cpufeatures.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/arch/x86/include/asm/cpufeatures.h b/arch/x86/include/asm/cpufeatures.h
index 89a048c2faec..90934ee7b79a 100644
--- a/arch/x86/include/asm/cpufeatures.h
+++ b/arch/x86/include/asm/cpufeatures.h
@@ -331,6 +331,7 @@
 #define X86_FEATURE_LA57		(16*32+16) /* 5-level page tables */
 #define X86_FEATURE_RDPID		(16*32+22) /* RDPID instruction */
 #define X86_FEATURE_CLDEMOTE		(16*32+25) /* CLDEMOTE instruction */
+#define X86_FEATURE_MOVDIRI		(16*32+27) /* MOVDIRI instruction */
 
 /* AMD-defined CPU features, CPUID level 0x80000007 (EBX), word 17 */
 #define X86_FEATURE_OVERFLOW_RECOV	(17*32+ 0) /* MCA overflow recovery support */
-- 
2.5.0


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH 2/2] x86/cpufeatures: Enumerate MOVDIR64B instruction
  2018-10-24 21:57 [PATCH 0/2] x86: Enumerate direct stores instructions Fenghua Yu
  2018-10-24 21:57 ` [PATCH 1/2] x86/cpufeatures: Enumerate MOVDIRI instruction Fenghua Yu
@ 2018-10-24 21:57 ` Fenghua Yu
  2018-10-25  5:46   ` [tip:x86/urgent] " tip-bot for Fenghua Yu
  1 sibling, 1 reply; 5+ messages in thread
From: Fenghua Yu @ 2018-10-24 21:57 UTC (permalink / raw)
  To: Thomas Gleixner, Ingo Molnar, H Peter Anvin, Ravi V Shankar, Ashok Raj
  Cc: linux-kernel, Fenghua Yu

MOVDIR64B moves 64-bytes as direct-store with 64-bytes write atomicity.
Direct store is implemented by using write combining (WC) for writing
data directly into memory without caching the data.

In low latency offload (e.g. Non-Volatile Memory, etc), MOVDIR64B writes
work descriptors (and data in some cases) to device-hosted work-queues
atomically without cache pollution.

Availability of the MOVDIR64B instruction is indicated by the
presence of the CPUID feature flag MOVDIR64B (CPUID.0x07.0x0:ECX[bit 28]).

Please check the latest Intel Architecture Instruction Set Extensions
and Future Features Programming Reference for more details on the CPUID
feature MOVDIR64B flag.

Signed-off-by: Fenghua Yu <fenghua.yu@intel.com>
---
 arch/x86/include/asm/cpufeatures.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/arch/x86/include/asm/cpufeatures.h b/arch/x86/include/asm/cpufeatures.h
index 90934ee7b79a..28c4a502b419 100644
--- a/arch/x86/include/asm/cpufeatures.h
+++ b/arch/x86/include/asm/cpufeatures.h
@@ -332,6 +332,7 @@
 #define X86_FEATURE_RDPID		(16*32+22) /* RDPID instruction */
 #define X86_FEATURE_CLDEMOTE		(16*32+25) /* CLDEMOTE instruction */
 #define X86_FEATURE_MOVDIRI		(16*32+27) /* MOVDIRI instruction */
+#define X86_FEATURE_MOVDIR64B		(16*32+28) /* MOVDIR64B instruction */
 
 /* AMD-defined CPU features, CPUID level 0x80000007 (EBX), word 17 */
 #define X86_FEATURE_OVERFLOW_RECOV	(17*32+ 0) /* MCA overflow recovery support */
-- 
2.5.0


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [tip:x86/urgent] x86/cpufeatures: Enumerate MOVDIRI instruction
  2018-10-24 21:57 ` [PATCH 1/2] x86/cpufeatures: Enumerate MOVDIRI instruction Fenghua Yu
@ 2018-10-25  5:45   ` tip-bot for Fenghua Yu
  0 siblings, 0 replies; 5+ messages in thread
From: tip-bot for Fenghua Yu @ 2018-10-25  5:45 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: torvalds, brgerst, linux-kernel, luto, dvlasenk, ashok.raj, bp,
	fenghua.yu, tglx, ravi.v.shankar, peterz, hpa, mingo

Commit-ID:  33823f4d63f7a010653d219800539409a78ef4be
Gitweb:     https://git.kernel.org/tip/33823f4d63f7a010653d219800539409a78ef4be
Author:     Fenghua Yu <fenghua.yu@intel.com>
AuthorDate: Wed, 24 Oct 2018 14:57:16 -0700
Committer:  Ingo Molnar <mingo@kernel.org>
CommitDate: Thu, 25 Oct 2018 07:42:48 +0200

x86/cpufeatures: Enumerate MOVDIRI instruction

MOVDIRI moves doubleword or quadword from register to memory through
direct store which is implemented by using write combining (WC) for
writing data directly into memory without caching the data.

Programmable agents can handle streaming offload (e.g. high speed packet
processing in network). Hardware implements a doorbell (tail pointer)
register that is updated by software when adding new work-elements to
the streaming offload work-queue.

MOVDIRI can be used as the doorbell write which is a 4-byte or 8-byte
uncachable write to MMIO. MOVDIRI has lower overhead than other ways
to write the doorbell.

Availability of the MOVDIRI instruction is indicated by the presence of
the CPUID feature flag MOVDIRI(CPUID.0x07.0x0:ECX[bit 27]).

Please check the latest Intel Architecture Instruction Set Extensions
and Future Features Programming Reference for more details on the CPUID
feature MOVDIRI flag.

Signed-off-by: Fenghua Yu <fenghua.yu@intel.com>
Cc: Andy Lutomirski <luto@amacapital.net>
Cc: Ashok Raj <ashok.raj@intel.com>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Brian Gerst <brgerst@gmail.com>
Cc: Denys Vlasenko <dvlasenk@redhat.com>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Ravi V Shankar <ravi.v.shankar@intel.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Link: http://lkml.kernel.org/r/1540418237-125817-2-git-send-email-fenghua.yu@intel.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
---
 arch/x86/include/asm/cpufeatures.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/arch/x86/include/asm/cpufeatures.h b/arch/x86/include/asm/cpufeatures.h
index 89a048c2faec..90934ee7b79a 100644
--- a/arch/x86/include/asm/cpufeatures.h
+++ b/arch/x86/include/asm/cpufeatures.h
@@ -331,6 +331,7 @@
 #define X86_FEATURE_LA57		(16*32+16) /* 5-level page tables */
 #define X86_FEATURE_RDPID		(16*32+22) /* RDPID instruction */
 #define X86_FEATURE_CLDEMOTE		(16*32+25) /* CLDEMOTE instruction */
+#define X86_FEATURE_MOVDIRI		(16*32+27) /* MOVDIRI instruction */
 
 /* AMD-defined CPU features, CPUID level 0x80000007 (EBX), word 17 */
 #define X86_FEATURE_OVERFLOW_RECOV	(17*32+ 0) /* MCA overflow recovery support */

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [tip:x86/urgent] x86/cpufeatures: Enumerate MOVDIR64B instruction
  2018-10-24 21:57 ` [PATCH 2/2] x86/cpufeatures: Enumerate MOVDIR64B instruction Fenghua Yu
@ 2018-10-25  5:46   ` tip-bot for Fenghua Yu
  0 siblings, 0 replies; 5+ messages in thread
From: tip-bot for Fenghua Yu @ 2018-10-25  5:46 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: tglx, dvlasenk, fenghua.yu, ashok.raj, peterz, bp,
	ravi.v.shankar, mingo, linux-kernel, brgerst, torvalds, hpa,
	luto

Commit-ID:  ace6485a03266cc3c198ce8e927a1ce0ce139699
Gitweb:     https://git.kernel.org/tip/ace6485a03266cc3c198ce8e927a1ce0ce139699
Author:     Fenghua Yu <fenghua.yu@intel.com>
AuthorDate: Wed, 24 Oct 2018 14:57:17 -0700
Committer:  Ingo Molnar <mingo@kernel.org>
CommitDate: Thu, 25 Oct 2018 07:42:48 +0200

x86/cpufeatures: Enumerate MOVDIR64B instruction

MOVDIR64B moves 64-bytes as direct-store with 64-bytes write atomicity.
Direct store is implemented by using write combining (WC) for writing
data directly into memory without caching the data.

In low latency offload (e.g. Non-Volatile Memory, etc), MOVDIR64B writes
work descriptors (and data in some cases) to device-hosted work-queues
atomically without cache pollution.

Availability of the MOVDIR64B instruction is indicated by the
presence of the CPUID feature flag MOVDIR64B (CPUID.0x07.0x0:ECX[bit 28]).

Please check the latest Intel Architecture Instruction Set Extensions
and Future Features Programming Reference for more details on the CPUID
feature MOVDIR64B flag.

Signed-off-by: Fenghua Yu <fenghua.yu@intel.com>
Cc: Andy Lutomirski <luto@amacapital.net>
Cc: Ashok Raj <ashok.raj@intel.com>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Brian Gerst <brgerst@gmail.com>
Cc: Denys Vlasenko <dvlasenk@redhat.com>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Ravi V Shankar <ravi.v.shankar@intel.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Link: http://lkml.kernel.org/r/1540418237-125817-3-git-send-email-fenghua.yu@intel.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
---
 arch/x86/include/asm/cpufeatures.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/arch/x86/include/asm/cpufeatures.h b/arch/x86/include/asm/cpufeatures.h
index 90934ee7b79a..28c4a502b419 100644
--- a/arch/x86/include/asm/cpufeatures.h
+++ b/arch/x86/include/asm/cpufeatures.h
@@ -332,6 +332,7 @@
 #define X86_FEATURE_RDPID		(16*32+22) /* RDPID instruction */
 #define X86_FEATURE_CLDEMOTE		(16*32+25) /* CLDEMOTE instruction */
 #define X86_FEATURE_MOVDIRI		(16*32+27) /* MOVDIRI instruction */
+#define X86_FEATURE_MOVDIR64B		(16*32+28) /* MOVDIR64B instruction */
 
 /* AMD-defined CPU features, CPUID level 0x80000007 (EBX), word 17 */
 #define X86_FEATURE_OVERFLOW_RECOV	(17*32+ 0) /* MCA overflow recovery support */

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2018-10-25  5:47 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-10-24 21:57 [PATCH 0/2] x86: Enumerate direct stores instructions Fenghua Yu
2018-10-24 21:57 ` [PATCH 1/2] x86/cpufeatures: Enumerate MOVDIRI instruction Fenghua Yu
2018-10-25  5:45   ` [tip:x86/urgent] " tip-bot for Fenghua Yu
2018-10-24 21:57 ` [PATCH 2/2] x86/cpufeatures: Enumerate MOVDIR64B instruction Fenghua Yu
2018-10-25  5:46   ` [tip:x86/urgent] " tip-bot for Fenghua Yu

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).