• B
    x86, mce: Fix mce_start_timer semantics · 4f75d841
    Borislav Petkov 提交于
    So mce_start_timer() has a 'cpu' argument which is supposed to mean to
    start a timer on that cpu. However, the code currently starts a timer on
    the *current* cpu the function runs on and causes the sanity-check in
    mce_timer_fn to fire:
    
    	WARNING: CPU: 0 PID: 0 at arch/x86/kernel/cpu/mcheck/mce.c:1286 mce_timer_fn
    
    because it is running on the wrong cpu.
    
    This was triggered by Prarit Bhargava <prarit@redhat.com> by offlining
    all the cpus in succession.
    
    Then, we were fiddling with the CMCI storm settings when starting the
    timer whereas there's no need for that - if there's storm happening
    on this newly restarted cpu, we're going to be in normal CMCI mode
    initially and then when the CMCI interrupt starts firing, we're going to
    go to the polling mode with the timer real soon.
    Signed-off-by: NBorislav Petkov <bp@suse.de>
    Tested-by: NPrarit Bhargava <prarit@redhat.com>
    Cc: Tony Luck <tony.luck@intel.com>
    Reviewed-by: NChen, Gong <gong.chen@linux.intel.com>
    Link: http://lkml.kernel.org/r/1387722156-5511-1-git-send-email-prarit@redhat.com
    4f75d841
mce.c 57.7 KB