• Ingo Molnar's avatar
    perfcounters: fix "perf counters kills oprofile" bug, v2 · 82aa9a18
    Ingo Molnar authored
    Impact: fix kernel crash
    
    Both oprofile and perfcounters register an NMI die handler, but only one
    can handle the NMI.  Conveniently, oprofile unregisters it's notifier
    when not actively in use, so setting it's notifier priority higher than
    perfcounter's allows oprofile to borrow the NMI for the duration of it's
    run.  Tested/works both as module and built-in.
    
    While testing, I found that if kerneltop was generating NMIs at very
    high frequency, the kernel may panic when oprofile registered it's
    handler.  This turned out to be because oprofile registers it's handler
    before reset_value has been allocated, so if an NMI comes in while it's
    still setting up, kabOom.  Rather than try more invasive changes, I
    followed the lead of other places in op_model_ppro.c, and simply
    returned in that highly unlikely event.  (debug warnings attached)
    Signed-off-by: default avatarMike Galbraith <efault@gmx.de>
    Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
    82aa9a18
op_model_ppro.c 6.58 KB