Skip to content

Commit 7cc7e93

Browse files
committed
Merge branch 'x86-misc-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull misc x86 updates from Ingo Molnar: - extend the decoder maps with CET instructions - fix !vDSO corner cases * 'x86-misc-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: perf/tests: Add CET instructions to the new instructions test x86/insn: Add Control-flow Enforcement (CET) instructions to the opcode map selftests/x86/ptrace_syscall_32: Fix no-vDSO segfault selftests/x86/vdso: Fix no-vDSO segfaults
2 parents d0be2d5 + 1032f32 commit 7cc7e93

File tree

8 files changed

+592
-14
lines changed

8 files changed

+592
-14
lines changed

arch/x86/lib/x86-opcode-map.txt

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -366,7 +366,7 @@ AVXcode: 1
366366
1b: BNDCN Gv,Ev (F2) | BNDMOV Ev,Gv (66) | BNDMK Gv,Ev (F3) | BNDSTX Ev,Gv
367367
1c: Grp20 (1A),(1C)
368368
1d:
369-
1e:
369+
1e: Grp21 (1A)
370370
1f: NOP Ev
371371
# 0x0f 0x20-0x2f
372372
20: MOV Rd,Cd
@@ -803,8 +803,8 @@ f0: MOVBE Gy,My | MOVBE Gw,Mw (66) | CRC32 Gd,Eb (F2) | CRC32 Gd,Eb (66&F2)
803803
f1: MOVBE My,Gy | MOVBE Mw,Gw (66) | CRC32 Gd,Ey (F2) | CRC32 Gd,Ew (66&F2)
804804
f2: ANDN Gy,By,Ey (v)
805805
f3: Grp17 (1A)
806-
f5: BZHI Gy,Ey,By (v) | PEXT Gy,By,Ey (F3),(v) | PDEP Gy,By,Ey (F2),(v)
807-
f6: ADCX Gy,Ey (66) | ADOX Gy,Ey (F3) | MULX By,Gy,rDX,Ey (F2),(v)
806+
f5: BZHI Gy,Ey,By (v) | PEXT Gy,By,Ey (F3),(v) | PDEP Gy,By,Ey (F2),(v) | WRUSSD/Q My,Gy (66)
807+
f6: ADCX Gy,Ey (66) | ADOX Gy,Ey (F3) | MULX By,Gy,rDX,Ey (F2),(v) | WRSSD/Q My,Gy
808808
f7: BEXTR Gy,Ey,By (v) | SHLX Gy,Ey,By (66),(v) | SARX Gy,Ey,By (F3),(v) | SHRX Gy,Ey,By (F2),(v)
809809
f8: MOVDIR64B Gv,Mdqq (66) | ENQCMD Gv,Mdqq (F2) | ENQCMDS Gv,Mdqq (F3)
810810
f9: MOVDIRI My,Gy
@@ -970,7 +970,7 @@ GrpTable: Grp7
970970
2: LGDT Ms | XGETBV (000),(11B) | XSETBV (001),(11B) | VMFUNC (100),(11B) | XEND (101)(11B) | XTEST (110)(11B) | ENCLU (111),(11B)
971971
3: LIDT Ms
972972
4: SMSW Mw/Rv
973-
5: rdpkru (110),(11B) | wrpkru (111),(11B)
973+
5: rdpkru (110),(11B) | wrpkru (111),(11B) | SAVEPREVSSP (F3),(010),(11B) | RSTORSSP Mq (F3) | SETSSBSY (F3),(000),(11B)
974974
6: LMSW Ew
975975
7: INVLPG Mb | SWAPGS (o64),(000),(11B) | RDTSCP (001),(11B)
976976
EndTable
@@ -1041,8 +1041,8 @@ GrpTable: Grp15
10411041
2: vldmxcsr Md (v1) | WRFSBASE Ry (F3),(11B)
10421042
3: vstmxcsr Md (v1) | WRGSBASE Ry (F3),(11B)
10431043
4: XSAVE | ptwrite Ey (F3),(11B)
1044-
5: XRSTOR | lfence (11B)
1045-
6: XSAVEOPT | clwb (66) | mfence (11B) | TPAUSE Rd (66),(11B) | UMONITOR Rv (F3),(11B) | UMWAIT Rd (F2),(11B)
1044+
5: XRSTOR | lfence (11B) | INCSSPD/Q Ry (F3),(11B)
1045+
6: XSAVEOPT | clwb (66) | mfence (11B) | TPAUSE Rd (66),(11B) | UMONITOR Rv (F3),(11B) | UMWAIT Rd (F2),(11B) | CLRSSBSY Mq (F3)
10461046
7: clflush | clflushopt (66) | sfence (11B)
10471047
EndTable
10481048

