EDAC: Add an edac_report parameter to EDAC
This new parameter is used to control how to report HW error reporting, especially for newer Intel platform, like Ivybridge-EX, which contains an enhanced error decoding functionality in the firmware, i.e. eMCA. Signed-off-by: Chen, Gong <gong.chen@linux.intel.com> Acked-by: Tony Luck <tony.luck@intel.com> Link: http://lkml.kernel.org/r/1386310630-12529-2-git-send-email-gong.chen@linux.intel.com [ Boris: massage commit message. ] Signed-off-by: Borislav Petkov <bp@suse.de>
This commit is contained in:
Родитель
545104dd2b
Коммит
c700f013ad
|
@ -881,6 +881,14 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
|
|||
|
||||
The xen output can only be used by Xen PV guests.
|
||||
|
||||
edac_report= [HW,EDAC] Control how to report EDAC event
|
||||
Format: {"on" | "off" | "force"}
|
||||
on: enable EDAC to report H/W event. May be overridden
|
||||
by other higher priority error reporting module.
|
||||
off: disable H/W event reporting through EDAC.
|
||||
force: enforce the use of EDAC to report H/W event.
|
||||
default: on.
|
||||
|
||||
ekgdboc= [X86,KGDB] Allow early kernel console debugging
|
||||
ekgdboc=kbd
|
||||
|
||||
|
|
|
@ -29,6 +29,25 @@ EXPORT_SYMBOL_GPL(edac_err_assert);
|
|||
|
||||
static atomic_t edac_subsys_valid = ATOMIC_INIT(0);
|
||||
|
||||
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);
|
||||
|
||||
/*
|
||||
* called to determine if there is an EDAC driver interested in
|
||||
* knowing an event (such as NMI) occurred
|
||||
|
|
|
@ -35,6 +35,34 @@ extern void edac_atomic_assert_error(void);
|
|||
extern struct bus_type *edac_get_sysfs_subsys(void);
|
||||
extern void edac_put_sysfs_subsys(void);
|
||||
|
||||
enum {
|
||||
EDAC_REPORTING_ENABLED,
|
||||
EDAC_REPORTING_DISABLED,
|
||||
EDAC_REPORTING_FORCE
|
||||
};
|
||||
|
||||
extern int edac_report_status;
|
||||
#ifdef CONFIG_EDAC
|
||||
static inline int get_edac_report_status(void)
|
||||
{
|
||||
return edac_report_status;
|
||||
}
|
||||
|
||||
static inline void set_edac_report_status(int new)
|
||||
{
|
||||
edac_report_status = new;
|
||||
}
|
||||
#else
|
||||
static inline int get_edac_report_status(void)
|
||||
{
|
||||
return EDAC_REPORTING_DISABLED;
|
||||
}
|
||||
|
||||
static inline void set_edac_report_status(int new)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
static inline void opstate_init(void)
|
||||
{
|
||||
switch (edac_op_state) {
|
||||
|
|
Загрузка…
Ссылка в новой задаче