• Leo Yan's avatar
    perf cs-etm: Remove callback cs_etm_find_snapshot() · 2f01c200
    Leo Yan authored
    The callback cs_etm_find_snapshot() is invoked for snapshot mode, its
    main purpose is to find the correct AUX trace data and returns "head"
    and "old" (we can call "old" as "old head") to the caller, the caller
    __auxtrace_mmap__read() uses these two pointers to decide the AUX trace
    data size.
    
    This patch removes cs_etm_find_snapshot() with below reasons:
    
    - The first thing in cs_etm_find_snapshot() is to check if the head has
      wrapped around, if it is not, directly bails out.  The checking is
      pointless, this is because the "head" and "old" pointers both are
      monotonical increasing so they never wrap around.
    
    - cs_etm_find_snapshot() adjusts the "head" and "old" pointers and
      assumes the AUX ring buffer is fully filled with the hardware trace
      data, so it always subtracts the difference "mm->len" from "head" to
      get "old".  Let's imagine the snapshot is taken in very short
      interval, the tracers only fill a small chunk of the trace data into
      the AUX ring buffer, in this case, it's wrongly to copy the whole the
      AUX ring buffer to perf file.
    
    - As the "head" and "old" pointers are monotonically increased, the
      function __auxtrace_mmap__read() handles these two pointers properly.
      It calculates the reminders for these two pointers, and the size is
      clamped to be never more than "snapshot_size".  We can simply reply on
      the function __auxtrace_mmap__read() to calculate the correct result
      for data copying, it's not necessary to add Arm CoreSight specific
      callback.
    Signed-off-by: default avatarLeo Yan <leo.yan@linaro.org>
    Reviewed-by: default avatarJames Clark <james.clark@arm.com>
    Tested-by: default avatarJames Clark <james.clark@arm.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Daniel Kiss <daniel.kiss@arm.com>
    Cc: Denis Nikitin <denik@google.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: John Garry <john.garry@huawei.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Mathieu Poirier <mathieu.poirier@linaro.org>
    Cc: Mike Leach <mike.leach@linaro.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Suzuki Poulouse <suzuki.poulose@arm.com>
    Cc: Will Deacon <will@kernel.org>
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: coresight@lists.linaro.org
    Link: http://lore.kernel.org/lkml/20210701093537.90759-3-leo.yan@linaro.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    2f01c200
cs-etm.c 21.4 KB