@@ -1077,6 +1077,11 @@ GrpTable: Grp20
10771077
0: cldemote Mb
10781078
EndTable
10791079

1080+
GrpTable: Grp21
1081+
1: RDSSPD/Q Ry (F3),(11B)
1082+
7: ENDBR64 (F3),(010),(11B) | ENDBR32 (F3),(011),(11B)
1083+
EndTable
1084+
10801085
# AMD's Prefetch Group
10811086
GrpTable: GrpP
10821087
0: PREFETCH

tools/arch/x86/lib/x86-opcode-map.txt

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -366,7 +366,7 @@ AVXcode: 1
366366
1b: BNDCN Gv,Ev (F2) | BNDMOV Ev,Gv (66) | BNDMK Gv,Ev (F3) | BNDSTX Ev,Gv
367367
1c: Grp20 (1A),(1C)
368368
1d:
369-
1e:
369+
1e: Grp21 (1A)
370370
1f: NOP Ev
371371
# 0x0f 0x20-0x2f
372372
20: MOV Rd,Cd
@@ -803,8 +803,8 @@ f0: MOVBE Gy,My | MOVBE Gw,Mw (66) | CRC32 Gd,Eb (F2) | CRC32 Gd,Eb (66&F2)
803803
f1: MOVBE My,Gy | MOVBE Mw,Gw (66) | CRC32 Gd,Ey (F2) | CRC32 Gd,Ew (66&F2)
804804
f2: ANDN Gy,By,Ey (v)
805805
f3: Grp17 (1A)
806-
f5: BZHI Gy,Ey,By (v) | PEXT Gy,By,Ey (F3),(v) | PDEP Gy,By,Ey (F2),(v)
807-
f6: ADCX Gy,Ey (66) | ADOX Gy,Ey (F3) | MULX By,Gy,rDX,Ey (F2),(v)
806+
f5: BZHI Gy,Ey,By (v) | PEXT Gy,By,Ey (F3),(v) | PDEP Gy,By,Ey (F2),(v) | WRUSSD/Q My,Gy (66)
807+
f6: ADCX Gy,Ey (66) | ADOX Gy,Ey (F3) | MULX By,Gy,rDX,Ey (F2),(v) | WRSSD/Q My,Gy
808808
f7: BEXTR Gy,Ey,By (v) | SHLX Gy,Ey,By (66),(v) | SARX Gy,Ey,By (F3),(v) | SHRX Gy,Ey,By (F2),(v)
809809
f8: MOVDIR64B Gv,Mdqq (66) | ENQCMD Gv,Mdqq (F2) | ENQCMDS Gv,Mdqq (F3)
810810
f9: MOVDIRI My,Gy
@@ -970,7 +970,7 @@ GrpTable: Grp7
970970
2: LGDT Ms | XGETBV (000),(11B) | XSETBV (001),(11B) | VMFUNC (100),(11B) | XEND (101)(11B) | XTEST (110)(11B) | ENCLU (111),(11B)
971971
3: LIDT Ms
972972
4: SMSW Mw/Rv
973-
5: rdpkru (110),(11B) | wrpkru (111),(11B)
973+
5: rdpkru (110),(11B) | wrpkru (111),(11B) | SAVEPREVSSP (F3),(010),(11B) | RSTORSSP Mq (F3) | SETSSBSY (F3),(000),(11B)
974974
6: LMSW Ew
975975
7: INVLPG Mb | SWAPGS (o64),(000),(11B) | RDTSCP (001),(11B)
976976
EndTable
@@ -1041,8 +1041,8 @@ GrpTable: Grp15
10411041
2: vldmxcsr Md (v1) | WRFSBASE Ry (F3),(11B)
10421042
3: vstmxcsr Md (v1) | WRGSBASE Ry (F3),(11B)
10431043
4: XSAVE | ptwrite Ey (F3),(11B)
1044-
5: XRSTOR | lfence (11B)
1045-
6: XSAVEOPT | clwb (66) | mfence (11B) | TPAUSE Rd (66),(11B) | UMONITOR Rv (F3),(11B) | UMWAIT Rd (F2),(11B)
1044+
5: XRSTOR | lfence (11B) | INCSSPD/Q Ry (F3),(11B)
1045+
6: XSAVEOPT | clwb (66) | mfence (11B) | TPAUSE Rd (66),(11B) | UMONITOR Rv (F3),(11B) | UMWAIT Rd (F2),(11B) | CLRSSBSY Mq (F3)
10461046
7: clflush | clflushopt (66) | sfence (11B)
10471047
EndTable
10481048

