lkml.org 
[lkml]   [2015]   [Sep]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[tip:perf/core] x86/insn: perf tools: Add new memory protection keys instructions
    Commit-ID:  978260cdbec3e34a3dfb2277ffc0aa1809457362
    Gitweb: http://git.kernel.org/tip/978260cdbec3e34a3dfb2277ffc0aa1809457362
    Author: Adrian Hunter <adrian.hunter@intel.com>
    AuthorDate: Wed, 2 Sep 2015 15:15:30 +0300
    Committer: Arnaldo Carvalho de Melo <acme@redhat.com>
    CommitDate: Fri, 4 Sep 2015 12:01:03 -0300

    x86/insn: perf tools: Add new memory protection keys instructions

    Add rdpkru and wrpkru to the op code map and the perf tools new
    instructions test. In the case of the test, only the bytes can be
    tested at the moment since binutils doesn't support the instructions
    yet. To run the test:

    $ tools/perf/perf test "x86 ins"
    39: Test x86 instruction decoder - new instructions : Ok

    Or to see the details:

    $ tools/perf/perf test -v "x86 ins" 2>&1 | grep pkru

    For information about rdpkru and wrpkru, refer the Intel SDM.

    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Acked-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: Andy Lutomirski <luto@amacapital.net>
    Cc: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Qiaowei Ren <qiaowei.ren@intel.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Link: http://lkml.kernel.org/r/1441196131-20632-7-git-send-email-adrian.hunter@intel.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    ---
    arch/x86/lib/x86-opcode-map.txt | 2 +-
    tools/perf/tests/insn-x86.c | 4 ++++
    tools/perf/util/intel-pt-decoder/x86-opcode-map.txt | 2 +-
    3 files changed, 6 insertions(+), 2 deletions(-)

    diff --git a/arch/x86/lib/x86-opcode-map.txt b/arch/x86/lib/x86-opcode-map.txt
    index f4f0451..5a9705e 100644
    --- a/arch/x86/lib/x86-opcode-map.txt
    +++ b/arch/x86/lib/x86-opcode-map.txt
    @@ -885,7 +885,7 @@ GrpTable: Grp7
    2: LGDT Ms | XGETBV (000),(11B) | XSETBV (001),(11B) | VMFUNC (100),(11B) | XEND (101)(11B) | XTEST (110)(11B)
    3: LIDT Ms
    4: SMSW Mw/Rv
    -5:
    +5: rdpkru (110),(11B) | wrpkru (111),(11B)
    6: LMSW Ew
    7: INVLPG Mb | SWAPGS (o64),(000),(11B) | RDTSCP (001),(11B)
    EndTable
    diff --git a/tools/perf/tests/insn-x86.c b/tools/perf/tests/insn-x86.c
    index 0e126a0..5c49eec 100644
    --- a/tools/perf/tests/insn-x86.c
    +++ b/tools/perf/tests/insn-x86.c
    @@ -17,11 +17,15 @@ struct test_data {

    struct test_data test_data_32[] = {
    #include "insn-x86-dat-32.c"
    + {{0x0f, 0x01, 0xee}, 3, 0, NULL, NULL, "0f 01 ee \trdpkru"},
    + {{0x0f, 0x01, 0xef}, 3, 0, NULL, NULL, "0f 01 ef \twrpkru"},
    {{0}, 0, 0, NULL, NULL, NULL},
    };

    struct test_data test_data_64[] = {
    #include "insn-x86-dat-64.c"
    + {{0x0f, 0x01, 0xee}, 3, 0, NULL, NULL, "0f 01 ee \trdpkru"},
    + {{0x0f, 0x01, 0xef}, 3, 0, NULL, NULL, "0f 01 ef \twrpkru"},
    {{0}, 0, 0, NULL, NULL, NULL},
    };

    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 f4f0451..5a9705e 100644
    --- a/tools/perf/util/intel-pt-decoder/x86-opcode-map.txt
    +++ b/tools/perf/util/intel-pt-decoder/x86-opcode-map.txt
    @@ -885,7 +885,7 @@ GrpTable: Grp7
    2: LGDT Ms | XGETBV (000),(11B) | XSETBV (001),(11B) | VMFUNC (100),(11B) | XEND (101)(11B) | XTEST (110)(11B)
    3: LIDT Ms
    4: SMSW Mw/Rv
    -5:
    +5: rdpkru (110),(11B) | wrpkru (111),(11B)
    6: LMSW Ew
    7: INVLPG Mb | SWAPGS (o64),(000),(11B) | RDTSCP (001),(11B)
    EndTable

    \
     
     \ /
      Last update: 2015-09-08 17:01    [W:4.101 / U:0.732 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site