aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/edac
diff options
context:
space:
mode:
authorBorislav Petkov <borislav.petkov@amd.com>2011-08-24 12:44:22 -0400
committerBorislav Petkov <borislav.petkov@amd.com>2011-10-06 06:34:04 -0400
commitb0b07a2bd4fbb6198d4e7142337214eeb77c417a (patch)
tree5beb6c94ff556abaa381a55b94f70e74d98c57a7 /drivers/edac
parent295d8cda2689a74ae88bcece7b4cfe0bf8bf9a91 (diff)
EDAC, MCE, AMD: Simplify NB MCE decoder interface
Drop third nbcfg argument which is old remains and not required anymore. No functionality change. Signed-off-by: Borislav Petkov <borislav.petkov@amd.com>
Diffstat (limited to 'drivers/edac')
-rw-r--r--drivers/edac/amd64_edac.c6
-rw-r--r--drivers/edac/mce_amd.c20
-rw-r--r--drivers/edac/mce_amd.h6
3 files changed, 15 insertions, 17 deletions
diff --git a/drivers/edac/amd64_edac.c b/drivers/edac/amd64_edac.c
index 9a8bebcf6b17..9bf0b6228529 100644
--- a/drivers/edac/amd64_edac.c
+++ b/drivers/edac/amd64_edac.c
@@ -1953,11 +1953,9 @@ static inline void __amd64_decode_bus_error(struct mem_ctl_info *mci,
1953 amd64_handle_ue(mci, m); 1953 amd64_handle_ue(mci, m);
1954} 1954}
1955 1955
1956void amd64_decode_bus_error(int node_id, struct mce *m, u32 nbcfg) 1956void amd64_decode_bus_error(int node_id, struct mce *m)
1957{ 1957{
1958 struct mem_ctl_info *mci = mcis[node_id]; 1958 __amd64_decode_bus_error(mcis[node_id], m);
1959
1960 __amd64_decode_bus_error(mci, m);
1961} 1959}
1962 1960
1963/* 1961/*
diff --git a/drivers/edac/mce_amd.c b/drivers/edac/mce_amd.c
index b81c5da542c0..d0864d9c38ad 100644
--- a/drivers/edac/mce_amd.c
+++ b/drivers/edac/mce_amd.c
@@ -9,7 +9,7 @@ static u8 xec_mask = 0xf;
9static u8 nb_err_cpumask = 0xf; 9static u8 nb_err_cpumask = 0xf;
10 10
11static bool report_gart_errors; 11static bool report_gart_errors;
12static void (*nb_bus_decoder)(int node_id, struct mce *m, u32 nbcfg); 12static void (*nb_bus_decoder)(int node_id, struct mce *m);
13 13
14void amd_report_gart_errors(bool v) 14void amd_report_gart_errors(bool v)
15{ 15{
@@ -17,13 +17,13 @@ void amd_report_gart_errors(bool v)
17} 17}
18EXPORT_SYMBOL_GPL(amd_report_gart_errors); 18EXPORT_SYMBOL_GPL(amd_report_gart_errors);
19 19
20void amd_register_ecc_decoder(void (*f)(int, struct mce *, u32)) 20void amd_register_ecc_decoder(void (*f)(int, struct mce *))
21{ 21{
22 nb_bus_decoder = f; 22 nb_bus_decoder = f;
23} 23}
24EXPORT_SYMBOL_GPL(amd_register_ecc_decoder); 24EXPORT_SYMBOL_GPL(amd_register_ecc_decoder);
25 25
26void amd_unregister_ecc_decoder(void (*f)(int, struct mce *, u32)) 26void amd_unregister_ecc_decoder(void (*f)(int, struct mce *))
27{ 27{
28 if (nb_bus_decoder) { 28 if (nb_bus_decoder) {
29 WARN_ON(nb_bus_decoder != f); 29 WARN_ON(nb_bus_decoder != f);
@@ -592,11 +592,12 @@ static bool nb_noop_mce(u16 ec, u8 xec)
592 return false; 592 return false;
593} 593}
594 594
595void amd_decode_nb_mce(int node_id, struct mce *m, u32 nbcfg) 595void amd_decode_nb_mce(struct mce *m)
596{ 596{
597 struct cpuinfo_x86 *c = &boot_cpu_data; 597 struct cpuinfo_x86 *c = &boot_cpu_data;
598 u16 ec = EC(m->status); 598 int node_id = amd_get_nb_id(m->extcpu);
599 u8 xec = XEC(m->status, 0x1f); 599 u16 ec = EC(m->status);
600 u8 xec = XEC(m->status, 0x1f);
600 601
601 pr_emerg(HW_ERR "Northbridge Error (node %d): ", node_id); 602 pr_emerg(HW_ERR "Northbridge Error (node %d): ", node_id);
602 603
@@ -630,7 +631,7 @@ void amd_decode_nb_mce(int node_id, struct mce *m, u32 nbcfg)
630 631
631 if (c->x86 == 0xf || c->x86 == 0x10 || c->x86 == 0x15) 632 if (c->x86 == 0xf || c->x86 == 0x10 || c->x86 == 0x15)
632 if ((xec == 0x8 || xec == 0x0) && nb_bus_decoder) 633 if ((xec == 0x8 || xec == 0x0) && nb_bus_decoder)
633 nb_bus_decoder(node_id, m, nbcfg); 634 nb_bus_decoder(node_id, m);
634 635
635 return; 636 return;
636 637
@@ -746,7 +747,7 @@ int amd_decode_mce(struct notifier_block *nb, unsigned long val, void *data)
746{ 747{
747 struct mce *m = (struct mce *)data; 748 struct mce *m = (struct mce *)data;
748 struct cpuinfo_x86 *c = &boot_cpu_data; 749 struct cpuinfo_x86 *c = &boot_cpu_data;
749 int node, ecc; 750 int ecc;
750 751
751 if (amd_filter_mce(m)) 752 if (amd_filter_mce(m))
752 return NOTIFY_STOP; 753 return NOTIFY_STOP;
@@ -795,8 +796,7 @@ int amd_decode_mce(struct notifier_block *nb, unsigned long val, void *data)
795 break; 796 break;
796 797
797 case 4: 798 case 4:
798 node = amd_get_nb_id(m->extcpu); 799 amd_decode_nb_mce(m);
799 amd_decode_nb_mce(node, m, 0);
800 break; 800 break;
801 801
802 case 5: 802 case 5:
diff --git a/drivers/edac/mce_amd.h b/drivers/edac/mce_amd.h
index 795a3206acf5..0106747e240c 100644
--- a/drivers/edac/mce_amd.h
+++ b/drivers/edac/mce_amd.h
@@ -86,9 +86,9 @@ struct amd_decoder_ops {
86}; 86};
87 87
88void amd_report_gart_errors(bool); 88void amd_report_gart_errors(bool);
89void amd_register_ecc_decoder(void (*f)(int, struct mce *, u32)); 89void amd_register_ecc_decoder(void (*f)(int, struct mce *));
90void amd_unregister_ecc_decoder(void (*f)(int, struct mce *, u32)); 90void amd_unregister_ecc_decoder(void (*f)(int, struct mce *));
91void amd_decode_nb_mce(int, struct mce *, u32); 91void amd_decode_nb_mce(struct mce *);
92int amd_decode_mce(struct notifier_block *nb, unsigned long val, void *data); 92int amd_decode_mce(struct notifier_block *nb, unsigned long val, void *data);
93 93
94#endif /* _EDAC_MCE_AMD_H */ 94#endif /* _EDAC_MCE_AMD_H */