diff --git a/SOURCES/0051-rasdaemon-add-support-to-match-the-machine-by-system.patch b/SOURCES/0051-rasdaemon-add-support-to-match-the-machine-by-system.patch new file mode 100644 index 0000000..7237eed --- /dev/null +++ b/SOURCES/0051-rasdaemon-add-support-to-match-the-machine-by-system.patch @@ -0,0 +1,261 @@ +From 3a38f8e66a2aa5c477cea152e1acc9a781834b83 Mon Sep 17 00:00:00 2001 +From: Aristeu Rozanski +Date: Mon, 1 Jun 2015 17:04:00 -0300 +Subject: [PATCH 11/13] rasdaemon: add support to match the machine by system's + product name + +In some cases the motherboard names will change but the mapping won't +across a line of products. This patch adds support for "Product:" to be +specified in the label files instead of Model:. + +An example: + Vendor: Dell Inc. + Product: PowerEdge R610 + DIMM_A1: 0.0.0; DIMM_A2: 0.0.1; DIMM_A3: 0.0.2; + DIMM_A4: 0.1.0; DIMM_A5: 0.1.1; DIMM_A6: 0.1.2; + + DIMM_B1: 1.0.0; DIMM_B2: 1.0.1; DIMM_B3: 1.0.2; + DIMM_B4: 1.1.0; DIMM_B5: 1.1.1; DIMM_B6: 1.1.2; + +Would match all 'PowerEdge R610' machines. + +Signed-off-by: Aristeu Rozanski +Signed-off-by: Mauro Carvalho Chehab +--- + util/ras-mc-ctl.in | 127 +++++++++++++++++++++++++++++++++++++++++------------ + 1 file changed, 98 insertions(+), 29 deletions(-) + +diff --git a/util/ras-mc-ctl.in b/util/ras-mc-ctl.in +index 7b6d798..6350f62 100755 +--- a/util/ras-mc-ctl.in ++++ b/util/ras-mc-ctl.in +@@ -288,8 +288,27 @@ sub parse_dimm_nodes + } + } + ++sub guess_product { ++ my $pvendor = undef; ++ my $pname = undef; ++ ++ if (open (VENDOR, "/sys/class/dmi/id/product_vendor")) { ++ $pvendor = ; ++ close VENDOR; ++ chomp($pvendor); ++ } ++ if (open (NAME, "/sys/class/dmi/id/product_name")) { ++ $pname = ; ++ close NAME; ++ chomp($pname); ++ } ++ ++ return ($pvendor, $pname); ++} ++ + sub get_mainboard_info { + my ($vendor, $model); ++ my ($pvendor, $pname); + + if ($conf{opt}{mainboard} && $conf{opt}{mainboard} ne "report") { + ($vendor, $model) = split (/[: ]/, $conf{opt}{mainboard}, 2); +@@ -301,6 +320,15 @@ sub get_mainboard_info { + + $conf{mainboard}{vendor} = $vendor; + $conf{mainboard}{model} = $model; ++ ++ ($pvendor, $pname) = guess_product (); ++ # since product vendor is rare, use mainboard's vendor ++ if ($pvendor) { ++ $conf{mainboard}{product_vendor} = $pvendor; ++ } else { ++ $conf{mainboard}{product_vendor} = $vendor; ++ } ++ $conf{mainboard}{product_name} = $pname if $pname; + } + + sub guess_vendor_model_dmidecode { +@@ -449,10 +477,11 @@ sub guess_dimm_label { + + sub parse_dimm_labels_file + { +- my ($lh, $num_layers, $file) = (@_); ++ my ($lh, $num_layers, $lh_prod, $num_layers_prod, $file) = (@_); + my $line = -1; + my $vendor = ""; + my @models = (); ++ my @products = (); + my $num; + + open (LABELS, "$file") +@@ -469,12 +498,21 @@ sub parse_dimm_labels_file + if (/vendor\s*:\s*(.*\S)\s*/i) { + $vendor = lc $1; + @models = (); ++ @products = (); + $num = 0; + next; + } + if (/(model|board)\s*:\s*(.*)$/i) { + !$vendor && die "$file: line $line: MB model without vendor\n"; + @models = grep { s/\s*(.*)\s*$/$1/ } split(/[,;]+/, $2); ++ @products = (); ++ $num = 0; ++ next; ++ } ++ if (/(product)\s*:\s*(.*)$/i) { ++ !$vendor && die "$file: line $line: product without vendor\n"; ++ @models = (); ++ @products = grep { s/\s*(.*)\s*$/$1/ } split(/[,;]+/, $2); + $num = 0; + next; + } +@@ -513,10 +551,13 @@ sub parse_dimm_labels_file + } + map { $lh->{$vendor}{lc $_}{$mc}{$top}{$mid}{$low} = $label } + @models; ++ map { $lh_prod->{$vendor}{lc $_}{$mc}{$top}{$mid}{$low} = $label } ++ @products; + } + if (!$num) { + $num = $n; + map { $num_layers->{$vendor}{lc $_} = $num } @models; ++ map { $num_layers_prod->{$vendor}{lc $_} = $num } @products; + } elsif ($num != $n) { + die ("Error: Inconsistent number of layers at label db \"$file\"\n"); + } +@@ -531,6 +572,8 @@ sub parse_dimm_labels + { + my %labels = (); + my %num_layers = (); ++ my %labels_prod = (); ++ my %num_layers_prod = (); + + # + # Accrue all DIMM labels from the labels.db file, as +@@ -538,10 +581,10 @@ sub parse_dimm_labels + # + for my $file ($conf{labeldb}, <$conf{labeldir}/*>) { + next unless -r $file; +- parse_dimm_labels_file (\%labels, \%num_layers, $file); ++ parse_dimm_labels_file (\%labels, \%num_layers, \%labels_prod, \%num_layers_prod, $file); + } + +- return (\%labels, \%num_layers); ++ return (\%labels, \%num_layers, \%labels_prod, \%num_layers_prod); + } + + sub read_dimm_label +@@ -598,25 +641,9 @@ sub get_dimm_label_node + } + + +-sub print_dimm_labels ++sub _print_dimm_labels + { +- my $fh = shift || *STDOUT; +- my ($lref, $num_layers) = parse_dimm_labels (); +- my $vendor = lc $conf{mainboard}{vendor}; +- my $model = lc $conf{mainboard}{model}; +- my $format = "%-35s %-20s %-20s\n"; +- +- if (!exists $$lref{$vendor}{$model}) { +- log_error ("No dimm labels for $conf{mainboard}{vendor} " . +- "model $conf{mainboard}{model}\n"); +- return; +- } +- +- my $sysfs_dir = "/sys/devices/system/edac/mc"; +- +- find({wanted => \&parse_dimm_nodes, no_chdir => 1}, $sysfs_dir); +- +- printf $fh $format, "LOCATION", "CONFIGURED LABEL", "SYSFS CONTENTS"; ++ my ($lref, $num_layers, $vendor, $model, $fh, $format) = @_; + + for my $mc (sort keys %{$$lref{$vendor}{$model}}) { + for my $top (sort keys %{$$lref{$vendor}{$model}{$mc}}) { +@@ -631,26 +658,40 @@ sub print_dimm_labels + } + } + print $fh "\n"; +- + } + +-sub register_dimm_labels ++sub print_dimm_labels + { +- my ($lref, $num_layers) = parse_dimm_labels (); ++ my $fh = shift || *STDOUT; ++ my ($lref, $num_layers, $lref_prod, $num_layers_prod) = parse_dimm_labels (); + my $vendor = lc $conf{mainboard}{vendor}; + my $model = lc $conf{mainboard}{model}; +- my $sysfs = "/sys/devices/system/edac/mc"; ++ my $pvendor = lc $conf{mainboard}{product_vendor}; ++ my $pname = lc $conf{mainboard}{product_name}; ++ my $format = "%-35s %-20s %-20s\n"; + +- if (!exists $$lref{$vendor}{$model}) { ++ if (!exists $$lref{$vendor}{$model} && !exists $$lref_prod{$pvendor}{$pname}) { + log_error ("No dimm labels for $conf{mainboard}{vendor} " . +- "model $conf{mainboard}{model}\n"); +- return 0; ++ "model $conf{mainboard}{model}\n"); ++ return; + } ++ + my $sysfs_dir = "/sys/devices/system/edac/mc"; + + find({wanted => \&parse_dimm_nodes, no_chdir => 1}, $sysfs_dir); + +- select (undef, undef, undef, $conf{opt}{delay}); ++ printf $fh $format, "LOCATION", "CONFIGURED LABEL", "SYSFS CONTENTS"; ++ ++ if (exists $$lref{$vendor}{$model}) { ++ _print_dimm_labels($lref, $num_layers, $vendor, $model, $fh, $format); ++ } elsif (exists $$lref_prod{$pvendor}{$pname}) { ++ _print_dimm_labels($lref_prod, $num_layers_prod, $pvendor, $pname, $fh, $format); ++ } ++} ++ ++sub write_dimm_labels ++{ ++ my ($lref, $num_layers, $vendor, $model) = @_; + + for my $mc (sort keys %{$$lref{$vendor}{$model}}) { + for my $top (sort keys %{$$lref{$vendor}{$model}{$mc}}) { +@@ -675,6 +716,34 @@ sub register_dimm_labels + } + } + } ++} ++ ++sub register_dimm_labels ++{ ++ my ($lref, $num_layers, $lref_prod, $num_layers_prod) = parse_dimm_labels (); ++ my $vendor = lc $conf{mainboard}{vendor}; ++ my $model = lc $conf{mainboard}{model}; ++ my $pvendor = lc $conf{mainboard}{product_vendor}; ++ my $pname = lc $conf{mainboard}{product_name}; ++ my $sysfs = "/sys/devices/system/edac/mc"; ++ ++ if (!exists $$lref{$vendor}{$model} && !exists $$lref_prod{$pvendor}{$pname}) { ++ log_error ("No dimm labels for $conf{mainboard}{vendor} " . ++ "model $conf{mainboard}{model}\n"); ++ return 0; ++ } ++ my $sysfs_dir = "/sys/devices/system/edac/mc"; ++ ++ find({wanted => \&parse_dimm_nodes, no_chdir => 1}, $sysfs_dir); ++ ++ select (undef, undef, undef, $conf{opt}{delay}); ++ ++ if (exists $$lref{$vendor}{$model}) { ++ write_dimm_labels($lref, $num_layers, $vendor, $model); ++ } else { ++ write_dimm_labels($lref_prod, $num_layers_prod, $pvendor, $pname); ++ } ++ + return 1; + } + +-- +1.8.3.1 + diff --git a/SOURCES/0052-rasdaemon-add-internal-errors-of-IA32_MC4_STATUS-for.patch b/SOURCES/0052-rasdaemon-add-internal-errors-of-IA32_MC4_STATUS-for.patch new file mode 100644 index 0000000..988de6e --- /dev/null +++ b/SOURCES/0052-rasdaemon-add-internal-errors-of-IA32_MC4_STATUS-for.patch @@ -0,0 +1,48 @@ +From a50a2ae341f8821d71a19d9a3c6ca345e1499e25 Mon Sep 17 00:00:00 2001 +From: Seiichi Ikarashi +Date: Wed, 17 Jun 2015 07:56:57 -0300 +Subject: [PATCH 5/5] rasdaemon: add internal errors of IA32_MC4_STATUS for + Haswell + +Now rasdaemon looks purposely omitting internal errors of +IA32_MC4_STATUS for Haswell-family processors, which are described in +Intel SDM vol3 Table 16-20. I think it's better to show these errors +because mcelog does show them. + +Signed-off-by: Seiichi Ikarashi +Signed-off-by: Mauro Carvalho Chehab +--- + mce-intel-haswell.c | 11 +++++------ + 1 file changed, 5 insertions(+), 6 deletions(-) + +diff --git a/mce-intel-haswell.c b/mce-intel-haswell.c +index 0a817bf..b70e399 100644 +--- a/mce-intel-haswell.c ++++ b/mce-intel-haswell.c +@@ -126,18 +126,17 @@ void hsw_decode_model(struct ras_events *ras, struct mce_event *e) + case 4: + switch (EXTRACT(status, 0, 15) & ~(1ull << 12)) { + case 0x402: case 0x403: +- /* Internal errors */ ++ mce_snprintf(e->mcastatus_msg, "PCU Internal Errors"); + break; + case 0x406: +- /* Intel TXT errors */ ++ mce_snprintf(e->mcastatus_msg, "Intel TXT Errors"); + break; + case 0x407: +- /* Other UBOX Internal errors */ ++ mce_snprintf(e->mcastatus_msg, "Other UBOX Internal Errors"); + break; + } +- if (EXTRACT(status, 16, 19)) +- /* PCU internal error */ +- ; ++ if (EXTRACT(status, 16, 17) && !EXTRACT(status, 18, 19)) ++ mce_snprintf(e->error_msg, "PCU Internal error"); + decode_bitfield(e, status, pcu_mc4); + break; + case 5: +-- +1.8.3.1 + diff --git a/SOURCES/0053-rasdaemon-remove-a-space-from-mcgstatus_msg.patch b/SOURCES/0053-rasdaemon-remove-a-space-from-mcgstatus_msg.patch new file mode 100644 index 0000000..5aaae10 --- /dev/null +++ b/SOURCES/0053-rasdaemon-remove-a-space-from-mcgstatus_msg.patch @@ -0,0 +1,34 @@ +From 45b575b791dbd3d5660a0c08065a9fbcb6e21eb9 Mon Sep 17 00:00:00 2001 +From: Seiichi Ikarashi +Date: Wed, 10 Jun 2015 07:29:03 -0300 +Subject: [PATCH 2/5] rasdaemon: remove a space from mcgstatus_msg + +"ras-mc-ctl --errors" shows an unnecessary space character in the +mcgstatus string of MCE event, like below: + +2 2015-04-04 19:57:22 +0900 error: MC_HA_IMC_RW_BLOCK_ACK_TIMEOUT, mcg mcgstatus= 0, mci Corrected_error, mcgcap=0x07000c16, status=0x8000000067000e0b, walltime=0x555da140, cpu=0x00000001, cpuid=0x000306f3, apicid=0x00000002, bank=0x00000004 + +Let's remove it. + +Signed-off-by: Seiichi Ikarashi +Signed-off-by: Mauro Carvalho Chehab +--- + mce-intel.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/mce-intel.c b/mce-intel.c +index 3503c6a..77b929b 100644 +--- a/mce-intel.c ++++ b/mce-intel.c +@@ -176,7 +176,7 @@ static void decode_mcg(struct mce_event *e) + { + uint64_t mcgstatus = e->mcgstatus; + +- mce_snprintf(e->mcgstatus_msg, "mcgstatus= %lld", ++ mce_snprintf(e->mcgstatus_msg, "mcgstatus=%lld", + (long long)e->mcgstatus); + + if (mcgstatus & MCG_STATUS_RIPV) +-- +1.8.3.1 + diff --git a/SOURCES/0054-rasdaemon-unnecessary-comma-for-empty-mc_location-st.patch b/SOURCES/0054-rasdaemon-unnecessary-comma-for-empty-mc_location-st.patch new file mode 100644 index 0000000..958874d --- /dev/null +++ b/SOURCES/0054-rasdaemon-unnecessary-comma-for-empty-mc_location-st.patch @@ -0,0 +1,36 @@ +From 349da4c3d63ec6dceef66a405561984561d31582 Mon Sep 17 00:00:00 2001 +From: Seiichi Ikarashi +Date: Wed, 10 Jun 2015 20:49:55 -0300 +Subject: [PATCH 3/5] rasdaemon: unnecessary comma for empty mc_location string + +Into the /var/log/messages, rasdaemon sometimes prints an unnecessary +comma ", " between mca= and cpu_type= like below: + +Jun 9 02:44:39 localhost rasdaemon: <...>-4585 [1638893312] 1031.109000: mce_record: 2015-06-08 10:07:28 +0900 bank=3, status= 9c0000000000017a, mci=Corrected_error Error_enabled, mca=Generic CACHE Level-2 Eviction Error, , cpu_type= Intel Xeon v3 (Haswell) EP/EX, cpu= 1, socketid= 0, misc= 4004000000000080, addr= 204fffffff, mcgstatus= 0, mcgcap= 7000c16, apicid= 2 + +That's the comma for mc_location which is printed even if mc_location is +empty due to a wrong if condition. + +Signed-off-by: Seiichi Ikarashi +Acked-by: Aristeu Rozanski +Signed-off-by: Mauro Carvalho Chehab +--- + ras-mce-handler.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/ras-mce-handler.c b/ras-mce-handler.c +index fb6db8a..07252a0 100644 +--- a/ras-mce-handler.c ++++ b/ras-mce-handler.c +@@ -278,7 +278,7 @@ static void report_mce_event(struct ras_events *ras, + if (*e->user_action) + trace_seq_printf(s, " %s", e->user_action); + +- if (e->mc_location) ++ if (*e->mc_location) + trace_seq_printf(s, ", %s", e->mc_location); + + #if 0 +-- +1.8.3.1 + diff --git a/SOURCES/0055-rasdaemon-use-MCA-error-msg-as-error_msg.patch b/SOURCES/0055-rasdaemon-use-MCA-error-msg-as-error_msg.patch new file mode 100644 index 0000000..1fbff68 --- /dev/null +++ b/SOURCES/0055-rasdaemon-use-MCA-error-msg-as-error_msg.patch @@ -0,0 +1,57 @@ +From 9136d7422a6b53c50a920f3dd2539bf7fcd4fdf5 Mon Sep 17 00:00:00 2001 +From: Seiichi Ikarashi +Date: Fri, 12 Jun 2015 06:35:37 -0300 +Subject: [PATCH 4/5] rasdaemon: use MCA error msg as error_msg + +In the case of machine-checks which do not have a model-specific MCA +error code but have an architectural code only, mce_event.error_msg +becomes empty then you don't know what happened. + +(snip) +MCE records summary: + 1 errors + ^ + empty! + +(snip) +MCE events: +1 2015-06-12 00:21:46 +0900 error: , mcg mcgstatus= 0, mci Corrected_error + ^ + empty! + +Error_enabled, mcgcap=0x07000c16, status=0x9c0000000000017a, addr=0x204fffffff, misc=0x4004000000000080, walltime=0x557b0db2, cpu=0x00000001, cpuid=0x000306f3, apicid=0x00000002, bank=0x00000003 + +In such a case, let's use the content of mcastatus_msg as error_msg +instead. + +(snip) +MCE records summary: + 1 Generic CACHE Level-2 Eviction Error errors +(snip) +MCE events: +1 2015-06-12 02:39:04 +0900 error: Generic CACHE Level-2 Eviction Error, mcg mcgstatus= 0, mci Corrected_error Error_enabled, mcgcap=0x07000c16, status=0x9c0000000000017a, addr=0x204fffffff, misc=0x4004000000000080, walltime=0x557b1f22, cpu=0x00000001, cpuid=0x000306f3, apicid=0x00000002, bank=0x00000003 + +Signed-off-by: Seiichi Ikarashi +Acked-by: Aristeu Rozanski +Signed-off-by: Mauro Carvalho Chehab +--- + ras-mce-handler.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/ras-mce-handler.c b/ras-mce-handler.c +index 07252a0..3976f90 100644 +--- a/ras-mce-handler.c ++++ b/ras-mce-handler.c +@@ -411,6 +411,9 @@ int ras_mce_event_handler(struct trace_seq *s, + if (rc) + return rc; + ++ if (!*e.error_msg && *e.mcastatus_msg) ++ mce_snprintf(e.error_msg, "%s", e.mcastatus_msg); ++ + report_mce_event(ras, record, s, &e); + + #ifdef HAVE_SQLITE3 +-- +1.8.3.1 + diff --git a/SOURCES/0056-x86-rasdaemon-Add-support-to-log-Local-Machine-Check.patch b/SOURCES/0056-x86-rasdaemon-Add-support-to-log-Local-Machine-Check.patch new file mode 100644 index 0000000..ee1163a --- /dev/null +++ b/SOURCES/0056-x86-rasdaemon-Add-support-to-log-Local-Machine-Check.patch @@ -0,0 +1,50 @@ +From fa6260eb1304c6c829af177ab4aa1937db36fab1 Mon Sep 17 00:00:00 2001 +From: Ashok Raj +Date: Fri, 5 Jun 2015 13:32:47 -0300 +Subject: [PATCH 1/5] x86, rasdaemon: Add support to log Local Machine Check + Exception (LMCE) + +Local Machine Check Exception allows certain errors to be signaled to +only the affected logical processor. This change captures them for +rasdaemon. + +log:Changes to rasdaemon to support new architectural changes to MCE + +Changet to rasdaemon to support new architectural extentions in Intel +CPUs. + +Signed-off-by: Ashok Raj +Signed-off-by: Mauro Carvalho Chehab +--- + mce-intel.c | 2 ++ + ras-mce-handler.h | 1 + + 2 files changed, 3 insertions(+) + +diff --git a/mce-intel.c b/mce-intel.c +index 3684602..3503c6a 100644 +--- a/mce-intel.c ++++ b/mce-intel.c +@@ -185,6 +185,8 @@ static void decode_mcg(struct mce_event *e) + mce_snprintf(e->mcgstatus_msg, "EIPV"); + if (mcgstatus & MCG_STATUS_MCIP) + mce_snprintf(e->mcgstatus_msg, "MCIP"); ++ if (mcgstatus & MCG_STATUS_LMCE) ++ mce_snprintf(e->mcgstatus_msg, "LMCE"); + } + + static void bank_name(struct mce_event *e) +diff --git a/ras-mce-handler.h b/ras-mce-handler.h +index 28aad00..13b8f52 100644 +--- a/ras-mce-handler.h ++++ b/ras-mce-handler.h +@@ -139,6 +139,7 @@ void tulsa_decode_model(struct mce_event *e); + #define MCG_STATUS_RIPV (1ULL<<0) /* restart ip valid */ + #define MCG_STATUS_EIPV (1ULL<<1) /* eip points to correct instruction */ + #define MCG_STATUS_MCIP (1ULL<<2) /* machine check in progress */ ++#define MCG_STATUS_LMCE (1ULL<<3) /* local machine check signaled */ + + /* Those functions are defined on per-cpu vendor C files */ + int parse_intel_event(struct ras_events *ras, struct mce_event *e); +-- +1.8.3.1 + diff --git a/SOURCES/0057-rasdaemon-add-support-for-haswell-ex.patch b/SOURCES/0057-rasdaemon-add-support-for-haswell-ex.patch new file mode 100644 index 0000000..9ad3c0f --- /dev/null +++ b/SOURCES/0057-rasdaemon-add-support-for-haswell-ex.patch @@ -0,0 +1,22 @@ +Based on mcelog code. + +Signed-off-by: Seiichi Ikarashi + +--- + ras-mce-handler.c | 3 ++- + 1 files changed, 2 insertions(+), 1 deletions(-) + +diff --git a/ras-mce-handler.c b/ras-mce-handler.c +index 3976f90..23f2488 100644 +--- a/ras-mce-handler.c ++++ b/ras-mce-handler.c +@@ -90,7 +90,8 @@ static enum cputype select_intel_cputype(struct ras_events *ras) + return CPU_HASWELL; + else if (mce->model == 0x3f) + return CPU_HASWELL_EPEX; +- else if (mce->model == 0x3d) ++ else if (mce->model == 0x3d || mce->model == 0x4f || ++ mce->model == 0x56) + return CPU_BROADWELL; + else if (mce->model == 0x57) + return CPU_KNIGHTS_LANDING; diff --git a/SPECS/rasdaemon.spec b/SPECS/rasdaemon.spec index c070011..1bb8756 100644 --- a/SPECS/rasdaemon.spec +++ b/SPECS/rasdaemon.spec @@ -2,7 +2,7 @@ Name: rasdaemon Version: 0.4.1 -Release: 14.1%{?dist} +Release: 20%{?dist} Summary: Utility to receive RAS error tracings Group: Applications/System License: GPLv2 @@ -14,7 +14,7 @@ BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: autoconf, automake, gettext-devel, libtool, sqlite-devel Requires: hwdata, perl-DBD-SQLite %ifnarch %{arm} -%ifnarch ppc64le +%ifnarch %{power64} Requires: dmidecode %endif %endif @@ -63,7 +63,13 @@ Patch37: 0047-rasdaemon-properly-pring-message-strings-in-decode_b.patch Patch38: 0048-rasdaemon-add-missing-semicolon-in-hsw_decode_model.patch Patch39: 0049-rasdaemon-enable-IMC-status-usage-for-Haswell-E.patch Patch40: 0050-rasdaemon-make-sure-the-error-is-valid-before-handli.patch -#Patch41: 0051-rasdaemon-add-support-to-match-the-machine-by-system.patch +Patch41: 0051-rasdaemon-add-support-to-match-the-machine-by-system.patch +Patch42: 0052-rasdaemon-add-internal-errors-of-IA32_MC4_STATUS-for.patch +Patch43: 0053-rasdaemon-remove-a-space-from-mcgstatus_msg.patch +Patch44: 0054-rasdaemon-unnecessary-comma-for-empty-mc_location-st.patch +Patch45: 0055-rasdaemon-use-MCA-error-msg-as-error_msg.patch +Patch46: 0056-x86-rasdaemon-Add-support-to-log-Local-Machine-Check.patch +Patch47: 0057-rasdaemon-add-support-for-haswell-ex.patch %description @@ -118,7 +124,13 @@ an utility for reporting current error counts from the EDAC sysfs files. %patch38 -p1 %patch39 -p1 %patch40 -p1 -#%patch41 -p1 +%patch41 -p1 +%patch42 -p1 +%patch43 -p1 +%patch44 -p1 +%patch45 -p1 +%patch46 -p1 +%patch47 -p1 %build autoreconf -vfi @@ -146,8 +158,23 @@ rm -rf %{buildroot} %{_sysconfdir}/ras/dimm_labels.d %changelog -* Wed Jun 03 2015 Aristeu Rozanski 0.4.1-14.1.el7 -- add support to Haswell and newer processors [1230243] +* Wed Sep 30 2015 Aristeu Rozanski 0.4.1-20.el7 +- add support for Haswell EP/EX [1267137] + +* Mon Jul 27 2015 Aristeu Rozanski 0.4.1-19.el7 +- pull latest fixes by Seiichi Ikarashi from upstream [1243941] + +* Mon Jul 27 2015 Aristeu Rozanski 0.4.1-18.el7 +- don't depend on dmidecode on ppc64, fix typo [1244593] + +* Wed Jul 22 2015 Aristeu Rozanski 0.4.1-17.el7 +- don't depend on dmidecode on ppc64 [1244593] + +* Wed Jul 08 2015 Aristeu Rozanski 0.4.1-16.el7 +- allow label files to specify by system product name [1168340] + +* Wed Jun 03 2015 Aristeu Rozanski 0.4.1-15.el7 +- add support to Haswell and newer processors [1221912] * Tue Dec 16 2014 Aristeu Rozanski 0.4.1-14.el7 - properly install the labels so it can be packaged [1073090]