#include <linux/module.h>
#include <linux/slab.h>
#include <asm/cpu.h>
#include "mce_amd.h"
static struct amd_decoder_ops fam_ops;
static u8 xec_mask = …;
static void (*decode_dram_ecc)(int node_id, struct mce *m);
void amd_register_ecc_decoder(void (*f)(int, struct mce *))
{ … }
EXPORT_SYMBOL_GPL(…);
void amd_unregister_ecc_decoder(void (*f)(int, struct mce *))
{ … }
EXPORT_SYMBOL_GPL(…);
static const char * const tt_msgs[] = …;
static const char * const ll_msgs[] = …;
static const char * const rrrr_msgs[] = …;
const char * const pp_msgs[] = …;
EXPORT_SYMBOL_GPL(…);
static const char * const to_msgs[] = …;
static const char * const ii_msgs[] = …;
static const char * const uu_msgs[] = …;
static const char * const f15h_mc1_mce_desc[] = …;
static const char * const f15h_mc2_mce_desc[] = …;
static const char * const mc4_mce_desc[] = …;
static const char * const mc5_mce_desc[] = …;
static const char * const mc6_mce_desc[] = …;
static bool f12h_mc0_mce(u16 ec, u8 xec)
{ … }
static bool f10h_mc0_mce(u16 ec, u8 xec)
{ … }
static bool k8_mc0_mce(u16 ec, u8 xec)
{ … }
static bool cat_mc0_mce(u16 ec, u8 xec)
{ … }
static bool f15h_mc0_mce(u16 ec, u8 xec)
{ … }
static void decode_mc0_mce(struct mce *m)
{ … }
static bool k8_mc1_mce(u16 ec, u8 xec)
{ … }
static bool cat_mc1_mce(u16 ec, u8 xec)
{ … }
static bool f15h_mc1_mce(u16 ec, u8 xec)
{ … }
static void decode_mc1_mce(struct mce *m)
{ … }
static bool k8_mc2_mce(u16 ec, u8 xec)
{ … }
static bool f15h_mc2_mce(u16 ec, u8 xec)
{ … }
static bool f16h_mc2_mce(u16 ec, u8 xec)
{ … }
static void decode_mc2_mce(struct mce *m)
{ … }
static void decode_mc3_mce(struct mce *m)
{ … }
static void decode_mc4_mce(struct mce *m)
{ … }
static void decode_mc5_mce(struct mce *m)
{ … }
static void decode_mc6_mce(struct mce *m)
{ … }
static const char * const smca_long_names[] = …;
static const char *smca_get_long_name(enum smca_bank_types t)
{ … }
static void decode_smca_error(struct mce *m)
{ … }
static inline void amd_decode_err_code(u16 ec)
{ … }
static const char *decode_error_status(struct mce *m)
{ … }
static int
amd_decode_mce(struct notifier_block *nb, unsigned long val, void *data)
{ … }
static struct notifier_block amd_mce_dec_nb = …;
static int __init mce_amd_init(void)
{ … }
early_initcall(mce_amd_init);
#ifdef MODULE
static void __exit mce_amd_exit(void)
{
mce_unregister_decode_chain(&amd_mce_dec_nb);
}
MODULE_DESCRIPTION("AMD MCE decoder");
MODULE_ALIAS("edac-mce-amd");
MODULE_LICENSE("GPL");
module_exit(mce_amd_exit);
#endif