lkml.org 
[lkml]   [2019]   [Nov]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.3 144/193] perf/x86/amd/ibs: Fix reading of the IBS OpData register and thus precise RIP validity
    Date
    From: Kim Phillips <kim.phillips@amd.com>

    [ Upstream commit 317b96bb14303c7998dbcd5bc606bd8038fdd4b4 ]

    The loop that reads all the IBS MSRs into *buf stopped one MSR short of
    reading the IbsOpData register, which contains the RipInvalid status bit.

    Fix the offset_max assignment so the MSR gets read, so the RIP invalid
    evaluation is based on what the IBS h/w output, instead of what was
    left in memory.

    Signed-off-by: Kim Phillips <kim.phillips@amd.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vince Weaver <vincent.weaver@maine.edu>
    Fixes: d47e8238cd76 ("perf/x86-ibs: Take instruction pointer from ibs sample")
    Link: https://lkml.kernel.org/r/20191023150955.30292-1-kim.phillips@amd.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    arch/x86/events/amd/ibs.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    diff --git a/arch/x86/events/amd/ibs.c b/arch/x86/events/amd/ibs.c
    index 5b35b7ea5d728..98ba21a588a15 100644
    --- a/arch/x86/events/amd/ibs.c
    +++ b/arch/x86/events/amd/ibs.c
    @@ -614,7 +614,7 @@ fail:
    if (event->attr.sample_type & PERF_SAMPLE_RAW)
    offset_max = perf_ibs->offset_max;
    else if (check_rip)
    - offset_max = 2;
    + offset_max = 3;
    else
    offset_max = 1;
    do {
    --
    2.20.1


    \
     
     \ /
      Last update: 2019-11-11 20:00    [W:4.021 / U:0.052 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site