]> git.proxmox.com Git - pve-kernel.git/blame - patches/kernel/0134-x86-decoder-Fix-and-update-the-opcodes-map.patch
KPTI: add follow-up fixes
[pve-kernel.git] / patches / kernel / 0134-x86-decoder-Fix-and-update-the-opcodes-map.patch
CommitLineData
321d628a
FG
1From 6c80693ba5d8d09e509a5613aa6e51b59a28585c Mon Sep 17 00:00:00 2001
2From: Randy Dunlap <rdunlap@infradead.org>
3Date: Mon, 11 Dec 2017 10:38:36 -0800
e4cdf2a5 4Subject: [PATCH 134/241] x86/decoder: Fix and update the opcodes map
321d628a
FG
5MIME-Version: 1.0
6Content-Type: text/plain; charset=UTF-8
7Content-Transfer-Encoding: 8bit
8
9CVE-2017-5754
10
11Update x86-opcode-map.txt based on the October 2017 Intel SDM publication.
12Fix INVPID to INVVPID.
13Add UD0 and UD1 instruction opcodes.
14
15Also sync the objtool and perf tooling copies of this file.
16
17Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
18Acked-by: Masami Hiramatsu <mhiramat@kernel.org>
19Cc: Josh Poimboeuf <jpoimboe@redhat.com>
20Cc: Linus Torvalds <torvalds@linux-foundation.org>
21Cc: Masami Hiramatsu <masami.hiramatsu@gmail.com>
22Cc: Peter Zijlstra <peterz@infradead.org>
23Cc: Thomas Gleixner <tglx@linutronix.de>
24Link: http://lkml.kernel.org/r/aac062d7-c0f6-96e3-5c92-ed299e2bd3da@infradead.org
25Signed-off-by: Ingo Molnar <mingo@kernel.org>
26(cherry picked from commit f5395545058cd388da5d99bda3dedd2a2fe56dbc)
27Signed-off-by: Andy Whitcroft <apw@canonical.com>
28Signed-off-by: Kleber Sacilotto de Souza <kleber.souza@canonical.com>
29(cherry picked from commit f88b977dde8156d6c4514114baa0eed05dd48e41)
30Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
31---
32 arch/x86/lib/x86-opcode-map.txt | 13 +++++++++++--
33 tools/objtool/arch/x86/lib/x86-opcode-map.txt | 15 ++++++++++++---
34 tools/perf/util/intel-pt-decoder/x86-opcode-map.txt | 15 ++++++++++++---
35 3 files changed, 35 insertions(+), 8 deletions(-)
36
37diff --git a/arch/x86/lib/x86-opcode-map.txt b/arch/x86/lib/x86-opcode-map.txt
38index 12e377184ee4..aa2270dc9e87 100644
39--- a/arch/x86/lib/x86-opcode-map.txt
40+++ b/arch/x86/lib/x86-opcode-map.txt
41@@ -607,7 +607,7 @@ fb: psubq Pq,Qq | vpsubq Vx,Hx,Wx (66),(v1)
42 fc: paddb Pq,Qq | vpaddb Vx,Hx,Wx (66),(v1)
43 fd: paddw Pq,Qq | vpaddw Vx,Hx,Wx (66),(v1)
44 fe: paddd Pq,Qq | vpaddd Vx,Hx,Wx (66),(v1)
45-ff:
46+ff: UD0
47 EndTable
48
49 Table: 3-byte opcode 1 (0x0f 0x38)
50@@ -717,7 +717,7 @@ AVXcode: 2
51 7e: vpermt2d/q Vx,Hx,Wx (66),(ev)
52 7f: vpermt2ps/d Vx,Hx,Wx (66),(ev)
53 80: INVEPT Gy,Mdq (66)
54-81: INVPID Gy,Mdq (66)
55+81: INVVPID Gy,Mdq (66)
56 82: INVPCID Gy,Mdq (66)
57 83: vpmultishiftqb Vx,Hx,Wx (66),(ev)
58 88: vexpandps/d Vpd,Wpd (66),(ev)
59@@ -970,6 +970,15 @@ GrpTable: Grp9
60 EndTable
61
62 GrpTable: Grp10
63+# all are UD1
64+0: UD1
65+1: UD1
66+2: UD1
67+3: UD1
68+4: UD1
69+5: UD1
70+6: UD1
71+7: UD1
72 EndTable
73
74 # Grp11A and Grp11B are expressed as Grp11 in Intel SDM
75diff --git a/tools/objtool/arch/x86/lib/x86-opcode-map.txt b/tools/objtool/arch/x86/lib/x86-opcode-map.txt
76index 12e377184ee4..e0b85930dd77 100644
77--- a/tools/objtool/arch/x86/lib/x86-opcode-map.txt
78+++ b/tools/objtool/arch/x86/lib/x86-opcode-map.txt
79@@ -607,7 +607,7 @@ fb: psubq Pq,Qq | vpsubq Vx,Hx,Wx (66),(v1)
80 fc: paddb Pq,Qq | vpaddb Vx,Hx,Wx (66),(v1)
81 fd: paddw Pq,Qq | vpaddw Vx,Hx,Wx (66),(v1)
82 fe: paddd Pq,Qq | vpaddd Vx,Hx,Wx (66),(v1)
83-ff:
84+ff: UD0
85 EndTable
86
87 Table: 3-byte opcode 1 (0x0f 0x38)
88@@ -717,7 +717,7 @@ AVXcode: 2
89 7e: vpermt2d/q Vx,Hx,Wx (66),(ev)
90 7f: vpermt2ps/d Vx,Hx,Wx (66),(ev)
91 80: INVEPT Gy,Mdq (66)
92-81: INVPID Gy,Mdq (66)
93+81: INVVPID Gy,Mdq (66)
94 82: INVPCID Gy,Mdq (66)
95 83: vpmultishiftqb Vx,Hx,Wx (66),(ev)
96 88: vexpandps/d Vpd,Wpd (66),(ev)
97@@ -896,7 +896,7 @@ EndTable
98
99 GrpTable: Grp3_1
100 0: TEST Eb,Ib
101-1:
102+1: TEST Eb,Ib
103 2: NOT Eb
104 3: NEG Eb
105 4: MUL AL,Eb
106@@ -970,6 +970,15 @@ GrpTable: Grp9
107 EndTable
108
109 GrpTable: Grp10
110+# all are UD1
111+0: UD1
112+1: UD1
113+2: UD1
114+3: UD1
115+4: UD1
116+5: UD1
117+6: UD1
118+7: UD1
119 EndTable
120
121 # Grp11A and Grp11B are expressed as Grp11 in Intel SDM
122diff --git a/tools/perf/util/intel-pt-decoder/x86-opcode-map.txt b/tools/perf/util/intel-pt-decoder/x86-opcode-map.txt
123index 12e377184ee4..e0b85930dd77 100644
124--- a/tools/perf/util/intel-pt-decoder/x86-opcode-map.txt
125+++ b/tools/perf/util/intel-pt-decoder/x86-opcode-map.txt
126@@ -607,7 +607,7 @@ fb: psubq Pq,Qq | vpsubq Vx,Hx,Wx (66),(v1)
127 fc: paddb Pq,Qq | vpaddb Vx,Hx,Wx (66),(v1)
128 fd: paddw Pq,Qq | vpaddw Vx,Hx,Wx (66),(v1)
129 fe: paddd Pq,Qq | vpaddd Vx,Hx,Wx (66),(v1)
130-ff:
131+ff: UD0
132 EndTable
133
134 Table: 3-byte opcode 1 (0x0f 0x38)
135@@ -717,7 +717,7 @@ AVXcode: 2
136 7e: vpermt2d/q Vx,Hx,Wx (66),(ev)
137 7f: vpermt2ps/d Vx,Hx,Wx (66),(ev)
138 80: INVEPT Gy,Mdq (66)
139-81: INVPID Gy,Mdq (66)
140+81: INVVPID Gy,Mdq (66)
141 82: INVPCID Gy,Mdq (66)
142 83: vpmultishiftqb Vx,Hx,Wx (66),(ev)
143 88: vexpandps/d Vpd,Wpd (66),(ev)
144@@ -896,7 +896,7 @@ EndTable
145
146 GrpTable: Grp3_1
147 0: TEST Eb,Ib
148-1:
149+1: TEST Eb,Ib
150 2: NOT Eb
151 3: NEG Eb
152 4: MUL AL,Eb
153@@ -970,6 +970,15 @@ GrpTable: Grp9
154 EndTable
155
156 GrpTable: Grp10
157+# all are UD1
158+0: UD1
159+1: UD1
160+2: UD1
161+3: UD1
162+4: UD1
163+5: UD1
164+6: UD1
165+7: UD1
166 EndTable
167
168 # Grp11A and Grp11B are expressed as Grp11 in Intel SDM
169--
1702.14.2
171