diff options
author | Ingo Molnar <mingo@kernel.org> | 2013-12-16 08:33:17 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2013-12-16 08:33:17 -0500 |
commit | 014952270eb9770a41084e74c721e4c07f2306c5 (patch) | |
tree | 75460debf66bd187355599a73db0a2bffec5a2f8 /drivers/edac | |
parent | 319e2e3f63c348a9b66db4667efa73178e18b17d (diff) | |
parent | 42139eb356e3384759ca143ae04d82376346eb4c (diff) |
Merge tag 'ras_for_3.14' of git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp into x86/ras
Pull RAS updates from Borislav Petkov:
* Add the functionality to override error reporting agents as some
machines are sporting a new extended error logging capability which, if
done properly in the BIOS, makes a corresponding EDAC module redundant,
from Gong Chen.
* PCIe AER tracepoint severity levels fix, from Rui Wang.
* Error path correction for the mce device init, from Levente Kurusa.
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'drivers/edac')
-rw-r--r-- | drivers/edac/edac_stub.c | 19 | ||||
-rw-r--r-- | drivers/edac/sb_edac.c | 6 |
2 files changed, 24 insertions, 1 deletions
diff --git a/drivers/edac/edac_stub.c b/drivers/edac/edac_stub.c index 351945fa2ecd..9d9e18aefaaa 100644 --- a/drivers/edac/edac_stub.c +++ b/drivers/edac/edac_stub.c | |||
@@ -29,6 +29,25 @@ EXPORT_SYMBOL_GPL(edac_err_assert); | |||
29 | 29 | ||
30 | static atomic_t edac_subsys_valid = ATOMIC_INIT(0); | 30 | static atomic_t edac_subsys_valid = ATOMIC_INIT(0); |
31 | 31 | ||
32 | int edac_report_status = EDAC_REPORTING_ENABLED; | ||
33 | EXPORT_SYMBOL_GPL(edac_report_status); | ||
34 | |||
35 | static int __init edac_report_setup(char *str) | ||
36 | { | ||
37 | if (!str) | ||
38 | return -EINVAL; | ||
39 | |||
40 | if (!strncmp(str, "on", 2)) | ||
41 | set_edac_report_status(EDAC_REPORTING_ENABLED); | ||
42 | else if (!strncmp(str, "off", 3)) | ||
43 | set_edac_report_status(EDAC_REPORTING_DISABLED); | ||
44 | else if (!strncmp(str, "force", 5)) | ||
45 | set_edac_report_status(EDAC_REPORTING_FORCE); | ||
46 | |||
47 | return 0; | ||
48 | } | ||
49 | __setup("edac_report=", edac_report_setup); | ||
50 | |||
32 | /* | 51 | /* |
33 | * called to determine if there is an EDAC driver interested in | 52 | * called to determine if there is an EDAC driver interested in |
34 | * knowing an event (such as NMI) occurred | 53 | * knowing an event (such as NMI) occurred |
diff --git a/drivers/edac/sb_edac.c b/drivers/edac/sb_edac.c index d7f1b57bd3be..1229123ccb59 100644 --- a/drivers/edac/sb_edac.c +++ b/drivers/edac/sb_edac.c | |||
@@ -1829,6 +1829,9 @@ static int sbridge_mce_check_error(struct notifier_block *nb, unsigned long val, | |||
1829 | struct mem_ctl_info *mci; | 1829 | struct mem_ctl_info *mci; |
1830 | struct sbridge_pvt *pvt; | 1830 | struct sbridge_pvt *pvt; |
1831 | 1831 | ||
1832 | if (get_edac_report_status() == EDAC_REPORTING_DISABLED) | ||
1833 | return NOTIFY_DONE; | ||
1834 | |||
1832 | mci = get_mci_for_node_id(mce->socketid); | 1835 | mci = get_mci_for_node_id(mce->socketid); |
1833 | if (!mci) | 1836 | if (!mci) |
1834 | return NOTIFY_BAD; | 1837 | return NOTIFY_BAD; |
@@ -2142,9 +2145,10 @@ static int __init sbridge_init(void) | |||
2142 | opstate_init(); | 2145 | opstate_init(); |
2143 | 2146 | ||
2144 | pci_rc = pci_register_driver(&sbridge_driver); | 2147 | pci_rc = pci_register_driver(&sbridge_driver); |
2145 | |||
2146 | if (pci_rc >= 0) { | 2148 | if (pci_rc >= 0) { |
2147 | mce_register_decode_chain(&sbridge_mce_dec); | 2149 | mce_register_decode_chain(&sbridge_mce_dec); |
2150 | if (get_edac_report_status() == EDAC_REPORTING_DISABLED) | ||
2151 | sbridge_printk(KERN_WARNING, "Loading driver, error reporting disabled.\n"); | ||
2148 | return 0; | 2152 | return 0; |
2149 | } | 2153 | } |
2150 | 2154 | ||