linux/drivers/edac/ghes_edac.c

// SPDX-License-Identifier: GPL-2.0-only
/*
 * GHES/EDAC Linux driver
 *
 * Copyright (c) 2013 by Mauro Carvalho Chehab
 *
 * Red Hat Inc. https://www.redhat.com
 */

#define pr_fmt(fmt)

#include <acpi/ghes.h>
#include <linux/edac.h>
#include <linux/dmi.h>
#include "edac_module.h"
#include <ras/ras_event.h>
#include <linux/notifier.h>

#define OTHER_DETAIL_LEN

struct ghes_pvt {};

static refcount_t ghes_refcount =;

/*
 * Access to ghes_pvt must be protected by ghes_lock. The spinlock
 * also provides the necessary (implicit) memory barrier for the SMP
 * case to make the pointer visible on another CPU.
 */
static struct ghes_pvt *ghes_pvt;

/*
 * This driver's representation of the system hardware, as collected
 * from DMI.
 */
static struct ghes_hw_desc {} ghes_hw;

/* GHES registration mutex */
static DEFINE_MUTEX(ghes_reg_mutex);

/*
 * Sync with other, potentially concurrent callers of
 * ghes_edac_report_mem_error(). We don't know what the
 * "inventive" firmware would do.
 */
static DEFINE_SPINLOCK(ghes_lock);

static bool system_scanned;

static struct list_head *ghes_devs;

/* Memory Device - Type 17 of SMBIOS spec */
struct memdev_dmi_entry {} __attribute__((packed));

static struct dimm_info *find_dimm_by_handle(struct mem_ctl_info *mci, u16 handle)
{}

static void dimm_setup_label(struct dimm_info *dimm, u16 handle)
{}

static void assign_dmi_dimm_info(struct dimm_info *dimm, struct memdev_dmi_entry *entry)
{}

static void enumerate_dimms(const struct dmi_header *dh, void *arg)
{}

static void ghes_scan_system(void)
{}

static int print_mem_error_other_detail(const struct cper_sec_mem_err *mem, char *msg,
					const char *location, unsigned int len)
{}

static int ghes_edac_report_mem_error(struct notifier_block *nb,
				      unsigned long val, void *data)
{}

static struct notifier_block ghes_edac_mem_err_nb =;

static int ghes_edac_register(struct device *dev)
{}

static void ghes_edac_unregister(struct ghes *ghes)
{}

static int __init ghes_edac_init(void)
{}
module_init();

static void __exit ghes_edac_exit(void)
{}
module_exit(ghes_edac_exit);

MODULE_LICENSE();
MODULE_DESCRIPTION();