diff --git a/openpower/linux/0001-xhci-Use-xhci_pci_remove-for-xhci-device-shutdown.patch b/openpower/linux/0001-xhci-Use-xhci_pci_remove-for-xhci-device-shutdown.patch
index 3a83ddb..e6c9840 100644
--- a/openpower/linux/0001-xhci-Use-xhci_pci_remove-for-xhci-device-shutdown.patch
+++ b/openpower/linux/0001-xhci-Use-xhci_pci_remove-for-xhci-device-shutdown.patch
@@ -1,7 +1,7 @@
 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
 From: Thadeu Lima De Souza Cascardo <thadeul@br.ibm.com>
 Date: Tue, 25 Mar 2014 10:45:16 -0400
-Subject: [PATCH 1/4] xhci: Use xhci_pci_remove for xhci device shutdown
+Subject: [PATCH 1/3] xhci: Use xhci_pci_remove for xhci device shutdown
 
 Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
 Signed-off-by: Joel Stanley <joel@jms.id.au>
@@ -10,10 +10,10 @@
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c
-index fcf1f3f63e7a..2eeede48510f 100644
+index 1bcf971141c0..398f6d5eba55 100644
 --- a/drivers/usb/host/xhci-pci.c
 +++ b/drivers/usb/host/xhci-pci.c
