diff --git a/.gitignore b/.gitignore
index 010e1ba..3a01a08 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,2 @@
-SOURCES/aarch64-port-jdk8u-aarch64-jdk8u102-b14.tar.xz
+SOURCES/aarch64-port-jdk8u-aarch64-jdk8u111-b15.tar.xz
 SOURCES/systemtap-tapset-3.1.0.tar.xz
diff --git a/.java-1.8.0-openjdk.metadata b/.java-1.8.0-openjdk.metadata
index 3ceac4b..a9e203a 100644
--- a/.java-1.8.0-openjdk.metadata
+++ b/.java-1.8.0-openjdk.metadata
@@ -1,2 +1,2 @@
-4c11157a3c6ae41fb5345769a1f5cebd0de50d91 SOURCES/aarch64-port-jdk8u-aarch64-jdk8u102-b14.tar.xz
+c32fc4a2f70f097b8726e396cceaad1bdad461b6 SOURCES/aarch64-port-jdk8u-aarch64-jdk8u111-b15.tar.xz
 44b09844ec2e90db08d3d883993e0dbab0c1988a SOURCES/systemtap-tapset-3.1.0.tar.xz
diff --git a/SOURCES/8157306-pr3121-rh1360863.patch b/SOURCES/8157306-pr3121-rh1360863.patch
deleted file mode 100644
index 8cb69ae..0000000
--- a/SOURCES/8157306-pr3121-rh1360863.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-# HG changeset patch
-# User aph
-# Date 1470065634 -3600
-#      Mon Aug 01 16:33:54 2016 +0100
-# Node ID ee9bffb3bd390b2ad805c7b59d7d2ab8a68a4367
-# Parent  ab3e0bde3c15bbba60de4decabcd70ffef657448
-8157306, PR3121: Random infrequent null pointer exceptions in javac
-Reviewed-by: kvn
-
-diff -r ab3e0bde3c15 -r ee9bffb3bd39 src/share/vm/opto/lcm.cpp
---- openjdk/hotspot/src/share/vm/opto/lcm.cpp	Tue Jul 26 04:42:03 2016 +0100
-+++ openjdk/hotspot/src/share/vm/opto/lcm.cpp	Mon Aug 01 16:33:54 2016 +0100
-@@ -1090,11 +1090,14 @@
-     Block *sb = block->_succs[i];
-     // Clone the entire area; ignoring the edge fixup for now.
-     for( uint j = end; j > beg; j-- ) {
--      // It is safe here to clone a node with anti_dependence
--      // since clones dominate on each path.
-       Node *clone = block->get_node(j-1)->clone();
-       sb->insert_node(clone, 1);
-       map_node_to_block(clone, sb);
-+#ifdef AARCH64
-+      if (clone->needs_anti_dependence_check()) {
-+        insert_anti_dependences(sb, clone);
-+      }
-+#endif
-     }
-   }
- 
diff --git a/SOURCES/always_assumemp.patch b/SOURCES/always_assumemp.patch
new file mode 100644
index 0000000..b0a874d
--- /dev/null
+++ b/SOURCES/always_assumemp.patch
@@ -0,0 +1,12 @@
+diff --git a/src/share/vm/runtime/globals.hpp b/src/share/vm/runtime/globals.hpp
+--- openjdk/hotspot/src/share/vm/runtime/globals.hpp
++++ openjdk/hotspot/src/share/vm/runtime/globals.hpp
+@@ -530,7 +530,7 @@
+   lp64_product(intx, ObjectAlignmentInBytes, 8,                             \
+           "Default object alignment in bytes, 8 is minimum")                \
+                                                                             \
+-  product(bool, AssumeMP, false,                                            \
++  product(bool, AssumeMP, true,                                             \
+           "Instruct the VM to assume multiple processors are available")    \
+                                                                             \
+   /* UseMembar is theoretically a temp flag used for memory barrier         \
diff --git a/SOURCES/corba_typo_fix.patch b/SOURCES/corba_typo_fix.patch
deleted file mode 100644
index 9756a8a..0000000
--- a/SOURCES/corba_typo_fix.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-diff -r 5c43ac1f2a59 src/share/classes/javax/rmi/CORBA/Util.java
---- openjdk.orig/corba/src/share/classes/javax/rmi/CORBA/Util.java	Fri Jul 01 04:11:22 2016 +0100
-+++ openjdk/corba/src/share/classes/javax/rmi/CORBA/Util.java	Mon Jul 04 16:04:39 2016 +0100
-@@ -413,8 +413,18 @@
-                 // check that a serialization permission has been
-                 // set to allow the loading of the Util delegate
-                 // which provides access to custom ValueHandler
--                sm.checkPermission(new SerializablePermission(
--                        "enableCustomValueHanlder"));
-+                try {
-+                    sm.checkPermission(new SerializablePermission(
-+                        "enableCustomValueHandler"));
-+                } catch (SecurityException ex1) {
-+                    // Fallback: See if the permission is mis-spelt
-+                    try {
-+                        sm.checkPermission(new SerializablePermission(
-+                            "enableCustomValueHanlder"));
-+                    } catch (SecurityException ex2) {
-+                        throw ex1; // Throw original exception
-+                    }
-+                }
-             }
-         }
-     }
diff --git a/SOURCES/rh1367357.patch b/SOURCES/rh1367357.patch
new file mode 100644
index 0000000..254be99
--- /dev/null
+++ b/SOURCES/rh1367357.patch
@@ -0,0 +1,11 @@
+diff --git a/src/share/native/sun/java2d/cmm/lcms/cmstypes.c b/src/share/native/sun/java2d/cmm/lcms/cmstypes.c
+--- openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/cmstypes.c
++++ openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/cmstypes.c
+@@ -1484,6 +1484,7 @@
+ 
+         // Check for overflow
+         if (Offset < (SizeOfHeader + 8)) goto Error;
++        if ((Offset + Len) > SizeOfTag + 8) goto Error;
+ 
+         // True begin of the string
+         BeginOfThisString = Offset - SizeOfHeader - 8;
diff --git a/SPECS/java-1.8.0-openjdk.spec b/SPECS/java-1.8.0-openjdk.spec
index 0af647e..ab1e0ea 100644
--- a/SPECS/java-1.8.0-openjdk.spec
+++ b/SPECS/java-1.8.0-openjdk.spec
@@ -20,8 +20,15 @@
 %global build_loop1 %{nil}
 %endif
 
-# by default we build debug build during main build only on intel arches
-%ifarch %{ix86} x86_64
+%global aarch64         aarch64 arm64 armv8
+# sometimes we need to distinguish big and little endian PPC64
+%global ppc64le         ppc64le
+%global ppc64be         ppc64 ppc64p7
+%global multilib_arches %{power64} sparc64 x86_64
+%global jit_arches      %{ix86} x86_64 sparcv9 sparc64 %{aarch64} %{power64}
+
+# By default, we build a debug build during main build on JIT architectures
+%ifarch %{jit_arches}
 %global include_debug_build 1
 %else
 %global include_debug_build 0
@@ -51,12 +58,6 @@
 %global targets all
 %endif
 
-%global aarch64         aarch64 arm64 armv8
-# sometimes we need to distinguish big and little endian PPC64
-%global ppc64le         ppc64le
-%global ppc64be         ppc64 ppc64p7
-%global multilib_arches %{power64} sparc64 x86_64
-%global jit_arches      %{ix86} x86_64 sparcv9 sparc64 %{aarch64} %{power64}
 
 %ifarch %{aarch64}
 # Disable hardened build on AArch64 as it didn't bootcycle
@@ -156,7 +157,7 @@
 # note, following three variables are sedded from update_sources if used correctly. Hardcode them rather there.
 %global project         aarch64-port
 %global repo            jdk8u
-%global revision        aarch64-jdk8u102-b14
+%global revision        aarch64-jdk8u111-b15
 # eg # jdk8u60-b27 -> jdk8u60 or # aarch64-jdk8u60-b27 -> aarch64-jdk8u60  (dont forget spec escape % by %%)
 %global whole_update    %(VERSION=%{revision}; echo ${VERSION%%-*})
 # eg  jdk8u60 -> 60 or aarch64-jdk8u60 -> 60
@@ -240,7 +241,8 @@ if [ "$1" -gt 1 ]; then
        "${sum}" = '400cc64d4dd31f36dc0cc2c701d603db' -o \\
        "${sum}" = '321342219bb130d238ff144b9e5dbfc1' -o \\
        "${sum}" = '134a37a84983b620f4d8d51a550c0c38' -o \\
-       "${sum}" = '5ea976e209d0d0b5b6ab148416123e02' ]; then
+       "${sum}" = '5ea976e209d0d0b5b6ab148416123e02' -o \\
+       "${sum}" = '5ab4c77cf14fbd7f7ee6f51a7a73d88c' ]; then
     if [ -f "${javasecurity}.rpmnew" ]; then
       mv -f "${javasecurity}.rpmnew" "${javasecurity}"
     fi
@@ -780,7 +782,7 @@ OrderWithRequires: %{name}-headless%1 = %{epoch}:%{version}-%{release}
 
 Name:    java-%{javaver}-%{origin}
 Version: %{javaver}.%{updatever}
-Release: 4.%{buildver}%{?dist}
+Release: 2.%{buildver}%{?dist}
 # java-1.5.0-ibm from jpackage.org set Epoch to 1 for unknown reasons,
 # and this change was brought into RHEL-4.  java-1.5.0-ibm packages
 # also included the epoch in their virtual provides.  This created a
@@ -800,7 +802,7 @@ URL:      http://openjdk.java.net/
 
 # aarch64-port now contains integration forest of both aarch64 and normal jdk
 # Source from upstream OpenJDK8 project. To regenerate, use
-# VERSION=aarch64-jdk8u102-b14 FILE_NAME_ROOT=aarch64-port-jdk8u-${VERSION}
+# VERSION=aarch64-jdk8u111-b15 FILE_NAME_ROOT=aarch64-port-jdk8u-${VERSION}
 # REPO_ROOT=<path to checked-out repository> generate_source_tarball.sh
 # where the source is obtained from http://hg.openjdk.java.net/%%{project}/%%{repo}
 Source0: %{project}-%{repo}-%{revision}.tar.xz
@@ -903,8 +905,6 @@ Patch507: pr2842-02.patch
 Patch400: 8154313.patch
 # S6260348, PR3066: GTK+ L&F JTextComponent not respecting desktop caret blink rate
 Patch526: 6260348-pr3066.patch
-# S8157306, PR3121, RH1360863: Random infrequent null pointer exceptions in javac
-Patch531: 8157306-pr3121-rh1360863.patch
 # S8162384, PR3122, RH1358661: Performance regression: bimorphic inlining may be bypassed by type speculation
 Patch532: 8162384-pr3122-rh1358661.patch
 
@@ -929,8 +929,10 @@ Patch201: system-libjpeg.patch
 # Local fixes
 # PR1834, RH1022017: Reduce curves reported by SSL to those in NSS
 Patch525: pr1834-rh1022017.patch
-# Temporary fix for typo in CORBA security patch
-Patch529: corba_typo_fix.patch
+# RH1367357: lcms2: Out-of-bounds read in Type_MLU_Read()
+Patch533: rh1367357.patch
+# Turn on AssumeMP by default on RHEL systems
+Patch534: always_assumemp.patch
 
 # Non-OpenJDK fixes
 
@@ -1252,9 +1254,13 @@ sh %{SOURCE12}
 %patch526
 %patch527
 %patch528
-%patch529
-%patch531
 %patch532
+%patch533
+
+# RHEL-only patches
+%if 0%{?rhel}
+%patch534
+%endif
 
 # Extract systemtap tapsets
 %if %{with_systemtap}
@@ -1848,6 +1854,25 @@ require "copy_jdk_configs.lua"
 %endif
 
 %changelog
+* Mon Oct 10 2016 Andrew Hughes <gnu.andrew@redhat.com> - 1:1.8.0.111-2.b15
+- Turn debug builds on for all JIT architectures. Always AssumeMP on RHEL.
+- Resolves: rhbz#1382736
+
+* Fri Oct 07 2016 Andrew Hughes <gnu.andrew@redhat.com> - 1:1.8.0.111-1.b15
+- Update to aarch64-jdk8u111-b15, with AArch64 fix for S8160591.
+- Resolves: rhbz#1382736
+
+* Fri Oct 07 2016 Andrew Hughes <gnu.andrew@redhat.com> - 1:1.8.0.111-0.b14
+- Update to aarch64-jdk8u111-b14.
+- Add latest md5sum for java.security file due to jar signing property addition.
+- Drop S8157306 and the CORBA typo fix, both of which appear upstream in u111.
+- Add LCMS 2 patch to fix Red Hat security issue RH1367357 in the local OpenJDK copy.
+- Resolves: rhbz#1350037
+
+* Wed Oct 5 2016  Jiri Vanek <jvanek@redhat.com> - 1:1.8.0.102-5.b14
+- debug subpackages allowed on aarch64 and ppc64le
+- Resolves: rhbz#1375224
+
 * Wed Sep 14 2016 Andrew Hughes <gnu.andrew@redhat.com> - 1:1.8.0.102-4.b14
 - Runtime native library requirements need to match the architecture of the JDK
 - Resolves: rhbz#1375224