d740ea
From 7fa8107debfd4c659b77a8ba12b96144dfbdc113 Mon Sep 17 00:00:00 2001
d740ea
From: "plai@redhat.com" <plai@redhat.com>
d740ea
Date: Mon, 4 Feb 2019 17:29:44 +0100
d740ea
Subject: [PATCH 1/3] x86/cpu: Enable CLDEMOTE(Demote Cache Line) cpu feature
d740ea
d740ea
RH-Author: plai@redhat.com
d740ea
Message-id: <1549301384-19698-1-git-send-email-plai@redhat.com>
d740ea
Patchwork-id: 84205
d740ea
O-Subject: [RHEL7.7 qemu-kvm PATCH BZ 1537773 RESEND] x86/cpu: Enable CLDEMOTE(Demote Cache Line) cpu feature
d740ea
Bugzilla: 1537773
d740ea
RH-Acked-by: Bandan Das <bsd@redhat.com>
d740ea
RH-Acked-by: Eduardo Habkost <ehabkost@redhat.com>
d740ea
RH-Acked-by: Miroslav Rezanina <mrezanin@redhat.com>
d740ea
d740ea
From: Jingqi Liu <jingqi.liu@intel.com>
d740ea
d740ea
The CLDEMOTE instruction hints to hardware that the cache line that
d740ea
contains the linear address should be moved("demoted") from
d740ea
the cache(s) closest to the processor core to a level more distant
d740ea
from the processor core. This may accelerate subsequent accesses
d740ea
to the line by other cores in the same coherence domain,
d740ea
especially if the line was written by the core that demotes the line.
d740ea
d740ea
Intel Snow Ridge has added new cpu feature, CLDEMOTE.
d740ea
The new cpu feature needs to be exposed to guest VM.
d740ea
d740ea
The bit definition:
d740ea
CPUID.(EAX=7,ECX=0):ECX[bit 25] CLDEMOTE
d740ea
d740ea
The release document ref below link:
d740ea
https://software.intel.com/sites/default/files/managed/c5/15/\
d740ea
architecture-instruction-set-extensions-programming-reference.pdf
d740ea
d740ea
Signed-off-by: Jingqi Liu <jingqi.liu@intel.com>
d740ea
Message-Id: <1525406253-54846-1-git-send-email-jingqi.liu@intel.com>
d740ea
Reviewed-by: Eduardo Habkost <ehabkost@redhat.com>
d740ea
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
d740ea
(cherry picked from commit 0da0fb062841d0dcd8ba47e4a989d2e952cdf0ff)
d740ea
Signed-off-by: Paul Lai <plai@redhat.com>
d740ea
d740ea
Resolved Conflicts:
d740ea
        target/i386/cpu.c [doesn't exist]
d740ea
                changes made to target-i386/cpu.c
d740ea
        target/i386/cpu.h [doesn't exist]
d740ea
                changes made to target-i386/cpu.h
d740ea
d740ea
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
d740ea
---
d740ea
 target-i386/cpu.c | 2 +-
d740ea
 target-i386/cpu.h | 1 +
d740ea
 2 files changed, 2 insertions(+), 1 deletion(-)
d740ea
d740ea
diff --git a/target-i386/cpu.c b/target-i386/cpu.c
d740ea
index a36483e..c9603df 100644
d740ea
--- a/target-i386/cpu.c
d740ea
+++ b/target-i386/cpu.c
d740ea
@@ -162,7 +162,7 @@ static const char *cpuid_7_0_ecx_feature_name[] = {
d740ea
     "avx512bitalg", NULL, "avx512-vpopcntdq", NULL,
d740ea
     NULL, NULL, NULL, NULL,
d740ea
     NULL, NULL, "rdpid", NULL,
d740ea
-    NULL, NULL, NULL, NULL,
d740ea
+    NULL, "cldemote", NULL, NULL,
d740ea
     NULL, NULL, NULL, NULL,
d740ea
 };
d740ea
 
d740ea
diff --git a/target-i386/cpu.h b/target-i386/cpu.h
d740ea
index 73437f1..5d47ab8 100644
d740ea
--- a/target-i386/cpu.h
d740ea
+++ b/target-i386/cpu.h
d740ea
@@ -593,6 +593,7 @@ typedef uint32_t FeatureWordArray[FEATURE_WORDS];
d740ea
 #define CPUID_7_0_ECX_AVX512BITALG (1U << 12)
d740ea
 #define CPUID_7_0_ECX_AVX512_VPOPCNTDQ (1U << 14) /* POPCNT for vectors of DW/QW */
d740ea
 #define CPUID_7_0_ECX_RDPID    (1U << 22)
d740ea
+#define CPUID_7_0_ECX_CLDEMOTE (1U << 25)  /* CLDEMOTE Instruction */
d740ea
 
d740ea
 #define CPUID_7_0_EDX_AVX512_4VNNIW (1U << 2) /* AVX512 Neural Network Instructions */
d740ea
 #define CPUID_7_0_EDX_AVX512_4FMAPS (1U << 3) /* AVX512 Multiply Accumulation Single Precision */
d740ea
-- 
d740ea
1.8.3.1
d740ea