All of lore.kernel.org
 help / color / mirror / Atom feed
From: Masami Hiramatsu <mhiramat@kernel.org>
To: Adrian Hunter <adrian.hunter@intel.com>
Cc: x86@kernel.org, Arnaldo Carvalho de Melo <acme@kernel.org>,
	Jiri Olsa <jolsa@redhat.com>,
	linux-kernel@vger.kernel.org,
	Thomas Gleixner <tglx@linutronix.de>,
	Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>,
	H Peter Anvin <hpa@zytor.com>, Andi Kleen <ak@linux.intel.com>,
	Peter Zijlstra <peterz@infradead.org>,
	Masami Hiramatsu <mhiramat@kernel.org>
Subject: Re: [PATCH 2/2] x86/insn: Add some Intel instructions to the opcode map
Date: Mon, 18 Nov 2019 20:40:45 +0900	[thread overview]
Message-ID: <20191118204045.35ef5aaa02650c47fbb51950@kernel.org> (raw)
In-Reply-To: <20191115135447.6519-3-adrian.hunter@intel.com>

Hi Adrian,

On Fri, 15 Nov 2019 15:54:47 +0200
Adrian Hunter <adrian.hunter@intel.com> wrote:

> Add to the opcode map the following instructions:
>         cldemote
>         tpause
>         umonitor
>         umwait
>         movdiri
>         movdir64b
>         enqcmd
>         enqcmds
>         encls
>         enclu
>         enclv
>         pconfig
>         wbnoinvd
> 
> For information about the instructions, refer Intel SDM May 2019
> (325462-070US) and Intel Architecture Instruction Set Extensions
> May 2019 (319433-037).
> 
> The instruction decoding can be tested using the perf tools'
> "x86 instruction decoder - new instructions" test as folllows:
> 
>   $ perf test -v "new " 2>&1 | grep -i cldemote
>   Decoded ok: 0f 1c 00                    cldemote (%eax)
>   Decoded ok: 0f 1c 05 78 56 34 12        cldemote 0x12345678
>   Decoded ok: 0f 1c 84 c8 78 56 34 12     cldemote 0x12345678(%eax,%ecx,8)
>   Decoded ok: 0f 1c 00                    cldemote (%rax)
>   Decoded ok: 41 0f 1c 00                 cldemote (%r8)
>   Decoded ok: 0f 1c 04 25 78 56 34 12     cldemote 0x12345678
>   Decoded ok: 0f 1c 84 c8 78 56 34 12     cldemote 0x12345678(%rax,%rcx,8)
>   Decoded ok: 41 0f 1c 84 c8 78 56 34 12  cldemote 0x12345678(%r8,%rcx,8)
>   $ perf test -v "new " 2>&1 | grep -i tpause
>   Decoded ok: 66 0f ae f3                 tpause %ebx
>   Decoded ok: 66 0f ae f3                 tpause %ebx
>   Decoded ok: 66 41 0f ae f0              tpause %r8d
>   $ perf test -v "new " 2>&1 | grep -i umonitor
>   Decoded ok: 67 f3 0f ae f0              umonitor %ax
>   Decoded ok: f3 0f ae f0                 umonitor %eax
>   Decoded ok: 67 f3 0f ae f0              umonitor %eax
>   Decoded ok: f3 0f ae f0                 umonitor %rax
>   Decoded ok: 67 f3 41 0f ae f0           umonitor %r8d
>   $ perf test -v "new " 2>&1 | grep -i umwait
>   Decoded ok: f2 0f ae f0                 umwait %eax
>   Decoded ok: f2 0f ae f0                 umwait %eax
>   Decoded ok: f2 41 0f ae f0              umwait %r8d
>   $ perf test -v "new " 2>&1 | grep -i movdiri
>   Decoded ok: 0f 38 f9 03                 movdiri %eax,(%ebx)
>   Decoded ok: 0f 38 f9 88 78 56 34 12     movdiri %ecx,0x12345678(%eax)
>   Decoded ok: 48 0f 38 f9 03              movdiri %rax,(%rbx)
>   Decoded ok: 48 0f 38 f9 88 78 56 34 12  movdiri %rcx,0x12345678(%rax)
>   $ perf test -v "new " 2>&1 | grep -i movdir64b
>   Decoded ok: 66 0f 38 f8 18              movdir64b (%eax),%ebx
>   Decoded ok: 66 0f 38 f8 88 78 56 34 12  movdir64b 0x12345678(%eax),%ecx
>   Decoded ok: 67 66 0f 38 f8 1c           movdir64b (%si),%bx
>   Decoded ok: 67 66 0f 38 f8 8c 34 12     movdir64b 0x1234(%si),%cx
>   Decoded ok: 66 0f 38 f8 18              movdir64b (%rax),%rbx
>   Decoded ok: 66 0f 38 f8 88 78 56 34 12  movdir64b 0x12345678(%rax),%rcx
>   Decoded ok: 67 66 0f 38 f8 18           movdir64b (%eax),%ebx
>   Decoded ok: 67 66 0f 38 f8 88 78 56 34 12       movdir64b 0x12345678(%eax),%ecx
>   $ perf test -v "new " 2>&1 | grep -i enqcmd
>   Decoded ok: f2 0f 38 f8 18              enqcmd (%eax),%ebx
>   Decoded ok: f2 0f 38 f8 88 78 56 34 12  enqcmd 0x12345678(%eax),%ecx
>   Decoded ok: 67 f2 0f 38 f8 1c           enqcmd (%si),%bx
>   Decoded ok: 67 f2 0f 38 f8 8c 34 12     enqcmd 0x1234(%si),%cx
>   Decoded ok: f3 0f 38 f8 18              enqcmds (%eax),%ebx
>   Decoded ok: f3 0f 38 f8 88 78 56 34 12  enqcmds 0x12345678(%eax),%ecx
>   Decoded ok: 67 f3 0f 38 f8 1c           enqcmds (%si),%bx
>   Decoded ok: 67 f3 0f 38 f8 8c 34 12     enqcmds 0x1234(%si),%cx
>   Decoded ok: f2 0f 38 f8 18              enqcmd (%rax),%rbx
>   Decoded ok: f2 0f 38 f8 88 78 56 34 12  enqcmd 0x12345678(%rax),%rcx
>   Decoded ok: 67 f2 0f 38 f8 18           enqcmd (%eax),%ebx
>   Decoded ok: 67 f2 0f 38 f8 88 78 56 34 12       enqcmd 0x12345678(%eax),%ecx
>   Decoded ok: f3 0f 38 f8 18              enqcmds (%rax),%rbx
>   Decoded ok: f3 0f 38 f8 88 78 56 34 12  enqcmds 0x12345678(%rax),%rcx
>   Decoded ok: 67 f3 0f 38 f8 18           enqcmds (%eax),%ebx
>   Decoded ok: 67 f3 0f 38 f8 88 78 56 34 12       enqcmds 0x12345678(%eax),%ecx
>   $ perf test -v "new " 2>&1 | grep -i enqcmds
>   Decoded ok: f3 0f 38 f8 18              enqcmds (%eax),%ebx
>   Decoded ok: f3 0f 38 f8 88 78 56 34 12  enqcmds 0x12345678(%eax),%ecx
>   Decoded ok: 67 f3 0f 38 f8 1c           enqcmds (%si),%bx
>   Decoded ok: 67 f3 0f 38 f8 8c 34 12     enqcmds 0x1234(%si),%cx
>   Decoded ok: f3 0f 38 f8 18              enqcmds (%rax),%rbx
>   Decoded ok: f3 0f 38 f8 88 78 56 34 12  enqcmds 0x12345678(%rax),%rcx
>   Decoded ok: 67 f3 0f 38 f8 18           enqcmds (%eax),%ebx
>   Decoded ok: 67 f3 0f 38 f8 88 78 56 34 12       enqcmds 0x12345678(%eax),%ecx
>   $ perf test -v "new " 2>&1 | grep -i encls
>   Decoded ok: 0f 01 cf                    encls
>   Decoded ok: 0f 01 cf                    encls
>   $ perf test -v "new " 2>&1 | grep -i enclu
>   Decoded ok: 0f 01 d7                    enclu
>   Decoded ok: 0f 01 d7                    enclu
>   $ perf test -v "new " 2>&1 | grep -i enclv
>   Decoded ok: 0f 01 c0                    enclv
>   Decoded ok: 0f 01 c0                    enclv
>   $ perf test -v "new " 2>&1 | grep -i pconfig
>   Decoded ok: 0f 01 c5                    pconfig
>   Decoded ok: 0f 01 c5                    pconfig
>   $ perf test -v "new " 2>&1 | grep -i wbnoinvd
>   Decoded ok: f3 0f 09                    wbnoinvd
>   Decoded ok: f3 0f 09                    wbnoinvd
> 

