diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2017-02-20 15:47:44 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2017-02-20 15:47:44 -0500 |
| commit | 60c906bab124a0627fba04c9ca5e61bba4747c0c (patch) | |
| tree | 1680b243575b7184d3e06ae739bffbdfc3e3f943 /drivers/edac | |
| parent | 7f4eb0a6d5a76ee054acd7255c05b8d5ca31c5d9 (diff) | |
| parent | 9026cc82b632ed1a859935c82ed8ad65f27f2781 (diff) | |
Merge branch 'ras-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull RAS updates from Ingo Molnar:
"The main changes in this cycle were:
- Assign notifier chain priorities for all RAS related handlers to
make the ordering explicit (Borislav Petkov)
- Improve the AMD MCA banks sysfs output (Yazen Ghannam)
- Various cleanups and restructuring of the x86 RAS code (Borislav
Petkov)"
* 'ras-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
x86/ras, EDAC, acpi: Assign MCE notifier handlers a priority
x86/ras: Get rid of mce_process_work()
EDAC/mce/amd: Dump TSC value
EDAC/mce/amd: Unexport amd_decode_mce()
x86/ras/amd/inj: Change dependency
x86/ras: Flip the TSC-adding logic
x86/ras/amd: Make sysfs names of banks more user-friendly
x86/ras/therm_throt: Do not log a fake MCE for thermal events
x86/ras/inject: Make it depend on X86_LOCAL_APIC=y
Diffstat (limited to 'drivers/edac')
| -rw-r--r-- | drivers/edac/i7core_edac.c | 1 | ||||
| -rw-r--r-- | drivers/edac/mce_amd.c | 8 | ||||
| -rw-r--r-- | drivers/edac/mce_amd.h | 1 | ||||
| -rw-r--r-- | drivers/edac/sb_edac.c | 3 | ||||
| -rw-r--r-- | drivers/edac/skx_edac.c | 3 |
5 files changed, 11 insertions, 5 deletions
diff --git a/drivers/edac/i7core_edac.c b/drivers/edac/i7core_edac.c index 69b5adead0ad..75ad847593b7 100644 --- a/drivers/edac/i7core_edac.c +++ b/drivers/edac/i7core_edac.c | |||
| @@ -1835,6 +1835,7 @@ static int i7core_mce_check_error(struct notifier_block *nb, unsigned long val, | |||
| 1835 | 1835 | ||
| 1836 | static struct notifier_block i7_mce_dec = { | 1836 | static struct notifier_block i7_mce_dec = { |
| 1837 | .notifier_call = i7core_mce_check_error, | 1837 | .notifier_call = i7core_mce_check_error, |
| 1838 | .priority = MCE_PRIO_EDAC, | ||
| 1838 | }; | 1839 | }; |
| 1839 | 1840 | ||
| 1840 | struct memdev_dmi_entry { | 1841 | struct memdev_dmi_entry { |
diff --git a/drivers/edac/mce_amd.c b/drivers/edac/mce_amd.c index 27513dca8009..ba35b7ea3686 100644 --- a/drivers/edac/mce_amd.c +++ b/drivers/edac/mce_amd.c | |||
| @@ -942,7 +942,8 @@ static const char *decode_error_status(struct mce *m) | |||
| 942 | return "Corrected error, no action required."; | 942 | return "Corrected error, no action required."; |
| 943 | } | 943 | } |
| 944 | 944 | ||
| 945 | int amd_decode_mce(struct notifier_block *nb, unsigned long val, void *data) | 945 | static int |
| 946 | amd_decode_mce(struct notifier_block *nb, unsigned long val, void *data) | ||
| 946 | { | 947 | { |
| 947 | struct mce *m = (struct mce *)data; | 948 | struct mce *m = (struct mce *)data; |
| 948 | struct cpuinfo_x86 *c = &cpu_data(m->extcpu); | 949 | struct cpuinfo_x86 *c = &cpu_data(m->extcpu); |
| @@ -1005,6 +1006,9 @@ int amd_decode_mce(struct notifier_block *nb, unsigned long val, void *data) | |||
| 1005 | goto err_code; | 1006 | goto err_code; |
| 1006 | } | 1007 | } |
| 1007 | 1008 | ||
| 1009 | if (m->tsc) | ||
| 1010 | pr_emerg(HW_ERR "TSC: %llu\n", m->tsc); | ||
| 1011 | |||
| 1008 | if (!fam_ops) | 1012 | if (!fam_ops) |
| 1009 | goto err_code; | 1013 | goto err_code; |
| 1010 | 1014 | ||
| @@ -1046,10 +1050,10 @@ int amd_decode_mce(struct notifier_block *nb, unsigned long val, void *data) | |||
| 1046 | 1050 | ||
| 1047 | return NOTIFY_STOP; | 1051 | return NOTIFY_STOP; |
| 1048 | } | 1052 | } |
| 1049 | EXPORT_SYMBOL_GPL(amd_decode_mce); | ||
| 1050 | 1053 | ||
| 1051 | static struct notifier_block amd_mce_dec_nb = { | 1054 | static struct notifier_block amd_mce_dec_nb = { |
| 1052 | .notifier_call = amd_decode_mce, | 1055 | .notifier_call = amd_decode_mce, |
| 1056 | .priority = MCE_PRIO_EDAC, | ||
| 1053 | }; | 1057 | }; |
| 1054 | 1058 | ||
| 1055 | static int __init mce_amd_init(void) | 1059 | static int __init mce_amd_init(void) |
diff --git a/drivers/edac/mce_amd.h b/drivers/edac/mce_amd.h index c2359a1ea6b3..0b6a68673e0e 100644 --- a/drivers/edac/mce_amd.h +++ b/drivers/edac/mce_amd.h | |||
| @@ -79,6 +79,5 @@ struct amd_decoder_ops { | |||
| 79 | void amd_report_gart_errors(bool); | 79 | void amd_report_gart_errors(bool); |
| 80 | void amd_register_ecc_decoder(void (*f)(int, struct mce *)); | 80 | void amd_register_ecc_decoder(void (*f)(int, struct mce *)); |
| 81 | void amd_unregister_ecc_decoder(void (*f)(int, struct mce *)); | 81 | void amd_unregister_ecc_decoder(void (*f)(int, struct mce *)); |
| 82 | int amd_decode_mce(struct notifier_block *nb, unsigned long val, void *data); | ||
| 83 | 82 | ||
| 84 | #endif /* _EDAC_MCE_AMD_H */ | 83 | #endif /* _EDAC_MCE_AMD_H */ |
diff --git a/drivers/edac/sb_edac.c b/drivers/edac/sb_edac.c index 573be9c0ffb8..a65ea44e3b0b 100644 --- a/drivers/edac/sb_edac.c +++ b/drivers/edac/sb_edac.c | |||
| @@ -3117,7 +3117,8 @@ static int sbridge_mce_check_error(struct notifier_block *nb, unsigned long val, | |||
| 3117 | } | 3117 | } |
| 3118 | 3118 | ||
| 3119 | static struct notifier_block sbridge_mce_dec = { | 3119 | static struct notifier_block sbridge_mce_dec = { |
| 3120 | .notifier_call = sbridge_mce_check_error, | 3120 | .notifier_call = sbridge_mce_check_error, |
| 3121 | .priority = MCE_PRIO_EDAC, | ||
| 3121 | }; | 3122 | }; |
| 3122 | 3123 | ||
| 3123 | /**************************************************************************** | 3124 | /**************************************************************************** |
diff --git a/drivers/edac/skx_edac.c b/drivers/edac/skx_edac.c index 79ef675e4d6f..1159dba4671f 100644 --- a/drivers/edac/skx_edac.c +++ b/drivers/edac/skx_edac.c | |||
| @@ -1007,7 +1007,8 @@ static int skx_mce_check_error(struct notifier_block *nb, unsigned long val, | |||
| 1007 | } | 1007 | } |
| 1008 | 1008 | ||
| 1009 | static struct notifier_block skx_mce_dec = { | 1009 | static struct notifier_block skx_mce_dec = { |
| 1010 | .notifier_call = skx_mce_check_error, | 1010 | .notifier_call = skx_mce_check_error, |
| 1011 | .priority = MCE_PRIO_EDAC, | ||
| 1011 | }; | 1012 | }; |
| 1012 | 1013 | ||
| 1013 | static void skx_remove(void) | 1014 | static void skx_remove(void) |
