• P
    perf_counter: Fix an ipi-deadlock · 970892a9
    Peter Zijlstra 提交于
    perf_pending_counter() is called from IRQ context and will call
    perf_counter_disable(), however perf_counter_disable() uses
    smp_call_function_single() which doesn't fancy being used with
    IRQs disabled due to IPI deadlocks.
    
    Fix this by making it use the local __perf_counter_disable()
    call and teaching the counter_sched_out() code about pending
    disables as well.
    
    This should cover the case where a counter migrates before the
    pending queue gets processed.
    Signed-off-by: NPeter Zijlstra <a.p.zijlstra@chello.nl>
    Cc: Corey J Ashford <cjashfor@us.ibm.com>
    Cc: Paul Mackerras <paulus@samba.org>
    Cc: stephane eranian <eranian@googlemail.com>
    LKML-Reference: <20090813103655.244097721@chello.nl>
    Signed-off-by: NIngo Molnar <mingo@elte.hu>
    970892a9
perf_counter.c 112.8 KB