lkml.org 
[lkml]   [2021]   [Mar]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.10 198/221] perf auxtrace: Fix auxtrace queue conflict
    Date
    From: Adrian Hunter <adrian.hunter@intel.com>

    [ Upstream commit b410ed2a8572d41c68bd9208555610e4b07d0703 ]

    The only requirement of an auxtrace queue is that the buffers are in
    time order. That is achieved by making separate queues for separate
    perf buffer or AUX area buffer mmaps.

    That generally means a separate queue per cpu for per-cpu contexts, and
    a separate queue per thread for per-task contexts.

    When buffers are added to a queue, perf checks that the buffer cpu and
    thread id (tid) match the queue cpu and thread id.

    However, generally, that need not be true, and perf will queue buffers
    correctly anyway, so the check is not needed.

    In addition, the check gets erroneously hit when using sample mode to
    trace multiple threads.

    Consequently, fix that case by removing the check.

    Fixes: e502789302a6 ("perf auxtrace: Add helpers for queuing AUX area tracing data")
    Reported-by: Andi Kleen <ak@linux.intel.com>
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Reviewed-by: Andi Kleen <ak@linux.intel.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Link: http://lore.kernel.org/lkml/20210308151143.18338-1-adrian.hunter@intel.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    tools/perf/util/auxtrace.c | 4 ----
    1 file changed, 4 deletions(-)

    diff --git a/tools/perf/util/auxtrace.c b/tools/perf/util/auxtrace.c
    index 42a85c86421d..d8ada6a3c555 100644
    --- a/tools/perf/util/auxtrace.c
    +++ b/tools/perf/util/auxtrace.c
    @@ -300,10 +300,6 @@ static int auxtrace_queues__queue_buffer(struct auxtrace_queues *queues,
    queue->set = true;
    queue->tid = buffer->tid;
    queue->cpu = buffer->cpu;
    - } else if (buffer->cpu != queue->cpu || buffer->tid != queue->tid) {
    - pr_err("auxtrace queue conflict: cpu %d, tid %d vs cpu %d, tid %d\n",
    - queue->cpu, queue->tid, buffer->cpu, buffer->tid);
    - return -EINVAL;
    }

    buffer->buffer_nr = queues->next_buffer_nr++;
    --
    2.30.1


    \
     
     \ /
      Last update: 2021-03-29 10:45    [W:3.907 / U:0.108 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site