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 <aris@redhat.com>
+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 <arozansk@redhat.com>
+Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
+---
+ 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 = <VENDOR>;
++        close VENDOR;
++        chomp($pvendor);
++    }
++    if (open (NAME, "/sys/class/dmi/id/product_name")) {
++        $pname = <NAME>;
++        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 <s.ikarashi@jp.fujitsu.com>
+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 <s.ikarashi@jp.fujitsu.com>
+Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
+---
+ 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 <s.ikarashi@jp.fujitsu.com>
+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 <s.ikarashi@jp.fujitsu.com>
+Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
+---
+ 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 <s.ikarashi@jp.fujitsu.com>
+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 <s.ikarashi@jp.fujitsu.com>
+Acked-by: Aristeu Rozanski <aris@redhat.com>
+Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
+---
+ 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 <s.ikarashi@jp.fujitsu.com>
+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 <s.ikarashi@jp.fujitsu.com>
+Acked-by: Aristeu Rozanski <aris@redhat.com>
+Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
+---
+ 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 <ashok.raj@intel.com>
+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 <ashok.raj@intel.com>
+Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
+---
+ 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 <s.ikarashi@jp.fujitsu.com>
+
+---
+ 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 <aris@redhat.com> 0.4.1-14.1.el7
-- add support to Haswell and newer processors [1230243]
+* Wed Sep 30 2015 Aristeu Rozanski <aris@redhat.com> 0.4.1-20.el7
+- add support for Haswell EP/EX [1267137]
+
+* Mon Jul 27 2015 Aristeu Rozanski <aris@redhat.com> 0.4.1-19.el7
+- pull latest fixes by Seiichi Ikarashi from upstream [1243941]
+
+* Mon Jul 27 2015 Aristeu Rozanski <aris@redhat.com> 0.4.1-18.el7
+- don't depend on dmidecode on ppc64, fix typo [1244593]
+
+* Wed Jul 22 2015 Aristeu Rozanski <aris@redhat.com> 0.4.1-17.el7
+- don't depend on dmidecode on ppc64 [1244593]
+
+* Wed Jul 08 2015 Aristeu Rozanski <aris@redhat.com> 0.4.1-16.el7
+- allow label files to specify by system product name [1168340]
+
+* Wed Jun 03 2015 Aristeu Rozanski <aris@redhat.com> 0.4.1-15.el7
+- add support to Haswell and newer processors [1221912]
 
 * Tue Dec 16 2014 Aristeu Rozanski <aris@redhat.com> 0.4.1-14.el7
 - properly install the labels so it can be packaged [1073090]