• Yazen Ghannam's avatar
    x86/mce/AMD: Allow any CPU to initialize the smca_banks array · 9662d43f
    Yazen Ghannam authored
    Current SMCA implementations have the same banks on each CPU with the
    non-core banks only visible to a "master thread" on each die. Practically,
    this means the smca_banks array, which describes the banks, only needs to
    be populated once by a single master thread.
    
    CPU 0 seemed like a good candidate to do the populating. However, it's
    possible that CPU 0 is not enabled in which case the smca_banks array won't
    be populated.
    
    Rather than try to figure out another master thread to do the populating,
    we should just allow any CPU to populate the array.
    
    Drop the CPU 0 check and return early if the bank was already initialized.
    Also, drop the WARNing about an already initialized bank, since this will
    be a common, expected occurrence.
    
    The smca_banks array is only populated at boot time and CPUs are brought
    online sequentially. So there's no need for locking around the array.
    
    If the first CPU up is a master thread, then it will populate the array
    with all banks, core and non-core. Every CPU afterwards will return
    early. If the first CPU up is not a master thread, then it will populate
    the array with all core banks. The first CPU afterwards that is a master
    thread will skip populating the core banks and continue populating the
    non-core banks.
    Signed-off-by: default avatarYazen Ghannam <yazen.ghannam@amd.com>
    Signed-off-by: default avatarBorislav Petkov <bp@suse.de>
    Acked-by: default avatarJack Miller <jack@codezen.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Tony Luck <tony.luck@intel.com>
    Cc: linux-edac <linux-edac@vger.kernel.org>
    Link: http://lkml.kernel.org/r/20170724101228.17326-4-bp@alien8.deSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    9662d43f
mce_amd.c 33.4 KB