• Ingo Molnar's avatar
    x86: EDAC: MCE: Fix MCE decoding callback logic · f436f8bb
    Ingo Molnar authored
    Make decoding of MCEs happen only on AMD hardware by registering a
    non-default callback only on CPU families which support it.
    
    While looking at the interaction of decode_mce() with the other MCE
    code i also noticed a few other things and made the following
    cleanups/fixes:
    
     - Fixed the mce_decode() weak alias - a weak alias is really not
       good here, it should be a proper callback. A weak alias will be
       overriden if a piece of code is built into the kernel - not
       good, obviously.
    
     - The patch initializes the callback on AMD family 10h and 11h.
    
     - Added the more correct fallback printk of:
    
    	No support for human readable MCE decoding on this CPU type.
    	Transcribe the message and run it through 'mcelog --ascii' to decode.
    
       On CPUs that dont have a decoder.
    
     - Made the surrounding code more readable.
    
    Note that the callback allows us to have a default fallback -
    without having to check the CPU versions during the printout
    itself. When an EDAC module registers itself, it can install the
    decode-print function.
    
    (there's no unregister needed as this is core code.)
    
    version -v2 by Borislav Petkov:
    
     - add K8 to the set of supported CPUs
    
     - always build in edac_mce_amd since we use an early_initcall now
    
     - fix checkpatch warnings
    Signed-off-by: default avatarBorislav Petkov <borislav.petkov@amd.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Andi Kleen <andi@firstfloor.org>
    LKML-Reference: <20091001141432.GA11410@aftab>
    Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
    f436f8bb
mce.c 47.9 KB