• Paul Mackerras's avatar
    perf_counter: abstract wakeup flag setting in core to fix powerpc build · b6c5a71d
    Paul Mackerras authored
    Impact: build fix for powerpc
    
    Commit bd753921015e7905 ("perf_counter: software counter event
    infrastructure") introduced a use of TIF_PERF_COUNTERS into the core
    perfcounter code.  This breaks the build on powerpc because we use
    a flag in a per-cpu area to signal wakeups on powerpc rather than
    a thread_info flag, because the thread_info flags have to be
    manipulated with atomic operations and are thus slower than per-cpu
    flags.
    
    This fixes the by changing the core to use an abstracted
    set_perf_counter_pending() function, which is defined on x86 to set
    the TIF_PERF_COUNTERS flag and on powerpc to set the per-cpu flag
    (paca->perf_counter_pending).  It changes the previous powerpc
    definition of set_perf_counter_pending to not take an argument and
    adds a clear_perf_counter_pending, so as to simplify the definition
    on x86.
    
    On x86, set_perf_counter_pending() is defined as a macro.  Defining
    it as a static inline in arch/x86/include/asm/perf_counters.h causes
    compile failures because <asm/perf_counters.h> gets included early in
    <linux/sched.h>, and the definitions of set_tsk_thread_flag etc. are
    therefore not available in <asm/perf_counters.h>.  (On powerpc this
    problem is avoided by defining set_perf_counter_pending etc. in
    <asm/hw_irq.h>.)
    Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
    b6c5a71d
perf_counter.c 20.7 KB