@@ -1077,6 +1077,11 @@ GrpTable: Grp20
10771077
0: cldemote Mb
10781078
EndTable
10791079

1080+
GrpTable: Grp21
1081+
1: RDSSPD/Q Ry (F3),(11B)
1082+
7: ENDBR64 (F3),(010),(11B) | ENDBR32 (F3),(011),(11B)
1083+
EndTable
1084+
10801085
# AMD's Prefetch Group
10811086
GrpTable: GrpP
10821087
0: PREFETCH

tools/perf/arch/x86/tests/insn-x86-dat-32.c

Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2085,6 +2085,118 @@
20852085
"67 f3 0f 38 f8 1c \tenqcmds (%si),%bx",},
20862086
{{0x67, 0xf3, 0x0f, 0x38, 0xf8, 0x8c, 0x34, 0x12, }, 8, 0, "", "",
20872087
"67 f3 0f 38 f8 8c 34 12 \tenqcmds 0x1234(%si),%cx",},
2088+
{{0xf3, 0x0f, 0xae, 0xe8, }, 4, 0, "", "",
2089+
"f3 0f ae e8 \tincsspd %eax",},
2090+
{{0x0f, 0xae, 0x28, }, 3, 0, "", "",
2091+
"0f ae 28 \txrstor (%eax)",},
2092+
{{0x0f, 0xae, 0x2d, 0x78, 0x56, 0x34, 0x12, }, 7, 0, "", "",
2093+
"0f ae 2d 78 56 34 12 \txrstor 0x12345678",},
2094+
{{0x0f, 0xae, 0xac, 0xc8, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "",
2095+
"0f ae ac c8 78 56 34 12 \txrstor 0x12345678(%eax,%ecx,8)",},
2096+
{{0x0f, 0xae, 0xe8, }, 3, 0, "", "",
2097+
"0f ae e8 \tlfence ",},
2098+
{{0xf3, 0x0f, 0x1e, 0xc8, }, 4, 0, "", "",
2099+
"f3 0f 1e c8 \trdsspd %eax",},
2100+
{{0xf3, 0x0f, 0x01, 0xea, }, 4, 0, "", "",
2101+
"f3 0f 01 ea \tsaveprevssp ",},
2102+
{{0xf3, 0x0f, 0x01, 0x28, }, 4, 0, "", "",
2103+
"f3 0f 01 28 \trstorssp (%eax)",},
2104+
{{0xf3, 0x0f, 0x01, 0x2d, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "",
2105+
"f3 0f 01 2d 78 56 34 12 \trstorssp 0x12345678",},
2106+
{{0xf3, 0x0f, 0x01, 0xac, 0xc8, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "",
2107+
"f3 0f 01 ac c8 78 56 34 12 \trstorssp 0x12345678(%eax,%ecx,8)",},
2108+
{{0x0f, 0x38, 0xf6, 0x08, }, 4, 0, "", "",
2109+
"0f 38 f6 08 \twrssd %ecx,(%eax)",},
2110+
{{0x0f, 0x38, 0xf6, 0x15, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "",
2111+
"0f 38 f6 15 78 56 34 12 \twrssd %edx,0x12345678",},
2112+
{{0x0f, 0x38, 0xf6, 0x94, 0xc8, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "",
2113+
"0f 38 f6 94 c8 78 56 34 12 \twrssd %edx,0x12345678(%eax,%ecx,8)",},
2114+
{{0x66, 0x0f, 0x38, 0xf5, 0x08, }, 5, 0, "", "",
2115+
"66 0f 38 f5 08 \twrussd %ecx,(%eax)",},
2116+
{{0x66, 0x0f, 0x38, 0xf5, 0x15, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "",
2117+
"66 0f 38 f5 15 78 56 34 12 \twrussd %edx,0x12345678",},
2118+
{{0x66, 0x0f, 0x38, 0xf5, 0x94, 0xc8, 0x78, 0x56, 0x34, 0x12, }, 10, 0, "", "",
2119+
"66 0f 38 f5 94 c8 78 56 34 12 \twrussd %edx,0x12345678(%eax,%ecx,8)",},
2120+
{{0xf3, 0x0f, 0x01, 0xe8, }, 4, 0, "", "",
2121+
"f3 0f 01 e8 \tsetssbsy ",},
2122+
{{0x0f, 0x01, 0xee, }, 3, 0, "", "",
2123+
"0f 01 ee \trdpkru ",},
2124+
{{0x0f, 0x01, 0xef, }, 3, 0, "", "",
2125+
"0f 01 ef \twrpkru ",},
2126+
{{0xf3, 0x0f, 0xae, 0x30, }, 4, 0, "", "",
2127+
"f3 0f ae 30 \tclrssbsy (%eax)",},
2128+
{{0xf3, 0x0f, 0xae, 0x35, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "",
2129+
"f3 0f ae 35 78 56 34 12 \tclrssbsy 0x12345678",},
2130+
{{0xf3, 0x0f, 0xae, 0xb4, 0xc8, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "",
2131+
"f3 0f ae b4 c8 78 56 34 12 \tclrssbsy 0x12345678(%eax,%ecx,8)",},
2132+
{{0xf3, 0x0f, 0x1e, 0xfb, }, 4, 0, "", "",
2133+
"f3 0f 1e fb \tendbr32 ",},
2134+
{{0xf3, 0x0f, 0x1e, 0xfa, }, 4, 0, "", "",
2135+
"f3 0f 1e fa \tendbr64 ",},
2136+
{{0xff, 0xd0, }, 2, 0, "call", "indirect",
2137+
"ff d0 \tcall *%eax",},
2138+
{{0xff, 0x10, }, 2, 0, "call", "indirect",
2139+
"ff 10 \tcall *(%eax)",},
2140+
{{0xff, 0x15, 0x78, 0x56, 0x34, 0x12, }, 6, 0, "call", "indirect",
2141+
"ff 15 78 56 34 12 \tcall *0x12345678",},
2142+
{{0xff, 0x94, 0xc8, 0x78, 0x56, 0x34, 0x12, }, 7, 0, "call", "indirect",
2143+
"ff 94 c8 78 56 34 12 \tcall *0x12345678(%eax,%ecx,8)",},
2144+
{{0xf2, 0xff, 0xd0, }, 3, 0, "call", "indirect",
2145+
"f2 ff d0 \tbnd call *%eax",},
2146+
{{0xf2, 0xff, 0x10, }, 3, 0, "call", "indirect",
2147+
"f2 ff 10 \tbnd call *(%eax)",},
2148+
{{0xf2, 0xff, 0x15, 0x78, 0x56, 0x34, 0x12, }, 7, 0, "call", "indirect",
2149+
"f2 ff 15 78 56 34 12 \tbnd call *0x12345678",},
2150+
{{0xf2, 0xff, 0x94, 0xc8, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "call", "indirect",
2151+
"f2 ff 94 c8 78 56 34 12 \tbnd call *0x12345678(%eax,%ecx,8)",},
2152+
{{0x3e, 0xff, 0xd0, }, 3, 0, "call", "indirect",
2153+
"3e ff d0 \tnotrack call *%eax",},
2154+
{{0x3e, 0xff, 0x10, }, 3, 0, "call", "indirect",
2155+
"3e ff 10 \tnotrack call *(%eax)",},
2156+
{{0x3e, 0xff, 0x15, 0x78, 0x56, 0x34, 0x12, }, 7, 0, "call", "indirect",
2157+
"3e ff 15 78 56 34 12 \tnotrack call *0x12345678",},
2158+
{{0x3e, 0xff, 0x94, 0xc8, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "call", "indirect",
2159+
"3e ff 94 c8 78 56 34 12 \tnotrack call *0x12345678(%eax,%ecx,8)",},
2160+
{{0x3e, 0xf2, 0xff, 0xd0, }, 4, 0, "call", "indirect",
2161+
"3e f2 ff d0 \tnotrack bnd call *%eax",},
2162+
{{0x3e, 0xf2, 0xff, 0x10, }, 4, 0, "call", "indirect",
2163+
"3e f2 ff 10 \tnotrack bnd call *(%eax)",},
2164+
{{0x3e, 0xf2, 0xff, 0x15, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "call", "indirect",
2165+
"3e f2 ff 15 78 56 34 12 \tnotrack bnd call *0x12345678",},
2166+
{{0x3e, 0xf2, 0xff, 0x94, 0xc8, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "call", "indirect",
2167+
"3e f2 ff 94 c8 78 56 34 12 \tnotrack bnd call *0x12345678(%eax,%ecx,8)",},
2168+
{{0xff, 0xe0, }, 2, 0, "jmp", "indirect",
2169+
"ff e0 \tjmp *%eax",},
2170+
{{0xff, 0x20, }, 2, 0, "jmp", "indirect",
2171+
"ff 20 \tjmp *(%eax)",},
2172+
{{0xff, 0x25, 0x78, 0x56, 0x34, 0x12, }, 6, 0, "jmp", "indirect",
2173+
"ff 25 78 56 34 12 \tjmp *0x12345678",},
2174+
{{0xff, 0xa4, 0xc8, 0x78, 0x56, 0x34, 0x12, }, 7, 0, "jmp", "indirect",
2175+
"ff a4 c8 78 56 34 12 \tjmp *0x12345678(%eax,%ecx,8)",},
2176+
{{0xf2, 0xff, 0xe0, }, 3, 0, "jmp", "indirect",
2177+
"f2 ff e0 \tbnd jmp *%eax",},
2178+
{{0xf2, 0xff, 0x20, }, 3, 0, "jmp", "indirect",
2179+
"f2 ff 20 \tbnd jmp *(%eax)",},
2180+
{{0xf2, 0xff, 0x25, 0x78, 0x56, 0x34, 0x12, }, 7, 0, "jmp", "indirect",
2181+
"f2 ff 25 78 56 34 12 \tbnd jmp *0x12345678",},
2182+
{{0xf2, 0xff, 0xa4, 0xc8, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "jmp", "indirect",
2183+
"f2 ff a4 c8 78 56 34 12 \tbnd jmp *0x12345678(%eax,%ecx,8)",},
2184+
{{0x3e, 0xff, 0xe0, }, 3, 0, "jmp", "indirect",
2185+
"3e ff e0 \tnotrack jmp *%eax",},
2186+
{{0x3e, 0xff, 0x20, }, 3, 0, "jmp", "indirect",
2187+
"3e ff 20 \tnotrack jmp *(%eax)",},
2188+
{{0x3e, 0xff, 0x25, 0x78, 0x56, 0x34, 0x12, }, 7, 0, "jmp", "indirect",
2189+
"3e ff 25 78 56 34 12 \tnotrack jmp *0x12345678",},
2190+
{{0x3e, 0xff, 0xa4, 0xc8, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "jmp", "indirect",
2191+
"3e ff a4 c8 78 56 34 12 \tnotrack jmp *0x12345678(%eax,%ecx,8)",},
2192+
{{0x3e, 0xf2, 0xff, 0xe0, }, 4, 0, "jmp", "indirect",
2193+
"3e f2 ff e0 \tnotrack bnd jmp *%eax",},
2194+
{{0x3e, 0xf2, 0xff, 0x20, }, 4, 0, "jmp", "indirect",
2195+
"3e f2 ff 20 \tnotrack bnd jmp *(%eax)",},
2196+
{{0x3e, 0xf2, 0xff, 0x25, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "jmp", "indirect",
2197+
"3e f2 ff 25 78 56 34 12 \tnotrack bnd jmp *0x12345678",},
2198+
{{0x3e, 0xf2, 0xff, 0xa4, 0xc8, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "jmp", "indirect",
2199+
"3e f2 ff a4 c8 78 56 34 12 \tnotrack bnd jmp *0x12345678(%eax,%ecx,8)",},
20882200
{{0x0f, 0x01, 0xcf, }, 3, 0, "", "",
20892201
"0f 01 cf \tencls ",},
20902202
{{0x0f, 0x01, 0xd7, }, 3, 0, "", "",

0 commit comments

Comments
 (0)