• Stephane Eranian's avatar
    perf/x86/intel: Fix handling of wakeup_events for multi-entry PEBS · 583feb08
    Stephane Eranian authored
    When an event is programmed with attr.wakeup_events=N (N>0), it means
    the caller is interested in getting a user level notification after
    N samples have been recorded in the kernel sampling buffer.
    
    With precise events on Intel processors, the kernel uses PEBS.
    The kernel tries minimize sampling overhead by verifying
    if the event configuration is compatible with multi-entry PEBS mode.
    If so, the kernel is notified only when the buffer has reached its threshold.
    Other PEBS operates in single-entry mode, the kenrel is notified for each
    PEBS sample.
    
    The problem is that the current implementation look at frequency
    mode and event sample_type but ignores the wakeup_events field. Thus,
    it may not be possible to receive a notification after each precise event.
    
    This patch fixes this problem by disabling multi-entry PEBS if wakeup_events
    is non-zero.
    Signed-off-by: default avatarStephane Eranian <eranian@google.com>
    Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
    Reviewed-by: default avatarAndi Kleen <ak@linux.intel.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vince Weaver <vincent.weaver@maine.edu>
    Cc: kan.liang@intel.com
    Link: https://lkml.kernel.org/r/20190306195048.189514-1-eranian@google.comSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    583feb08
core.c 135 KB