Pablo Greco e6a3ae
From 04387fbe913b26a3819d711ea91b99be6faa8616 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:50 +0000
Pablo Greco e6a3ae
Subject: [PATCH 06/11] x86/cpu: Enable MOVDIR64B cpu feature
Pablo Greco e6a3ae
Pablo Greco e6a3ae
RH-Author: plai@redhat.com
Pablo Greco e6a3ae
Message-id: <1574797015-32564-3-git-send-email-plai@redhat.com>
Pablo Greco e6a3ae
Patchwork-id: 92691
Pablo Greco e6a3ae
O-Subject: [RHEL8.2 qemu-kvm PATCH 2/7] x86/cpu: Enable MOVDIR64B 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
MOVDIR64B moves 64-bytes as direct-store with 64-bytes write atomicity.
Pablo Greco e6a3ae
Direct store is implemented by using write combining (WC) for writing
Pablo Greco e6a3ae
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 28] MOVDIR64B
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-3-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 1c65775ffc2dbd276a8bffe592feba0e186a151c)
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
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 f2ab558..307b629 100644
Pablo Greco e6a3ae
--- a/target/i386/cpu.c
Pablo Greco e6a3ae
+++ b/target/i386/cpu.c
Pablo Greco e6a3ae
@@ -1022,7 +1022,7 @@ static FeatureWordInfo feature_word_info[FEATURE_WORDS] = {
Pablo Greco e6a3ae
             "la57", NULL, NULL, NULL,
Pablo Greco e6a3ae
             NULL, NULL, "rdpid", NULL,
Pablo Greco e6a3ae
             NULL, "cldemote", NULL, "movdiri",
Pablo Greco e6a3ae
-            NULL, NULL, NULL, NULL,
Pablo Greco e6a3ae
+            "movdir64b", NULL, NULL, NULL,
Pablo Greco e6a3ae
         },
Pablo Greco e6a3ae
         .cpuid = {
Pablo Greco e6a3ae
             .eax = 7,
Pablo Greco e6a3ae
diff --git a/target/i386/cpu.h b/target/i386/cpu.h
Pablo Greco e6a3ae
index 6ba0b1e..d33fa8d 100644
Pablo Greco e6a3ae
--- a/target/i386/cpu.h
Pablo Greco e6a3ae
+++ b/target/i386/cpu.h
Pablo Greco e6a3ae
@@ -719,6 +719,7 @@ typedef uint64_t FeatureWordArray[FEATURE_WORDS];
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
+#define CPUID_7_0_ECX_MOVDIR64B (1U << 28) /* MOVDIR64B 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