2018-01-06 17:13:39 +03:00
|
|
|
From 6c80693ba5d8d09e509a5613aa6e51b59a28585c Mon Sep 17 00:00:00 2001
|
|
|
|
From: Randy Dunlap <rdunlap@infradead.org>
|
|
|
|
Date: Mon, 11 Dec 2017 10:38:36 -0800
|
2018-01-08 12:25:09 +03:00
|
|
|
Subject: [PATCH 134/241] x86/decoder: Fix and update the opcodes map
|
2018-01-06 17:13:39 +03:00
|
|
|
MIME-Version: 1.0
|
|
|
|
Content-Type: text/plain; charset=UTF-8
|
|
|
|
Content-Transfer-Encoding: 8bit
|
|
|
|
|
|
|
|
CVE-2017-5754
|
|
|
|
|
|
|
|
Update x86-opcode-map.txt based on the October 2017 Intel SDM publication.
|
|
|
|
Fix INVPID to INVVPID.
|
|
|
|
Add UD0 and UD1 instruction opcodes.
|
|
|
|
|
|
|
|
Also sync the objtool and perf tooling copies of this file.
|
|
|
|
|
|
|
|
Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
|
|
|
|
Acked-by: Masami Hiramatsu <mhiramat@kernel.org>
|
|
|
|
Cc: Josh Poimboeuf <jpoimboe@redhat.com>
|
|
|
|
Cc: Linus Torvalds <torvalds@linux-foundation.org>
|
|
|
|
Cc: Masami Hiramatsu <masami.hiramatsu@gmail.com>
|
|
|
|
Cc: Peter Zijlstra <peterz@infradead.org>
|
|
|
|
Cc: Thomas Gleixner <tglx@linutronix.de>
|
|
|
|
Link: http://lkml.kernel.org/r/aac062d7-c0f6-96e3-5c92-ed299e2bd3da@infradead.org
|
|
|
|
Signed-off-by: Ingo Molnar <mingo@kernel.org>
|
|
|
|
(cherry picked from commit f5395545058cd388da5d99bda3dedd2a2fe56dbc)
|
|
|
|
Signed-off-by: Andy Whitcroft <apw@canonical.com>
|
|
|
|
Signed-off-by: Kleber Sacilotto de Souza <kleber.souza@canonical.com>
|
|
|
|
(cherry picked from commit f88b977dde8156d6c4514114baa0eed05dd48e41)
|
|
|
|
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
|
|
|
|
---
|
|
|
|
arch/x86/lib/x86-opcode-map.txt | 13 +++++++++++--
|
|
|
|
tools/objtool/arch/x86/lib/x86-opcode-map.txt | 15 ++++++++++++---
|
|
|
|
tools/perf/util/intel-pt-decoder/x86-opcode-map.txt | 15 ++++++++++++---
|
|
|
|
3 files changed, 35 insertions(+), 8 deletions(-)
|
|
|
|
|
|
|
|
diff --git a/arch/x86/lib/x86-opcode-map.txt b/arch/x86/lib/x86-opcode-map.txt
|
|
|
|
index 12e377184ee4..aa2270dc9e87 100644
|
|
|
|
--- a/arch/x86/lib/x86-opcode-map.txt
|
|
|
|
+++ b/arch/x86/lib/x86-opcode-map.txt
|
|
|
|
@@ -607,7 +607,7 @@ fb: psubq Pq,Qq | vpsubq Vx,Hx,Wx (66),(v1)
|
|
|
|
fc: paddb Pq,Qq | vpaddb Vx,Hx,Wx (66),(v1)
|
|
|
|
fd: paddw Pq,Qq | vpaddw Vx,Hx,Wx (66),(v1)
|
|
|
|
fe: paddd Pq,Qq | vpaddd Vx,Hx,Wx (66),(v1)
|
|
|
|
-ff:
|
|
|
|
+ff: UD0
|
|
|
|
EndTable
|
|
|
|
|
|
|
|
Table: 3-byte opcode 1 (0x0f 0x38)
|
|
|
|
@@ -717,7 +717,7 @@ AVXcode: 2
|
|
|
|
7e: vpermt2d/q Vx,Hx,Wx (66),(ev)
|
|
|
|
7f: vpermt2ps/d Vx,Hx,Wx (66),(ev)
|
|
|
|
80: INVEPT Gy,Mdq (66)
|
|
|
|
-81: INVPID Gy,Mdq (66)
|
|
|
|
+81: INVVPID Gy,Mdq (66)
|
|
|
|
82: INVPCID Gy,Mdq (66)
|
|
|
|
83: vpmultishiftqb Vx,Hx,Wx (66),(ev)
|
|
|
|
88: vexpandps/d Vpd,Wpd (66),(ev)
|
|
|
|
@@ -970,6 +970,15 @@ GrpTable: Grp9
|
|
|
|
EndTable
|
|
|
|
|
|
|
|
GrpTable: Grp10
|
|
|
|
+# all are UD1
|
|
|
|
+0: UD1
|
|
|
|
+1: UD1
|
|
|
|
+2: UD1
|
|
|
|
+3: UD1
|
|
|
|
+4: UD1
|
|
|
|
+5: UD1
|
|
|
|
+6: UD1
|
|
|
|
+7: UD1
|
|
|
|
EndTable
|
|
|
|
|
|
|
|
# Grp11A and Grp11B are expressed as Grp11 in Intel SDM
|
|
|
|
diff --git a/tools/objtool/arch/x86/lib/x86-opcode-map.txt b/tools/objtool/arch/x86/lib/x86-opcode-map.txt
|
|
|
|
index 12e377184ee4..e0b85930dd77 100644
|
|
|
|
--- a/tools/objtool/arch/x86/lib/x86-opcode-map.txt
|
|
|
|
+++ b/tools/objtool/arch/x86/lib/x86-opcode-map.txt
|
|
|
|
@@ -607,7 +607,7 @@ fb: psubq Pq,Qq | vpsubq Vx,Hx,Wx (66),(v1)
|
|
|
|
fc: paddb Pq,Qq | vpaddb Vx,Hx,Wx (66),(v1)
|
|
|
|
fd: paddw Pq,Qq | vpaddw Vx,Hx,Wx (66),(v1)
|
|
|
|
fe: paddd Pq,Qq | vpaddd Vx,Hx,Wx (66),(v1)
|
|
|
|
-ff:
|
|
|
|
+ff: UD0
|
|
|
|
EndTable
|
|
|
|
|
|
|
|
Table: 3-byte opcode 1 (0x0f 0x38)
|
|
|
|
@@ -717,7 +717,7 @@ AVXcode: 2
|
|
|
|
7e: vpermt2d/q Vx,Hx,Wx (66),(ev)
|
|
|
|
7f: vpermt2ps/d Vx,Hx,Wx (66),(ev)
|
|
|
|
80: INVEPT Gy,Mdq (66)
|
|
|
|
-81: INVPID Gy,Mdq (66)
|
|
|
|
+81: INVVPID Gy,Mdq (66)
|
|
|
|
82: INVPCID Gy,Mdq (66)
|
|
|
|
83: vpmultishiftqb Vx,Hx,Wx (66),(ev)
|
|
|
|
88: vexpandps/d Vpd,Wpd (66),(ev)
|
|
|
|
@@ -896,7 +896,7 @@ EndTable
|
|
|
|
|
|
|
|
GrpTable: Grp3_1
|
|
|
|
0: TEST Eb,Ib
|
|
|
|
-1:
|
|
|
|
+1: TEST Eb,Ib
|
|
|
|
2: NOT Eb
|
|
|
|
3: NEG Eb
|
|
|
|
4: MUL AL,Eb
|
|
|
|
@@ -970,6 +970,15 @@ GrpTable: Grp9
|
|
|
|
EndTable
|
|
|
|
|
|
|
|
GrpTable: Grp10
|
|
|
|
+# all are UD1
|
|
|
|
+0: UD1
|
|
|
|
+1: UD1
|
|
|
|
+2: UD1
|
|
|
|
+3: UD1
|
|
|
|
+4: UD1
|
|
|
|
+5: UD1
|
|
|
|
+6: UD1
|
|
|
|
+7: UD1
|
|
|
|
EndTable
|
|
|
|
|
|
|
|
# Grp11A and Grp11B are expressed as Grp11 in Intel SDM
|
|
|
|
diff --git a/tools/perf/util/intel-pt-decoder/x86-opcode-map.txt b/tools/perf/util/intel-pt-decoder/x86-opcode-map.txt
|
|
|
|
index 12e377184ee4..e0b85930dd77 100644
|
|
|
|
--- a/tools/perf/util/intel-pt-decoder/x86-opcode-map.txt
|
|
|
|
+++ b/tools/perf/util/intel-pt-decoder/x86-opcode-map.txt
|
|
|
|
@@ -607,7 +607,7 @@ fb: psubq Pq,Qq | vpsubq Vx,Hx,Wx (66),(v1)
|
|
|
|
fc: paddb Pq,Qq | vpaddb Vx,Hx,Wx (66),(v1)
|
|
|
|
fd: paddw Pq,Qq | vpaddw Vx,Hx,Wx (66),(v1)
|
|
|
|
fe: paddd Pq,Qq | vpaddd Vx,Hx,Wx (66),(v1)
|
|
|
|
-ff:
|
|
|
|
+ff: UD0
|
|
|
|
EndTable
|
|
|
|
|
|
|
|
Table: 3-byte opcode 1 (0x0f 0x38)
|
|
|
|
@@ -717,7 +717,7 @@ AVXcode: 2
|
|
|
|
7e: vpermt2d/q Vx,Hx,Wx (66),(ev)
|
|
|
|
7f: vpermt2ps/d Vx,Hx,Wx (66),(ev)
|
|
|
|
80: INVEPT Gy,Mdq (66)
|
|
|
|
-81: INVPID Gy,Mdq (66)
|
|
|
|
+81: INVVPID Gy,Mdq (66)
|
|
|
|
82: INVPCID Gy,Mdq (66)
|
|
|
|
83: vpmultishiftqb Vx,Hx,Wx (66),(ev)
|
|
|
|
88: vexpandps/d Vpd,Wpd (66),(ev)
|
|
|
|
@@ -896,7 +896,7 @@ EndTable
|
|
|
|
|
|
|
|
GrpTable: Grp3_1
|
|
|
|
0: TEST Eb,Ib
|
|
|
|
-1:
|
|
|
|
+1: TEST Eb,Ib
|
|
|
|
2: NOT Eb
|
|
|
|
3: NEG Eb
|
|
|
|
4: MUL AL,Eb
|
|
|
|
@@ -970,6 +970,15 @@ GrpTable: Grp9
|
|
|
|
EndTable
|
|
|
|
|
|
|
|
GrpTable: Grp10
|
|
|
|
+# all are UD1
|
|
|
|
+0: UD1
|
|
|
|
+1: UD1
|
|
|
|
+2: UD1
|
|
|
|
+3: UD1
|
|
|
|
+4: UD1
|
|
|
|
+5: UD1
|
|
|
|
+6: UD1
|
|
|
|
+7: UD1
|
|
|
|
EndTable
|
|
|
|
|
|
|
|
# Grp11A and Grp11B are expressed as Grp11 in Intel SDM
|
|
|
|
--
|
|
|
|
2.14.2
|
|
|
|
|