2007-07-19 12:49:46 +04:00
/*
* common EDAC components that must be in kernel
*
* Author : Dave Jiang < djiang @ mvista . com >
*
2010-09-02 19:26:48 +04:00
* 2007 ( c ) MontaVista Software , Inc .
* 2010 ( c ) Advanced Micro Devices Inc .
2012-10-29 21:40:09 +04:00
* Borislav Petkov < bp @ alien8 . de >
2010-09-02 19:26:48 +04:00
*
* This file is licensed under the terms of the GNU General Public
* License version 2. This program is licensed " as is " without any
* warranty of any kind , whether express or implied .
2007-07-19 12:49:46 +04:00
*
*/
# include <linux/module.h>
# include <linux/edac.h>
2011-07-27 03:09:06 +04:00
# include <linux/atomic.h>
2012-01-22 20:23:42 +04:00
# include <linux/device.h>
2007-07-19 12:49:46 +04:00
int edac_op_state = EDAC_OPSTATE_INVAL ;
2007-07-19 12:50:30 +04:00
EXPORT_SYMBOL_GPL ( edac_op_state ) ;
2007-07-19 12:49:46 +04:00
atomic_t edac_handlers = ATOMIC_INIT ( 0 ) ;
2007-07-19 12:50:30 +04:00
EXPORT_SYMBOL_GPL ( edac_handlers ) ;
2007-07-19 12:49:46 +04:00
2007-07-19 12:49:54 +04:00
int edac_err_assert = 0 ;
2007-07-19 12:50:30 +04:00
EXPORT_SYMBOL_GPL ( edac_err_assert ) ;
2007-07-19 12:49:46 +04:00
2013-12-06 10:17:08 +04:00
int edac_report_status = EDAC_REPORTING_ENABLED ;
EXPORT_SYMBOL_GPL ( edac_report_status ) ;
static int __init edac_report_setup ( char * str )
{
if ( ! str )
return - EINVAL ;
if ( ! strncmp ( str , " on " , 2 ) )
set_edac_report_status ( EDAC_REPORTING_ENABLED ) ;
else if ( ! strncmp ( str , " off " , 3 ) )
set_edac_report_status ( EDAC_REPORTING_DISABLED ) ;
else if ( ! strncmp ( str , " force " , 5 ) )
set_edac_report_status ( EDAC_REPORTING_FORCE ) ;
return 0 ;
}
__setup ( " edac_report= " , edac_report_setup ) ;
2007-07-19 12:50:30 +04:00
/*
* called to determine if there is an EDAC driver interested in
* knowing an event ( such as NMI ) occurred
*/
int edac_handler_set ( void )
2007-07-19 12:49:46 +04:00
{
if ( edac_op_state = = EDAC_OPSTATE_POLL )
return 0 ;
return atomic_read ( & edac_handlers ) ;
}
2007-07-19 12:50:30 +04:00
EXPORT_SYMBOL_GPL ( edac_handler_set ) ;
2007-07-19 12:49:46 +04:00
/*
* handler for NMI type of interrupts to assert error
*/
2007-07-19 12:50:30 +04:00
void edac_atomic_assert_error ( void )
2007-07-19 12:49:46 +04:00
{
2007-07-19 12:49:54 +04:00
edac_err_assert + + ;
2007-07-19 12:49:46 +04:00
}
2007-07-19 12:50:30 +04:00
EXPORT_SYMBOL_GPL ( edac_atomic_assert_error ) ;