linux/drivers/edac/mce_amd.c

// SPDX-License-Identifier: GPL-2.0-only
#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();

/*
 * string representation for the different MCA reported error types, see F3x48
 * or MSR0000_0411.
 */

/* transaction type */
static const char * const tt_msgs[] =;

/* cache level */
static const char * const ll_msgs[] =;

/* memory transaction type */
static const char * const rrrr_msgs[] =;

/* participating processor */
const char * const pp_msgs[] =;
EXPORT_SYMBOL_GPL();

/* request timeout */
static const char * const to_msgs[] =;

/* memory or i/o */
static const char * const ii_msgs[] =;

/* internal error type */
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)
{}

/* Decode errors according to Scalable MCA specification */
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