diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2014-04-03 20:07:17 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-04-03 20:07:17 -0400 |
commit | 4a4389abdd9822fdf3cc2ac6ed87eb811fd43acc (patch) | |
tree | fd0da7010c1fe5878cd8b52eb6b01ba858e2f79f /drivers/edac/sb_edac.c | |
parent | 73f10274a6c8699738246ed2e1d704dc52702565 (diff) | |
parent | 49856dc973cd95d85ac1cab6c70410d8331e5c04 (diff) |
Merge branch 'linux_next' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-edac
Pull sb_edac patches from Mauro Carvalho Chehab:
"A couple sb_edac driver improvements, cleaning a little bit the amount
of data sent to dmesg, and fixing one error message"
* 'linux_next' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-edac:
sb_edac: mark MCE messages as KERN_DEBUG
sb_edac: use "event" instead of "exception" when MC wasnt signaled
Diffstat (limited to 'drivers/edac/sb_edac.c')
-rw-r--r-- | drivers/edac/sb_edac.c | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/drivers/edac/sb_edac.c b/drivers/edac/sb_edac.c index 347c7a1c2725..c460ba5d65a8 100644 --- a/drivers/edac/sb_edac.c +++ b/drivers/edac/sb_edac.c | |||
@@ -1828,6 +1828,7 @@ static int sbridge_mce_check_error(struct notifier_block *nb, unsigned long val, | |||
1828 | struct mce *mce = (struct mce *)data; | 1828 | struct mce *mce = (struct mce *)data; |
1829 | struct mem_ctl_info *mci; | 1829 | struct mem_ctl_info *mci; |
1830 | struct sbridge_pvt *pvt; | 1830 | struct sbridge_pvt *pvt; |
1831 | char *type; | ||
1831 | 1832 | ||
1832 | if (get_edac_report_status() == EDAC_REPORTING_DISABLED) | 1833 | if (get_edac_report_status() == EDAC_REPORTING_DISABLED) |
1833 | return NOTIFY_DONE; | 1834 | return NOTIFY_DONE; |
@@ -1846,17 +1847,23 @@ static int sbridge_mce_check_error(struct notifier_block *nb, unsigned long val, | |||
1846 | if ((mce->status & 0xefff) >> 7 != 1) | 1847 | if ((mce->status & 0xefff) >> 7 != 1) |
1847 | return NOTIFY_DONE; | 1848 | return NOTIFY_DONE; |
1848 | 1849 | ||
1849 | printk("sbridge: HANDLING MCE MEMORY ERROR\n"); | 1850 | if (mce->mcgstatus & MCG_STATUS_MCIP) |
1851 | type = "Exception"; | ||
1852 | else | ||
1853 | type = "Event"; | ||
1854 | |||
1855 | sbridge_mc_printk(mci, KERN_DEBUG, "HANDLING MCE MEMORY ERROR\n"); | ||
1850 | 1856 | ||
1851 | printk("CPU %d: Machine Check Exception: %Lx Bank %d: %016Lx\n", | 1857 | sbridge_mc_printk(mci, KERN_DEBUG, "CPU %d: Machine Check %s: %Lx " |
1852 | mce->extcpu, mce->mcgstatus, mce->bank, mce->status); | 1858 | "Bank %d: %016Lx\n", mce->extcpu, type, |
1853 | printk("TSC %llx ", mce->tsc); | 1859 | mce->mcgstatus, mce->bank, mce->status); |
1854 | printk("ADDR %llx ", mce->addr); | 1860 | sbridge_mc_printk(mci, KERN_DEBUG, "TSC %llx ", mce->tsc); |
1855 | printk("MISC %llx ", mce->misc); | 1861 | sbridge_mc_printk(mci, KERN_DEBUG, "ADDR %llx ", mce->addr); |
1862 | sbridge_mc_printk(mci, KERN_DEBUG, "MISC %llx ", mce->misc); | ||
1856 | 1863 | ||
1857 | printk("PROCESSOR %u:%x TIME %llu SOCKET %u APIC %x\n", | 1864 | sbridge_mc_printk(mci, KERN_DEBUG, "PROCESSOR %u:%x TIME %llu SOCKET " |
1858 | mce->cpuvendor, mce->cpuid, mce->time, | 1865 | "%u APIC %x\n", mce->cpuvendor, mce->cpuid, |
1859 | mce->socketid, mce->apicid); | 1866 | mce->time, mce->socketid, mce->apicid); |
1860 | 1867 | ||
1861 | /* Only handle if it is the right mc controller */ | 1868 | /* Only handle if it is the right mc controller */ |
1862 | if (cpu_data(mce->cpu).phys_proc_id != pvt->sbridge_dev->mc) | 1869 | if (cpu_data(mce->cpu).phys_proc_id != pvt->sbridge_dev->mc) |