Thanks for updating it!
This looks good to me.

Acked-by: Masami Hiramatsu <mhiramat@kernel.org>

> Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
> Reviewed-by: Andi Kleen <ak@linux.intel.com>
> ---
>  arch/x86/lib/x86-opcode-map.txt       | 18 ++++++++++++------
>  tools/arch/x86/lib/x86-opcode-map.txt | 18 ++++++++++++------
>  2 files changed, 24 insertions(+), 12 deletions(-)
> 
> diff --git a/arch/x86/lib/x86-opcode-map.txt b/arch/x86/lib/x86-opcode-map.txt
> index e0b85930dd77..0a0e9112f284 100644
> --- a/arch/x86/lib/x86-opcode-map.txt
> +++ b/arch/x86/lib/x86-opcode-map.txt
> @@ -333,7 +333,7 @@ AVXcode: 1
>  06: CLTS
>  07: SYSRET (o64)
>  08: INVD
> -09: WBINVD
> +09: WBINVD | WBNOINVD (F3)
>  0a:
>  0b: UD2 (1B)
>  0c:
> @@ -364,7 +364,7 @@ AVXcode: 1
>  # a ModR/M byte.
>  1a: BNDCL Gv,Ev (F3) | BNDCU Gv,Ev (F2) | BNDMOV Gv,Ev (66) | BNDLDX Gv,Ev
>  1b: BNDCN Gv,Ev (F2) | BNDMOV Ev,Gv (66) | BNDMK Gv,Ev (F3) | BNDSTX Ev,Gv
> -1c:
> +1c: Grp20 (1A),(1C)
>  1d:
>  1e:
>  1f: NOP Ev
> @@ -792,6 +792,8 @@ f3: Grp17 (1A)
>  f5: BZHI Gy,Ey,By (v) | PEXT Gy,By,Ey (F3),(v) | PDEP Gy,By,Ey (F2),(v)
>  f6: ADCX Gy,Ey (66) | ADOX Gy,Ey (F3) | MULX By,Gy,rDX,Ey (F2),(v)
>  f7: BEXTR Gy,Ey,By (v) | SHLX Gy,Ey,By (66),(v) | SARX Gy,Ey,By (F3),(v) | SHRX Gy,Ey,By (F2),(v)
> +f8: MOVDIR64B Gv,Mdqq (66) | ENQCMD Gv,Mdqq (F2) | ENQCMDS Gv,Mdqq (F3)
> +f9: MOVDIRI My,Gy
>  EndTable
>  
>  Table: 3-byte opcode 2 (0x0f 0x3a)
> @@ -943,9 +945,9 @@ GrpTable: Grp6
>  EndTable
>  
>  GrpTable: Grp7
> -0: SGDT Ms | VMCALL (001),(11B) | VMLAUNCH (010),(11B) | VMRESUME (011),(11B) | VMXOFF (100),(11B)
> -1: SIDT Ms | MONITOR (000),(11B) | MWAIT (001),(11B) | CLAC (010),(11B) | STAC (011),(11B)
> -2: LGDT Ms | XGETBV (000),(11B) | XSETBV (001),(11B) | VMFUNC (100),(11B) | XEND (101)(11B) | XTEST (110)(11B)
> +0: SGDT Ms | VMCALL (001),(11B) | VMLAUNCH (010),(11B) | VMRESUME (011),(11B) | VMXOFF (100),(11B) | PCONFIG (101),(11B) | ENCLV (000),(11B)
> +1: SIDT Ms | MONITOR (000),(11B) | MWAIT (001),(11B) | CLAC (010),(11B) | STAC (011),(11B) | ENCLS (111),(11B)
> +2: LGDT Ms | XGETBV (000),(11B) | XSETBV (001),(11B) | VMFUNC (100),(11B) | XEND (101)(11B) | XTEST (110)(11B) | ENCLU (111),(11B)
>  3: LIDT Ms
>  4: SMSW Mw/Rv
>  5: rdpkru (110),(11B) | wrpkru (111),(11B)
> @@ -1020,7 +1022,7 @@ GrpTable: Grp15
>  3: vstmxcsr Md (v1) | WRGSBASE Ry (F3),(11B)
>  4: XSAVE | ptwrite Ey (F3),(11B)
>  5: XRSTOR | lfence (11B)
> -6: XSAVEOPT | clwb (66) | mfence (11B)
> +6: XSAVEOPT | clwb (66) | mfence (11B) | TPAUSE Rd (66),(11B) | UMONITOR Rv (F3),(11B) | UMWAIT Rd (F2),(11B)
>  7: clflush | clflushopt (66) | sfence (11B)
>  EndTable
>  
> @@ -1051,6 +1053,10 @@ GrpTable: Grp19
>  6: vscatterpf1qps/d Wx (66),(ev)
>  EndTable
>  
> +GrpTable: Grp20
> +0: cldemote Mb
> +EndTable
> +
>  # AMD's Prefetch Group
>  GrpTable: GrpP
>  0: PREFETCH
> diff --git a/tools/arch/x86/lib/x86-opcode-map.txt b/tools/arch/x86/lib/x86-opcode-map.txt
> index e0b85930dd77..0a0e9112f284 100644
> --- a/tools/arch/x86/lib/x86-opcode-map.txt
> +++ b/tools/arch/x86/lib/x86-opcode-map.txt
> @@ -333,7 +333,7 @@ AVXcode: 1
>  06: CLTS
>  07: SYSRET (o64)
>  08: INVD
> -09: WBINVD
> +09: WBINVD | WBNOINVD (F3)
>  0a:
>  0b: UD2 (1B)
>  0c:
> @@ -364,7 +364,7 @@ AVXcode: 1
>  # a ModR/M byte.
>  1a: BNDCL Gv,Ev (F3) | BNDCU Gv,Ev (F2) | BNDMOV Gv,Ev (66) | BNDLDX Gv,Ev
>  1b: BNDCN Gv,Ev (F2) | BNDMOV Ev,Gv (66) | BNDMK Gv,Ev (F3) | BNDSTX Ev,Gv
> -1c:
> +1c: Grp20 (1A),(1C)
>  1d:
>  1e:
>  1f: NOP Ev
> @@ -792,6 +792,8 @@ f3: Grp17 (1A)
>  f5: BZHI Gy,Ey,By (v) | PEXT Gy,By,Ey (F3),(v) | PDEP Gy,By,Ey (F2),(v)
>  f6: ADCX Gy,Ey (66) | ADOX Gy,Ey (F3) | MULX By,Gy,rDX,Ey (F2),(v)
>  f7: BEXTR Gy,Ey,By (v) | SHLX Gy,Ey,By (66),(v) | SARX Gy,Ey,By (F3),(v) | SHRX Gy,Ey,By (F2),(v)
> +f8: MOVDIR64B Gv,Mdqq (66) | ENQCMD Gv,Mdqq (F2) | ENQCMDS Gv,Mdqq (F3)
> +f9: MOVDIRI My,Gy
>  EndTable
>  
>  Table: 3-byte opcode 2 (0x0f 0x3a)
> @@ -943,9 +945,9 @@ GrpTable: Grp6
>  EndTable
>  
>  GrpTable: Grp7
> -0: SGDT Ms | VMCALL (001),(11B) | VMLAUNCH (010),(11B) | VMRESUME (011),(11B) | VMXOFF (100),(11B)
> -1: SIDT Ms | MONITOR (000),(11B) | MWAIT (001),(11B) | CLAC (010),(11B) | STAC (011),(11B)
> -2: LGDT Ms | XGETBV (000),(11B) | XSETBV (001),(11B) | VMFUNC (100),(11B) | XEND (101)(11B) | XTEST (110)(11B)
> +0: SGDT Ms | VMCALL (001),(11B) | VMLAUNCH (010),(11B) | VMRESUME (011),(11B) | VMXOFF (100),(11B) | PCONFIG (101),(11B) | ENCLV (000),(11B)
> +1: SIDT Ms | MONITOR (000),(11B) | MWAIT (001),(11B) | CLAC (010),(11B) | STAC (011),(11B) | ENCLS (111),(11B)
> +2: LGDT Ms | XGETBV (000),(11B) | XSETBV (001),(11B) | VMFUNC (100),(11B) | XEND (101)(11B) | XTEST (110)(11B) | ENCLU (111),(11B)
>  3: LIDT Ms
>  4: SMSW Mw/Rv
>  5: rdpkru (110),(11B) | wrpkru (111),(11B)
> @@ -1020,7 +1022,7 @@ GrpTable: Grp15
>  3: vstmxcsr Md (v1) | WRGSBASE Ry (F3),(11B)
>  4: XSAVE | ptwrite Ey (F3),(11B)
>  5: XRSTOR | lfence (11B)
> -6: XSAVEOPT | clwb (66) | mfence (11B)
> +6: XSAVEOPT | clwb (66) | mfence (11B) | TPAUSE Rd (66),(11B) | UMONITOR Rv (F3),(11B) | UMWAIT Rd (F2),(11B)
>  7: clflush | clflushopt (66) | sfence (11B)
>  EndTable
>  
> @@ -1051,6 +1053,10 @@ GrpTable: Grp19
>  6: vscatterpf1qps/d Wx (66),(ev)
>  EndTable
>  
> +GrpTable: Grp20
> +0: cldemote Mb
> +EndTable
> +
>  # AMD's Prefetch Group
>  GrpTable: GrpP
>  0: PREFETCH
> -- 
> 2.17.1
> 


