e5fe00
From 96b390925bffede1dcf2940cc79120b54dc3ed6c Mon Sep 17 00:00:00 2001
e5fe00
Message-Id: <96b390925bffede1dcf2940cc79120b54dc3ed6c@dist-git>
e5fe00
From: Jiri Denemark <jdenemar@redhat.com>
e5fe00
Date: Fri, 5 Apr 2019 15:11:20 +0200
e5fe00
Subject: [PATCH] cpu_map: Define md-clear CPUID bit
e5fe00
e5fe00
CVE-2018-12126, CVE-2018-12127, CVE-2018-12130
e5fe00
e5fe00
The bit is set when microcode provides the mechanism to invoke a flush
e5fe00
of various exploitable CPU buffers by invoking the VERW instruction.
e5fe00
e5fe00
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
e5fe00
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
e5fe00
(cherry picked from a private commit)
e5fe00
e5fe00
Conflicts:
e5fe00
	src/cpu_map/x86_features.xml
e5fe00
            - no CPU map split downstream
e5fe00
e5fe00
	tests/cputestdata/x86_64-cpuid-Xeon-Platinum-8268-guest.xml
e5fe00
	tests/cputestdata/x86_64-cpuid-Xeon-Platinum-8268-host.xml
e5fe00
            - test data missing downstream
e5fe00
e5fe00
	tests/cputestdata/x86_64-cpuid-Xeon-E3-1225-v5-guest.xml
e5fe00
	tests/cputestdata/x86_64-cpuid-Xeon-E3-1225-v5-host.xml
e5fe00
            - intel-pt feature is missing in RHEL-7.6
e5fe00
e5fe00
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
e5fe00
---
e5fe00
 src/cpu/cpu_map.xml                                        | 3 +++
e5fe00
 tests/cputestdata/x86_64-cpuid-Xeon-E3-1225-v5-enabled.xml | 2 +-
e5fe00
 tests/cputestdata/x86_64-cpuid-Xeon-E3-1225-v5-guest.xml   | 1 +
e5fe00
 tests/cputestdata/x86_64-cpuid-Xeon-E3-1225-v5-host.xml    | 1 +
e5fe00
 tests/cputestdata/x86_64-cpuid-Xeon-E3-1225-v5-json.xml    | 1 +
e5fe00
 5 files changed, 7 insertions(+), 1 deletion(-)
e5fe00
e5fe00
diff --git a/src/cpu/cpu_map.xml b/src/cpu/cpu_map.xml
e5fe00
index 1382c29cd1..e8960470ad 100644
e5fe00
--- a/src/cpu/cpu_map.xml
e5fe00
+++ b/src/cpu/cpu_map.xml
e5fe00
@@ -295,6 +295,9 @@
e5fe00
     <feature name='avx512-4fmaps'>
e5fe00
       <cpuid eax_in='0x07' ecx_in='0x00' edx='0x00000008'/>
e5fe00
     </feature>
e5fe00
+    <feature name='md-clear'> 
e5fe00
+      <cpuid eax_in='0x07' ecx_in='0x00' edx='0x00000400'/>
e5fe00
+    </feature>
e5fe00
     <feature name='spec-ctrl'>
e5fe00
       <cpuid eax_in='0x07' ecx_in='0x00' edx='0x04000000'/>
e5fe00
     </feature>
e5fe00
diff --git a/tests/cputestdata/x86_64-cpuid-Xeon-E3-1225-v5-enabled.xml b/tests/cputestdata/x86_64-cpuid-Xeon-E3-1225-v5-enabled.xml
e5fe00
index 0deca9fba6..74763a462b 100644
e5fe00
--- a/tests/cputestdata/x86_64-cpuid-Xeon-E3-1225-v5-enabled.xml
e5fe00
+++ b/tests/cputestdata/x86_64-cpuid-Xeon-E3-1225-v5-enabled.xml
e5fe00
@@ -2,7 +2,7 @@
e5fe00
 <cpudata arch='x86'>
e5fe00
   <cpuid eax_in='0x00000001' ecx_in='0x00' eax='0x00000000' ebx='0x00000000' ecx='0xf7fa3203' edx='0x0f8bfbff'/>
