Pablo Greco e6a3ae
From a2765b13bbe4a4d5978cd25f451b35dbb137ab6e Mon Sep 17 00:00:00 2001
Pablo Greco e6a3ae
From: "plai@redhat.com" <plai@redhat.com>
Pablo Greco e6a3ae
Date: Tue, 26 Nov 2019 19:36:49 +0000
Pablo Greco e6a3ae
Subject: [PATCH 05/11] x86/cpu: Enable MOVDIRI cpu feature
Pablo Greco e6a3ae
Pablo Greco e6a3ae
RH-Author: plai@redhat.com
Pablo Greco e6a3ae
Message-id: <1574797015-32564-2-git-send-email-plai@redhat.com>
Pablo Greco e6a3ae
Patchwork-id: 92696
Pablo Greco e6a3ae
O-Subject: [RHEL8.2 qemu-kvm PATCH 1/7] x86/cpu: Enable MOVDIRI cpu feature
Pablo Greco e6a3ae
Bugzilla: 1634827
Pablo Greco e6a3ae
RH-Acked-by: Eduardo Habkost <ehabkost@redhat.com>
Pablo Greco e6a3ae
RH-Acked-by: Michael S. Tsirkin <mst@redhat.com>
Pablo Greco e6a3ae
RH-Acked-by: Igor Mammedov <imammedo@redhat.com>
Pablo Greco e6a3ae
Pablo Greco e6a3ae
From: Liu Jingqi <jingqi.liu@intel.com>
Pablo Greco e6a3ae
Pablo Greco e6a3ae
MOVDIRI moves doubleword or quadword from register to memory through
Pablo Greco e6a3ae
direct store which is implemented by using write combining (WC) for
Pablo Greco e6a3ae
writing data directly into memory without caching the data.
Pablo Greco e6a3ae
Pablo Greco e6a3ae
The bit definition:
Pablo Greco e6a3ae
CPUID.(EAX=7,ECX=0):ECX[bit 27] MOVDIRI
Pablo Greco e6a3ae
Pablo Greco e6a3ae
The release document ref below link:
Pablo Greco e6a3ae
https://software.intel.com/sites/default/files/managed/c5/15/\
Pablo Greco e6a3ae
architecture-instruction-set-extensions-programming-reference.pdf
Pablo Greco e6a3ae
Pablo Greco e6a3ae
Cc: Xu Tao <tao3.xu@intel.com>
Pablo Greco e6a3ae
Signed-off-by: Liu Jingqi <jingqi.liu@intel.com>
Pablo Greco e6a3ae
Message-Id: <1541488407-17045-2-git-send-email-jingqi.liu@intel.com>
Pablo Greco e6a3ae
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
Pablo Greco e6a3ae
(cherry picked from commit 24261de4916596d8ab5f5fee67e9e7a19e8325a5)
Pablo Greco e6a3ae
Signed-off-by: Paul Lai <plai@redhat.com>
Pablo Greco e6a3ae
Pablo Greco e6a3ae
Resolved Conflicts:
Pablo Greco e6a3ae
	target/i386/cpu.c
Pablo Greco e6a3ae
	target/i386/cpu.h
Pablo Greco e6a3ae
Pablo Greco e6a3ae
Signed-off-by: Danilo C. L. de Paula <ddepaula@redhat.com>
Pablo Greco e6a3ae
---
Pablo Greco e6a3ae
 target/i386/cpu.c | 2 +-
Pablo Greco e6a3ae
 target/i386/cpu.h | 1 +
Pablo Greco e6a3ae
 2 files changed, 2 insertions(+), 1 deletion(-)
Pablo Greco e6a3ae
Pablo Greco e6a3ae
diff --git a/target/i386/cpu.c b/target/i386/cpu.c
Pablo Greco e6a3ae
index ef6b958..f2ab558 100644
Pablo Greco e6a3ae
--- a/target/i386/cpu.c
Pablo Greco e6a3ae
+++ b/target/i386/cpu.c
Pablo Greco e6a3ae
@@ -1021,7 +1021,7 @@ static FeatureWordInfo feature_word_info[FEATURE_WORDS] = {
Pablo Greco e6a3ae
             "avx512bitalg", NULL, "avx512-vpopcntdq", NULL,
Pablo Greco e6a3ae
             "la57", NULL, NULL, NULL,
Pablo Greco e6a3ae
             NULL, NULL, "rdpid", NULL,
Pablo Greco e6a3ae
-            NULL, "cldemote", NULL, NULL,
Pablo Greco e6a3ae
+            NULL, "cldemote", NULL, "movdiri",
Pablo Greco e6a3ae
             NULL, NULL, NULL, NULL,
Pablo Greco e6a3ae
         },
Pablo Greco e6a3ae
         .cpuid = {
Pablo Greco e6a3ae
diff --git a/target/i386/cpu.h b/target/i386/cpu.h
Pablo Greco e6a3ae
index 8d8814e..6ba0b1e 100644
Pablo Greco e6a3ae
--- a/target/i386/cpu.h
Pablo Greco e6a3ae
+++ b/target/i386/cpu.h
Pablo Greco e6a3ae
@@ -718,6 +718,7 @@ typedef uint64_t FeatureWordArray[FEATURE_WORDS];
Pablo Greco e6a3ae
 #define CPUID_7_0_ECX_LA57     (1U << 16)
Pablo Greco e6a3ae
 #define CPUID_7_0_ECX_RDPID    (1U << 22)
Pablo Greco e6a3ae
 #define CPUID_7_0_ECX_CLDEMOTE (1U << 25)  /* CLDEMOTE Instruction */
Pablo Greco e6a3ae
+#define CPUID_7_0_ECX_MOVDIRI  (1U << 27)  /* MOVDIRI Instruction */
Pablo Greco e6a3ae
 
Pablo Greco e6a3ae
 #define CPUID_7_0_EDX_AVX512_4VNNIW (1U << 2) /* AVX512 Neural Network Instructions */
Pablo Greco e6a3ae
 #define CPUID_7_0_EDX_AVX512_4FMAPS (1U << 3) /* AVX512 Multiply Accumulation Single Precision */
Pablo Greco e6a3ae
-- 
Pablo Greco e6a3ae
1.8.3.1
Pablo Greco e6a3ae