diff options
author | Mauro Carvalho Chehab <mchehab@redhat.com> | 2012-06-04 12:27:43 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2012-06-12 11:15:47 -0400 |
commit | 9eb07a7fb8a90ee39fa9d5489afc0330cfcfbea7 (patch) | |
tree | 2d034ec31225f2b82267ab3e081c4e8263e7b85f /drivers/edac/amd64_edac.c | |
parent | 03f7eae80f4b913929be84e0c883ee98196fd6ff (diff) |
edac: edac_mc_handle_error(): add an error_count parameter
In order to avoid loosing error events, it is desirable to group
error events together and generate a single trace for several identical
errors.
The trace API already allows reporting multiple errors. Change the
handle_error function to also allow that.
The changes at the drivers were made by this small script:
$file .=$_ while (<>);
$file =~ s/(edac_mc_handle_error)\s*\(([^\,]+)\,([^\,]+)\,/$1($2,$3, 1,/g;
print $file;
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/edac/amd64_edac.c')
-rw-r--r-- | drivers/edac/amd64_edac.c | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/drivers/edac/amd64_edac.c b/drivers/edac/amd64_edac.c index 6231cbe6e7c1..5a297a26211d 100644 --- a/drivers/edac/amd64_edac.c +++ b/drivers/edac/amd64_edac.c | |||
@@ -1046,7 +1046,7 @@ static void k8_map_sysaddr_to_csrow(struct mem_ctl_info *mci, u64 sys_addr, | |||
1046 | if (!src_mci) { | 1046 | if (!src_mci) { |
1047 | amd64_mc_err(mci, "failed to map error addr 0x%lx to a node\n", | 1047 | amd64_mc_err(mci, "failed to map error addr 0x%lx to a node\n", |
1048 | (unsigned long)sys_addr); | 1048 | (unsigned long)sys_addr); |
1049 | edac_mc_handle_error(HW_EVENT_ERR_CORRECTED, mci, | 1049 | edac_mc_handle_error(HW_EVENT_ERR_CORRECTED, mci, 1, |
1050 | page, offset, syndrome, | 1050 | page, offset, syndrome, |
1051 | -1, -1, -1, | 1051 | -1, -1, -1, |
1052 | "failed to map error addr to a node", | 1052 | "failed to map error addr to a node", |
@@ -1057,7 +1057,7 @@ static void k8_map_sysaddr_to_csrow(struct mem_ctl_info *mci, u64 sys_addr, | |||
1057 | /* Now map the sys_addr to a CSROW */ | 1057 | /* Now map the sys_addr to a CSROW */ |
1058 | csrow = sys_addr_to_csrow(src_mci, sys_addr); | 1058 | csrow = sys_addr_to_csrow(src_mci, sys_addr); |
1059 | if (csrow < 0) { | 1059 | if (csrow < 0) { |
1060 | edac_mc_handle_error(HW_EVENT_ERR_CORRECTED, mci, | 1060 | edac_mc_handle_error(HW_EVENT_ERR_CORRECTED, mci, 1, |
1061 | page, offset, syndrome, | 1061 | page, offset, syndrome, |
1062 | -1, -1, -1, | 1062 | -1, -1, -1, |
1063 | "failed to map error addr to a csrow", | 1063 | "failed to map error addr to a csrow", |
@@ -1077,7 +1077,7 @@ static void k8_map_sysaddr_to_csrow(struct mem_ctl_info *mci, u64 sys_addr, | |||
1077 | amd64_mc_warn(src_mci, "unknown syndrome 0x%04x - " | 1077 | amd64_mc_warn(src_mci, "unknown syndrome 0x%04x - " |
1078 | "possible error reporting race\n", | 1078 | "possible error reporting race\n", |
1079 | syndrome); | 1079 | syndrome); |
1080 | edac_mc_handle_error(HW_EVENT_ERR_CORRECTED, mci, | 1080 | edac_mc_handle_error(HW_EVENT_ERR_CORRECTED, mci, 1, |
1081 | page, offset, syndrome, | 1081 | page, offset, syndrome, |
1082 | csrow, -1, -1, | 1082 | csrow, -1, -1, |
1083 | "unknown syndrome - possible error reporting race", | 1083 | "unknown syndrome - possible error reporting race", |
@@ -1096,7 +1096,7 @@ static void k8_map_sysaddr_to_csrow(struct mem_ctl_info *mci, u64 sys_addr, | |||
1096 | channel = ((sys_addr & BIT(3)) != 0); | 1096 | channel = ((sys_addr & BIT(3)) != 0); |
1097 | } | 1097 | } |
1098 | 1098 | ||
1099 | edac_mc_handle_error(HW_EVENT_ERR_CORRECTED, src_mci, | 1099 | edac_mc_handle_error(HW_EVENT_ERR_CORRECTED, src_mci, 1, |
1100 | page, offset, syndrome, | 1100 | page, offset, syndrome, |
1101 | csrow, channel, -1, | 1101 | csrow, channel, -1, |
1102 | "", ""); | 1102 | "", ""); |
@@ -1608,7 +1608,7 @@ static void f1x_map_sysaddr_to_csrow(struct mem_ctl_info *mci, u64 sys_addr, | |||
1608 | csrow = f1x_translate_sysaddr_to_cs(pvt, sys_addr, &nid, &chan); | 1608 | csrow = f1x_translate_sysaddr_to_cs(pvt, sys_addr, &nid, &chan); |
1609 | 1609 | ||
1610 | if (csrow < 0) { | 1610 | if (csrow < 0) { |
1611 | edac_mc_handle_error(HW_EVENT_ERR_CORRECTED, mci, | 1611 | edac_mc_handle_error(HW_EVENT_ERR_CORRECTED, mci, 1, |
1612 | page, offset, syndrome, | 1612 | page, offset, syndrome, |
1613 | -1, -1, -1, | 1613 | -1, -1, -1, |
1614 | "failed to map error addr to a csrow", | 1614 | "failed to map error addr to a csrow", |
@@ -1624,7 +1624,7 @@ static void f1x_map_sysaddr_to_csrow(struct mem_ctl_info *mci, u64 sys_addr, | |||
1624 | if (dct_ganging_enabled(pvt)) | 1624 | if (dct_ganging_enabled(pvt)) |
1625 | chan = get_channel_from_ecc_syndrome(mci, syndrome); | 1625 | chan = get_channel_from_ecc_syndrome(mci, syndrome); |
1626 | 1626 | ||
1627 | edac_mc_handle_error(HW_EVENT_ERR_CORRECTED, mci, | 1627 | edac_mc_handle_error(HW_EVENT_ERR_CORRECTED, mci, 1, |
1628 | page, offset, syndrome, | 1628 | page, offset, syndrome, |
1629 | csrow, chan, -1, | 1629 | csrow, chan, -1, |
1630 | "", ""); | 1630 | "", ""); |
@@ -1909,7 +1909,7 @@ static void amd64_handle_ce(struct mem_ctl_info *mci, struct mce *m) | |||
1909 | /* Ensure that the Error Address is VALID */ | 1909 | /* Ensure that the Error Address is VALID */ |
1910 | if (!(m->status & MCI_STATUS_ADDRV)) { | 1910 | if (!(m->status & MCI_STATUS_ADDRV)) { |
1911 | amd64_mc_err(mci, "HW has no ERROR_ADDRESS available\n"); | 1911 | amd64_mc_err(mci, "HW has no ERROR_ADDRESS available\n"); |
1912 | edac_mc_handle_error(HW_EVENT_ERR_CORRECTED, mci, | 1912 | edac_mc_handle_error(HW_EVENT_ERR_CORRECTED, mci, 1, |
1913 | 0, 0, 0, | 1913 | 0, 0, 0, |
1914 | -1, -1, -1, | 1914 | -1, -1, -1, |
1915 | "HW has no ERROR_ADDRESS available", | 1915 | "HW has no ERROR_ADDRESS available", |
@@ -1937,7 +1937,7 @@ static void amd64_handle_ue(struct mem_ctl_info *mci, struct mce *m) | |||
1937 | 1937 | ||
1938 | if (!(m->status & MCI_STATUS_ADDRV)) { | 1938 | if (!(m->status & MCI_STATUS_ADDRV)) { |
1939 | amd64_mc_err(mci, "HW has no ERROR_ADDRESS available\n"); | 1939 | amd64_mc_err(mci, "HW has no ERROR_ADDRESS available\n"); |
1940 | edac_mc_handle_error(HW_EVENT_ERR_UNCORRECTED, mci, | 1940 | edac_mc_handle_error(HW_EVENT_ERR_UNCORRECTED, mci, 1, |
1941 | 0, 0, 0, | 1941 | 0, 0, 0, |
1942 | -1, -1, -1, | 1942 | -1, -1, -1, |
1943 | "HW has no ERROR_ADDRESS available", | 1943 | "HW has no ERROR_ADDRESS available", |
@@ -1956,7 +1956,7 @@ static void amd64_handle_ue(struct mem_ctl_info *mci, struct mce *m) | |||
1956 | if (!src_mci) { | 1956 | if (!src_mci) { |
1957 | amd64_mc_err(mci, "ERROR ADDRESS (0x%lx) NOT mapped to a MC\n", | 1957 | amd64_mc_err(mci, "ERROR ADDRESS (0x%lx) NOT mapped to a MC\n", |
1958 | (unsigned long)sys_addr); | 1958 | (unsigned long)sys_addr); |
1959 | edac_mc_handle_error(HW_EVENT_ERR_UNCORRECTED, mci, | 1959 | edac_mc_handle_error(HW_EVENT_ERR_UNCORRECTED, mci, 1, |
1960 | page, offset, 0, | 1960 | page, offset, 0, |
1961 | -1, -1, -1, | 1961 | -1, -1, -1, |
1962 | "ERROR ADDRESS NOT mapped to a MC", | 1962 | "ERROR ADDRESS NOT mapped to a MC", |
@@ -1970,13 +1970,13 @@ static void amd64_handle_ue(struct mem_ctl_info *mci, struct mce *m) | |||
1970 | if (csrow < 0) { | 1970 | if (csrow < 0) { |
1971 | amd64_mc_err(mci, "ERROR_ADDRESS (0x%lx) NOT mapped to CS\n", | 1971 | amd64_mc_err(mci, "ERROR_ADDRESS (0x%lx) NOT mapped to CS\n", |
1972 | (unsigned long)sys_addr); | 1972 | (unsigned long)sys_addr); |
1973 | edac_mc_handle_error(HW_EVENT_ERR_UNCORRECTED, mci, | 1973 | edac_mc_handle_error(HW_EVENT_ERR_UNCORRECTED, mci, 1, |
1974 | page, offset, 0, | 1974 | page, offset, 0, |
1975 | -1, -1, -1, | 1975 | -1, -1, -1, |
1976 | "ERROR ADDRESS NOT mapped to CS", | 1976 | "ERROR ADDRESS NOT mapped to CS", |
1977 | ""); | 1977 | ""); |
1978 | } else { | 1978 | } else { |
1979 | edac_mc_handle_error(HW_EVENT_ERR_UNCORRECTED, mci, | 1979 | edac_mc_handle_error(HW_EVENT_ERR_UNCORRECTED, mci, 1, |
1980 | page, offset, 0, | 1980 | page, offset, 0, |
1981 | csrow, -1, -1, | 1981 | csrow, -1, -1, |
1982 | "", ""); | 1982 | "", ""); |