• L
    perf,x86: fix wrmsr_on_cpu() warning on suspend/resume · 2a6e06b2
    Linus Torvalds 提交于
    Commit 1d9d8639 ("perf,x86: fix kernel crash with PEBS/BTS after
    suspend/resume") fixed a crash when doing PEBS performance profiling
    after resuming, but in using init_debug_store_on_cpu() to restore the
    DS_AREA mtrr it also resulted in a new WARN_ON() triggering.
    
    init_debug_store_on_cpu() uses "wrmsr_on_cpu()", which in turn uses CPU
    cross-calls to do the MSR update.  Which is not really valid at the
    early resume stage, and the warning is quite reasonable.  Now, it all
    happens to _work_, for the simple reason that smp_call_function_single()
    ends up just doing the call directly on the CPU when the CPU number
    matches, but we really should just do the wrmsr() directly instead.
    
    This duplicates the wrmsr() logic, but hopefully we can just remove the
    wrmsr_on_cpu() version eventually.
    Reported-and-tested-by: NParag Warudkar <parag.lkml@gmail.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
    2a6e06b2
perf_event_intel_ds.c 17.6 KB