-@@ -473,7 +473,7 @@ static struct pci_driver xhci_pci_driver = {
+@@ -476,7 +476,7 @@ static struct pci_driver xhci_pci_driver = {
  	.remove =	xhci_pci_remove,
  	/* suspend and resume implemented later */
  
@@ -23,5 +23,5 @@
  	.driver = {
  		.pm = &usb_hcd_pci_pm_ops
 -- 
-2.11.0
+2.13.2
 
diff --git a/openpower/linux/0002-powerpc-powernv-Fix-CPU_HOTPLUG-n-idle.c-compile-err.patch b/openpower/linux/0002-powerpc-powernv-Fix-CPU_HOTPLUG-n-idle.c-compile-err.patch
new file mode 100644
index 0000000..e29a38f
--- /dev/null
+++ b/openpower/linux/0002-powerpc-powernv-Fix-CPU_HOTPLUG-n-idle.c-compile-err.patch
@@ -0,0 +1,39 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Nicholas Piggin <npiggin@gmail.com>
+Date: Fri, 12 May 2017 01:15:20 +1000
+Subject: [PATCH 2/3] powerpc/powernv: Fix CPU_HOTPLUG=n idle.c compile error
+
+Fixes: a7cd88da97 ("powerpc/powernv: Move CPU-Offline idle state invocation from smp.c to idle.c")
+Cc: Gautham R. Shenoy <ego@linux.vnet.ibm.com>
+Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
+Acked-by: Gautham R. Shenoy <ego@linux.vnet.ibm.com>
+Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
+(cherry picked from commit 67d20418088680d22037119d914982cd982b5c5a)
+Signed-off-by: Joel Stanley <joel@jms.id.au>
+---
+ arch/powerpc/platforms/powernv/idle.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/arch/powerpc/platforms/powernv/idle.c b/arch/powerpc/platforms/powernv/idle.c
+index 445f30a2c5ef..0c21747ed7e0 100644
+--- a/arch/powerpc/platforms/powernv/idle.c
++++ b/arch/powerpc/platforms/powernv/idle.c
+@@ -261,6 +261,7 @@ static u64 pnv_deepest_stop_psscr_val;
+ static u64 pnv_deepest_stop_psscr_mask;
+ static bool deepest_stop_found;
+ 
++#ifdef CONFIG_HOTPLUG_CPU
+ /*
+  * pnv_cpu_offline: A function that puts the CPU into the deepest
+  * available platform idle state on a CPU-Offline.
+@@ -293,6 +294,7 @@ unsigned long pnv_cpu_offline(unsigned int cpu)
+ 
+ 	return srr1;
+ }
++#endif
+ 
+ /*
+  * Power ISA 3.0 idle initialization.
+-- 
+2.13.2
+
diff --git a/openpower/linux/0002-xhci-do-not-halt-the-secondary-HCD.patch b/openpower/linux/0002-xhci-do-not-halt-the-secondary-HCD.patch
deleted file mode 100644
index 1d0853d..0000000
--- a/openpower/linux/0002-xhci-do-not-halt-the-secondary-HCD.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Joel Stanley <joel@jms.id.au>
-Date: Tue, 19 Jul 2016 22:43:26 +0930
-Subject: [PATCH 2/4] xhci: do not halt the secondary HCD
-
-We can't halt the secondary HCD, because it's also the primary HCD,
-which will cause problems if we have devices attached to the primary
-HCD, like a keyboard.
-
-Signed-off-by: Joel Stanley <joel@jms.id.au>
----
- drivers/usb/host/xhci.c | 20 +++++++++++++++-----
- 1 file changed, 15 insertions(+), 5 deletions(-)
-
-diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
-index b1f779817ffe..662106a8dfc0 100644
---- a/drivers/usb/host/xhci.c
-+++ b/drivers/usb/host/xhci.c
-@@ -689,6 +689,21 @@ void xhci_stop(struct usb_hcd *hcd)
- 
- 	mutex_lock(&xhci->mutex);
- 
-+	/*
-+	 * We can't halt the secondary HCD, because it's also the primary
-+	 * HCD, which will cause problems if we have devices attached to the
-+	 * primary HCD, like a keyboard.
-+	 */
-+	if (!usb_hcd_is_primary_hcd(hcd)) {
-+		/* The shared_hcd is going to be deallocated shortly (the USB
-+		 * core only calls this function when allocation fails in
-+		 * usb_add_hcd(), or usb_remove_hcd() is called).  So we need
-+		 * to unset xHCI's pointer.  */
-+		xhci->shared_hcd = NULL;
-+		mutex_unlock(&xhci->mutex);
-+		return;
-+	}
-+
- 	if (!(xhci->xhc_state & XHCI_STATE_HALTED)) {
- 		spin_lock_irq(&xhci->lock);
- 
-@@ -699,11 +714,6 @@ void xhci_stop(struct usb_hcd *hcd)
- 		spin_unlock_irq(&xhci->lock);
- 	}
- 
--	if (!usb_hcd_is_primary_hcd(hcd)) {
--		mutex_unlock(&xhci->mutex);
--		return;
--	}
--
- 	xhci_cleanup_msix(xhci);
- 
- 	/* Deleting Compliance Mode Recovery Timer */
--- 
-2.11.0
-
diff --git a/openpower/linux/0004-Release-OpenPower-kernel.patch b/openpower/linux/0003-Release-OpenPower-kernel.patch
similarity index 78%
rename from openpower/linux/0004-Release-OpenPower-kernel.patch
rename to openpower/linux/0003-Release-OpenPower-kernel.patch
index 2ac50c6..77aa894 100644
--- a/openpower/linux/0004-Release-OpenPower-kernel.patch
+++ b/openpower/linux/0003-Release-OpenPower-kernel.patch
@@ -1,7 +1,7 @@
 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
 From: Joel Stanley <joel@jms.id.au>
 Date: Wed, 3 May 2017 13:25:26 +0930
-Subject: [PATCH 4/4] Release OpenPower kernel
+Subject: [PATCH 3/3] Release OpenPower kernel
 
 Signed-off-by: Joel Stanley <joel@jms.id.au>
 ---
@@ -9,18 +9,18 @@
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/Makefile b/Makefile
-index e46e99cbe5d1..d7f36716d028 100644
+index 283c6236438e..329f7844383f 100644
 --- a/Makefile
 +++ b/Makefile
 @@ -1,7 +1,7 @@
  VERSION = 4
- PATCHLEVEL = 11
- SUBLEVEL = 6
+ PATCHLEVEL = 12
+ SUBLEVEL = 0
 -EXTRAVERSION =
 +EXTRAVERSION = -openpower1
  NAME = Fearless Coyote
  
  # *DOCUMENTATION*
 -- 
-2.11.0
+2.13.2
 
diff --git a/openpower/linux/0003-powerpc-powernv-Add-OPAL-exports-attributes-to-sysfs.patch b/openpower/linux/0003-powerpc-powernv-Add-OPAL-exports-attributes-to-sysfs.patch
deleted file mode 100644
index d31ee40..0000000
--- a/openpower/linux/0003-powerpc-powernv-Add-OPAL-exports-attributes-to-sysfs.patch
+++ /dev/null
@@ -1,120 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Matt Brown <matthew.brown.dev@gmail.com>
-Date: Thu, 30 Mar 2017 10:28:01 +1100
-Subject: [PATCH 3/4] powerpc/powernv: Add OPAL exports attributes to sysfs
-
-New versions of OPAL have a device node /ibm,opal/firmware/exports, each
-property of which describes a range of memory in OPAL that Linux might
-want to export to userspace for debugging.
-
-This patch adds a sysfs file under 'opal/exports' for each property
-found there, and makes it read-only by root.
-
-Signed-off-by: Matt Brown <matthew.brown.dev@gmail.com>
-[mpe: Drop counting of props, rename to attr, free on sysfs error, c'log]
-Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
-(cherry picked from commit 11fe909d236263f62808dc3c73caf798e026d7aa)
-Signed-off-by: Joel Stanley <joel@jms.id.au>
-
-Signed-off-by: Joel Stanley <joel@jms.id.au>
----
- arch/powerpc/platforms/powernv/opal.c | 76 +++++++++++++++++++++++++++++++++++
- 1 file changed, 76 insertions(+)
-
-diff --git a/arch/powerpc/platforms/powernv/opal.c b/arch/powerpc/platforms/powernv/opal.c
-index e0f856bfbfe8..25ea8f6fe7f8 100644
---- a/arch/powerpc/platforms/powernv/opal.c
-+++ b/arch/powerpc/platforms/powernv/opal.c
-@@ -595,6 +595,79 @@ static void opal_export_symmap(void)
- 		pr_warn("Error %d creating OPAL symbols file\n", rc);
- }
- 
-+static ssize_t export_attr_read(struct file *fp, struct kobject *kobj,
-+				struct bin_attribute *bin_attr, char *buf,
-+				loff_t off, size_t count)
-+{
-+	return memory_read_from_buffer(buf, count, &off, bin_attr->private,
-+				       bin_attr->size);
-+}
-+
-+/*
-+ * opal_export_attrs: creates a sysfs node for each property listed in
-+ * the device-tree under /ibm,opal/firmware/exports/
-+ * All new sysfs nodes are created under /opal/exports/.
-+ * This allows for reserved memory regions (e.g. HDAT) to be read.
-+ * The new sysfs nodes are only readable by root.
-+ */
-+static void opal_export_attrs(void)
-+{
-+	struct bin_attribute *attr;
-+	struct device_node *np;
-+	struct property *prop;
-+	struct kobject *kobj;
-+	u64 vals[2];
-+	int rc;
-+
-+	np = of_find_node_by_path("/ibm,opal/firmware/exports");
-+	if (!np)
-+		return;
-+
-+	/* Create new 'exports' directory - /sys/firmware/opal/exports */
-+	kobj = kobject_create_and_add("exports", opal_kobj);
-+	if (!kobj) {
-+		pr_warn("kobject_create_and_add() of exports failed\n");
-+		return;
-+	}
-+
-+	for_each_property_of_node(np, prop) {
-+		if (!strcmp(prop->name, "name") || !strcmp(prop->name, "phandle"))
-+			continue;
-+
-+		if (of_property_read_u64_array(np, prop->name, &vals[0], 2))
-+			continue;
-+
-+		attr = kmalloc(sizeof(*attr), GFP_KERNEL);
-+
-+		if (attr == NULL) {
-+			pr_warn("Failed kmalloc for bin_attribute!");
-+			continue;
-+		}
-+
-+		attr->attr.name = kstrdup(prop->name, GFP_KERNEL);
-+		attr->attr.mode = 0400;
-+		attr->read = export_attr_read;
-+		attr->private = __va(vals[0]);
-+		attr->size = vals[1];
-+
-+		if (attr->attr.name == NULL) {
-+			pr_warn("Failed kstrdup for bin_attribute attr.name");
-+			kfree(attr);
-+			continue;
-+		}
-+
-+		rc = sysfs_create_bin_file(kobj, attr);
-+		if (rc) {
-+			pr_warn("Error %d creating OPAL sysfs exports/%s file\n",
-+				 rc, prop->name);
-+			kfree(attr->attr.name);
-+			kfree(attr);
-+		}
-+	}
-+
-+	of_node_put(np);
-+}
-+
- static void __init opal_dump_region_init(void)
- {
- 	void *addr;
-@@ -733,6 +806,9 @@ static int __init opal_init(void)
- 		opal_msglog_sysfs_init();
- 	}
- 
-+	/* Export all properties */
-+	opal_export_attrs();
-+
- 	/* Initialize platform devices: IPMI backend, PRD & flash interface */
- 	opal_pdev_init("ibm,opal-ipmi");
- 	opal_pdev_init("ibm,opal-flash");
--- 
-2.11.0
-
