-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Provides a way for NMI reported errors on x86 to notify the EDAC subsystem pending ECC errors by writing to a software state variable. Here's the reworked patch. I added an EDAC stub to the kernel so we can have variables that are in the kernel even if EDAC is a module. I also implemented the idea of using the chip driver to select error detection mode via module parameter and eliminate the kernel compile option. Please review/test. Thx! Also, I only made changes to some of the chipset drivers since I am unfamiliar with the other ones. We can add similar changes as we go. Signed-off-by: Dave Jiang <djiang@mvista.com> Signed-off-by: Douglas Thompson <dougthompson@xmission.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
- Loading branch information
Dave Jiang
authored and
Linus Torvalds
committed
Jul 19, 2007
1 parent
28f96ee
commit c0d1217
Showing
11 changed files
with
160 additions
and
15 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
/* | ||
* common EDAC components that must be in kernel | ||
* | ||
* Author: Dave Jiang <djiang@mvista.com> | ||
* | ||
* 2007 (c) MontaVista Software, Inc. 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. | ||
* | ||
*/ | ||
#include <linux/module.h> | ||
#include <linux/edac.h> | ||
#include <asm/atomic.h> | ||
#include <asm/edac.h> | ||
|
||
int edac_op_state = EDAC_OPSTATE_INVAL; | ||
EXPORT_SYMBOL(edac_op_state); | ||
|
||
atomic_t edac_handlers = ATOMIC_INIT(0); | ||
EXPORT_SYMBOL(edac_handlers); | ||
|
||
atomic_t edac_err_assert = ATOMIC_INIT(0); | ||
EXPORT_SYMBOL(edac_err_assert); | ||
|
||
inline int edac_handler_set(void) | ||
{ | ||
if (edac_op_state == EDAC_OPSTATE_POLL) | ||
return 0; | ||
|
||
return atomic_read(&edac_handlers); | ||
} | ||
EXPORT_SYMBOL(edac_handler_set); | ||
|
||
/* | ||
* handler for NMI type of interrupts to assert error | ||
*/ | ||
inline void edac_atomic_assert_error(void) | ||
{ | ||
atomic_set(&edac_err_assert, 1); | ||
} | ||
EXPORT_SYMBOL(edac_atomic_assert_error); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
/* | ||
* Generic EDAC defs | ||
* | ||
* Author: Dave Jiang <djiang@mvista.com> | ||
* | ||
* 2006-2007 (c) MontaVista Software, Inc. 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. | ||
* | ||
*/ | ||
#ifndef _LINUX_EDAC_H_ | ||
#define _LINUX_EDAC_H_ | ||
|
||
#include <asm/atomic.h> | ||
|
||
#define EDAC_OPSTATE_INVAL -1 | ||
#define EDAC_OPSTATE_POLL 0 | ||
#define EDAC_OPSTATE_NMI 1 | ||
#define EDAC_OPSTATE_INT 2 | ||
|
||
extern int edac_op_state; | ||
extern atomic_t edac_handlers; | ||
extern atomic_t edac_err_assert; | ||
|
||
extern int edac_handler_set(void); | ||
extern void edac_atomic_assert_error(void); | ||
|
||
#endif |