e5fe00
   <cpuid eax_in='0x00000006' ecx_in='0x00' eax='0x00000004' ebx='0x00000000' ecx='0x00000000' edx='0x00000000'/>
e5fe00
-  <cpuid eax_in='0x00000007' ecx_in='0x00' eax='0x00000000' ebx='0x009c4fbb' ecx='0x00000000' edx='0x8c000000'/>
e5fe00
+  <cpuid eax_in='0x00000007' ecx_in='0x00' eax='0x00000000' ebx='0x009c4fbb' ecx='0x00000000' edx='0x8c000400'/>
e5fe00
   <cpuid eax_in='0x0000000d' ecx_in='0x01' eax='0x00000007' ebx='0x00000000' ecx='0x00000000' edx='0x00000000'/>
e5fe00
   <cpuid eax_in='0x80000001' ecx_in='0x00' eax='0x00000000' ebx='0x00000000' ecx='0x00000121' edx='0x2c100800'/>
e5fe00
 </cpudata>
e5fe00
diff --git a/tests/cputestdata/x86_64-cpuid-Xeon-E3-1225-v5-guest.xml b/tests/cputestdata/x86_64-cpuid-Xeon-E3-1225-v5-guest.xml
e5fe00
index 141c01c841..3b3472742e 100644
e5fe00
--- a/tests/cputestdata/x86_64-cpuid-Xeon-E3-1225-v5-guest.xml
e5fe00
+++ b/tests/cputestdata/x86_64-cpuid-Xeon-E3-1225-v5-guest.xml
e5fe00
@@ -19,6 +19,7 @@
e5fe00
   <feature policy='require' name='osxsave'/>
e5fe00
   <feature policy='require' name='tsc_adjust'/>
e5fe00
   <feature policy='require' name='clflushopt'/>
e5fe00
+  <feature policy='require' name='md-clear'/>
e5fe00
   <feature policy='require' name='stibp'/>
e5fe00
   <feature policy='require' name='ssbd'/>
e5fe00
   <feature policy='require' name='xsaves'/>
e5fe00
diff --git a/tests/cputestdata/x86_64-cpuid-Xeon-E3-1225-v5-host.xml b/tests/cputestdata/x86_64-cpuid-Xeon-E3-1225-v5-host.xml
e5fe00
index 53bfc9728d..df4f97417c 100644
e5fe00
--- a/tests/cputestdata/x86_64-cpuid-Xeon-E3-1225-v5-host.xml
e5fe00
+++ b/tests/cputestdata/x86_64-cpuid-Xeon-E3-1225-v5-host.xml
e5fe00
@@ -20,6 +20,7 @@
e5fe00
   <feature name='osxsave'/>
e5fe00
   <feature name='tsc_adjust'/>
e5fe00
   <feature name='clflushopt'/>
e5fe00
+  <feature name='md-clear'/>
e5fe00
   <feature name='stibp'/>
e5fe00
   <feature name='ssbd'/>
e5fe00
   <feature name='xsaves'/>
e5fe00
diff --git a/tests/cputestdata/x86_64-cpuid-Xeon-E3-1225-v5-json.xml b/tests/cputestdata/x86_64-cpuid-Xeon-E3-1225-v5-json.xml
e5fe00
index 1f321db273..a5591278df 100644
e5fe00
--- a/tests/cputestdata/x86_64-cpuid-Xeon-E3-1225-v5-json.xml
e5fe00
+++ b/tests/cputestdata/x86_64-cpuid-Xeon-E3-1225-v5-json.xml
e5fe00
@@ -5,6 +5,7 @@
e5fe00
   <feature policy='require' name='hypervisor'/>
e5fe00
   <feature policy='require' name='tsc_adjust'/>
e5fe00
   <feature policy='require' name='clflushopt'/>
e5fe00
+  <feature policy='require' name='md-clear'/>
e5fe00
   <feature policy='require' name='stibp'/>
e5fe00
   <feature policy='require' name='ssbd'/>
e5fe00
   <feature policy='require' name='pdpe1gb'/>
e5fe00
-- 
e5fe00
2.21.0
e5fe00