1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- /* Provides edac interface to mcelog events
- *
- * This file may be distributed under the terms of the
- * GNU General Public License version 2.
- *
- * Copyright (c) 2009 by:
- * Mauro Carvalho Chehab <mchehab@redhat.com>
- *
- * Red Hat Inc. http://www.redhat.com
- */
- #include <linux/module.h>
- #include <linux/edac_mce.h>
- #include <asm/mce.h>
- int edac_mce_enabled;
- EXPORT_SYMBOL_GPL(edac_mce_enabled);
- /*
- * Extension interface
- */
- static LIST_HEAD(edac_mce_list);
- static DEFINE_MUTEX(edac_mce_lock);
- int edac_mce_register(struct edac_mce *edac_mce)
- {
- mutex_lock(&edac_mce_lock);
- list_add_tail(&edac_mce->list, &edac_mce_list);
- mutex_unlock(&edac_mce_lock);
- return 0;
- }
- EXPORT_SYMBOL(edac_mce_register);
- void edac_mce_unregister(struct edac_mce *edac_mce)
- {
- mutex_lock(&edac_mce_lock);
- list_del(&edac_mce->list);
- mutex_unlock(&edac_mce_lock);
- }
- EXPORT_SYMBOL(edac_mce_unregister);
- int edac_mce_parse(struct mce *mce)
- {
- struct edac_mce *edac_mce;
- list_for_each_entry(edac_mce, &edac_mce_list, list) {
- if (edac_mce->check_error(edac_mce->priv, mce))
- return 1;
- }
- /* Nobody queued the error */
- return 0;
- }
- EXPORT_SYMBOL_GPL(edac_mce_parse);
- MODULE_LICENSE("GPL");
- MODULE_AUTHOR("Mauro Carvalho Chehab <mchehab@redhat.com>");
- MODULE_AUTHOR("Red Hat Inc. (http://www.redhat.com)");
- MODULE_DESCRIPTION("EDAC Driver for mcelog captured errors");
|