lkml.org 
[lkml]   [2017]   [Sep]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    SubjectRe: [PATCH] perf/aux: Only update aux_wakeup in non-overwrite mode
    Date
    Will Deacon <will.deacon@arm.com> writes:

    > Hi Alexander,
    >
    > On Wed, Sep 06, 2017 at 07:08:11PM +0300, Alexander Shishkin wrote:
    >> Commit d9a50b0256 ("perf/aux: Ensure aux_wakeup represents most recent
    >> wakeup index") changed aux wakeup position calculation to rounddown(),
    >> which causes a division-by-zero in AUX overwrite mode (aka "snapshot
    >> mode").
    >>
    >> The zero denominator results from the fact that perf record doesn't set
    >> aux_watermark to anything, in which case the kernel will set it to half
    >> the AUX buffer size, but only for non-overwrite mode. In the overwrite
    >> mode aux_watermark stays zero.
    >>
    >> The good news is that, AUX overwrite mode, wakeups don't happen and
    >> related bookkeeping is not relevant, so we can simply forego the whole
    >> wakeup updates.
    >>
    >> Signed-off-by: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    >> ---
    >> kernel/events/ring_buffer.c | 20 +++++++++++++++-----
    >> 1 file changed, 15 insertions(+), 5 deletions(-)
    >
    > Damn, sorry about that. How did you spot the problem?

    A normal perf record with -S should trigger it, I don't remember what
    exactly I was doing at that moment. But no worries, we all missed it the
    first time around. :)

    > Anyway, I think the code is much better with this factored out:
    >
    > Acked-by: Will Deacon <will.deacon@arm.com>

    Thanks!

    \
     
     \ /
      Last update: 2017-09-13 12:41    [W:2.496 / U:0.300 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site