-- 
Masami Hiramatsu <mhiramat@kernel.org>

  reply	other threads:[~2019-11-18 11:40 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-11-15 13:54 [PATCH 0/2] x86/insn: Add some Intel instructions to the opcode map Adrian Hunter
2019-11-15 13:54 ` [PATCH 1/2] x86/insn: perf tools: Add some instructions to the new instructions test Adrian Hunter
2019-11-19 16:56   ` [tip: perf/core] " tip-bot2 for Adrian Hunter
2019-11-15 13:54 ` [PATCH 2/2] x86/insn: Add some Intel instructions to the opcode map Adrian Hunter
2019-11-18 11:40   ` Masami Hiramatsu [this message]
2019-11-18 21:55     ` Arnaldo Carvalho de Melo
2019-11-19 16:56   ` [tip: perf/core] " tip-bot2 for Adrian Hunter

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20191118204045.35ef5aaa02650c47fbb51950@kernel.org \
    --to=mhiramat@kernel.org \
    --cc=acme@kernel.org \
    --cc=adrian.hunter@intel.com \
    --cc=ak@linux.intel.com \
    --cc=bp@alien8.de \
    --cc=hpa@zytor.com \
    --cc=jolsa@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=peterz@infradead.org \
    --cc=tglx@linutronix.de \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.