diff --git a/openpower/configs/barreleye_defconfig b/openpower/configs/barreleye_defconfig
index 57a98c8..7c0bbb8 100644
--- a/openpower/configs/barreleye_defconfig
+++ b/openpower/configs/barreleye_defconfig
@@ -42,7 +42,7 @@
 BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var"
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.4.14"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.4.16"
 BR2_KERNEL_HEADERS_4_4=y
 BR2_BINUTILS_VERSION_2_26_X=y
 BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL)/linux"
diff --git a/openpower/configs/firenze_defconfig b/openpower/configs/firenze_defconfig
index 96e7b53..b18aa35 100644
--- a/openpower/configs/firenze_defconfig
+++ b/openpower/configs/firenze_defconfig
@@ -25,6 +25,8 @@
 # skiboot will be built but we don't need embedded payload
 BR2_PACKAGE_SKIBOOT=y
 BR2_PACKAGE_SKIBOOT_EMBED_PAYLOAD=n
+BR2_SKIBOOT_CUSTOM_VERSION=y
+BR2_SKIBOOT_CUSTOM_VERSION_VALUE="skiboot-5.3.0"
 
 # petitboot requirements
 BR2_ENABLE_LOCALE_PURGE=y
@@ -34,10 +36,10 @@
 BR2_TARGET_GENERIC_GETTY_PORT="hvc0"
 BR2_ROOTFS_OVERLAY="../openpower/overlay"
 BR2_ROOTFS_DEVICE_TABLE="../openpower/device_table.txt"
-BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var"
+BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var ../openpower/scripts/firenze-firmware-whitelist"
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.4.14"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.4.16"
 BR2_KERNEL_HEADERS_4_4=y
 BR2_BINUTILS_VERSION_2_26_X=y
 BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL)/linux"
@@ -48,6 +50,7 @@
 BR2_PACKAGE_LINUX_FIRMWARE=y
 BR2_PACKAGE_LINUX_FIRMWARE_BNX2X=y
 BR2_PACKAGE_LINUX_FIRMWARE_CXGB4_T4=y
+BR2_PACKAGE_LINUX_FIRMWARE_RADEON=y
 BR2_PACKAGE_I2C_TOOLS=y
 BR2_PACKAGE_NCURSES_WCHAR=y
 BR2_PACKAGE_DROPBEAR=y
diff --git a/openpower/configs/firestone_defconfig b/openpower/configs/firestone_defconfig
index 001000d..8a8dbc9 100644
--- a/openpower/configs/firestone_defconfig
+++ b/openpower/configs/firestone_defconfig
@@ -42,7 +42,7 @@
 BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var"
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.4.14"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.4.16"
 BR2_KERNEL_HEADERS_4_4=y
 BR2_BINUTILS_VERSION_2_26_X=y
 BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL)/linux"
diff --git a/openpower/configs/garrison_defconfig b/openpower/configs/garrison_defconfig
index a4bd606..370e243 100644
--- a/openpower/configs/garrison_defconfig
+++ b/openpower/configs/garrison_defconfig
@@ -33,12 +33,12 @@
 
 # skiboot requirements
 BR2_SKIBOOT_CUSTOM_VERSION=y
-BR2_SKIBOOT_CUSTOM_VERSION_VALUE="68b4d66bdad8bc036073d1a4cbc26e94cdaf908a"
+BR2_SKIBOOT_CUSTOM_VERSION_VALUE="skiboot-5.3.0"
 
 # petitboot requirements
 BR2_ENABLE_LOCALE_PURGE=y
-BR2_ENABLE_LOCALE_WHITELIST="C en_US"
-BR2_GENERATE_LOCALE="en_US.UTF-8"
+BR2_ENABLE_LOCALE_WHITELIST="C de en es fr it ja ko pt_BR ru zh_CN zh_TW"
+BR2_GENERATE_LOCALE="en_US.UTF-8 de_DE.UTF-8 es_ES.UTF-8 fr_FR.UTF-8 it_IT.UTF-8 ja_JP.UTF-8 ko_KR.UTF-8 pt_BR.UTF-8 ru_RU.UTF-8 zh_CN.UTF-8 zh_TW.UTF-8"
 BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
 BR2_TARGET_GENERIC_GETTY_PORT="hvc0"
 BR2_ROOTFS_OVERLAY="../openpower/overlay"
@@ -46,7 +46,7 @@
 BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var"
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.4.14"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.4.16"
 BR2_KERNEL_HEADERS_4_4=y
 BR2_BINUTILS_VERSION_2_26_X=y
 BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL)/linux"
diff --git a/openpower/configs/habanero_defconfig b/openpower/configs/habanero_defconfig
index 7c302f0..6da169e 100644
--- a/openpower/configs/habanero_defconfig
+++ b/openpower/configs/habanero_defconfig
@@ -42,7 +42,7 @@
 BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var"
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.4.14"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.4.16"
 BR2_KERNEL_HEADERS_4_4=y
 BR2_BINUTILS_VERSION_2_26_X=y
 BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL)/linux"
diff --git a/openpower/configs/linux/skiroot_defconfig b/openpower/configs/linux/skiroot_defconfig
index 6b374fb..688524d 100644
--- a/openpower/configs/linux/skiroot_defconfig
+++ b/openpower/configs/linux/skiroot_defconfig
@@ -71,7 +71,6 @@
 CONFIG_BLK_DEV_RAM_SIZE=65536
 CONFIG_ATA_OVER_ETH=m
 CONFIG_VIRTIO_BLK=m
-CONFIG_BLK_DEV_NVME=m
 CONFIG_EEPROM_AT24=y
 # CONFIG_CXL is not set
 CONFIG_BLK_DEV_SD=m
@@ -140,8 +139,6 @@
 CONFIG_IXGBE=m
 CONFIG_NET_VENDOR_MELLANOX=y
 CONFIG_MLX4_EN=m
-CONFIG_MLX5_CORE=m
-CONFIG_MLX5_CORE_EN=y
 CONFIG_MYRI10GE=m
 CONFIG_QLGE=m
 CONFIG_NETXEN_NIC=m
diff --git a/openpower/configs/openpower_mambo_defconfig b/openpower/configs/openpower_mambo_defconfig
index 96b88de..52de2e4 100644
--- a/openpower/configs/openpower_mambo_defconfig
+++ b/openpower/configs/openpower_mambo_defconfig
@@ -31,7 +31,7 @@
 BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var"
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.4.14"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.4.16"
 BR2_KERNEL_HEADERS_4_4=y
 BR2_BINUTILS_VERSION_2_26_X=y
 BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL)/linux"
diff --git a/openpower/configs/openpower_p9_mambo_defconfig b/openpower/configs/openpower_p9_mambo_defconfig
index 6ed22b8..f7672a4 100644
--- a/openpower/configs/openpower_p9_mambo_defconfig
+++ b/openpower/configs/openpower_p9_mambo_defconfig
@@ -43,4 +43,4 @@
 BR2_PACKAGE_PETITBOOT=y
 # BR2_PACKAGE_OCC is not set
 BR2_SKIBOOT_CUSTOM_VERSION=y
-BR2_SKIBOOT_CUSTOM_VERSION_VALUE="8c2f3fe5639b1fbdd1aa3b13552d9666ecd81d05"
+BR2_SKIBOOT_CUSTOM_VERSION_VALUE="skiboot-5.3.0"
diff --git a/openpower/configs/palmetto_defconfig b/openpower/configs/palmetto_defconfig
index 546c378..1c7fe2a 100644
--- a/openpower/configs/palmetto_defconfig
+++ b/openpower/configs/palmetto_defconfig
@@ -40,7 +40,7 @@
 BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var"
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.4.14"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.4.16"
 BR2_KERNEL_HEADERS_4_4=y
 BR2_BINUTILS_VERSION_2_26_X=y
 BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL)/linux"
diff --git a/openpower/linux/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
similarity index 72%
rename from openpower/linux/linux-0001-xhci-Use-xhci_pci_remove-for-xhci-device-shutdown.patch
rename to openpower/linux/0001-xhci-Use-xhci_pci_remove-for-xhci-device-shutdown.patch
index df50449..ca5c240 100644
--- a/openpower/linux/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 54a36cc9957899eb7ac261c783e80ce93f7bfd64 Mon Sep 17 00:00:00 2001
+From 4b30502e3137f771b947da627ac7d14286f57b1c 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/7] xhci: Use xhci_pci_remove for xhci device shutdown
+Subject: [PATCH 01/10] 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 ea4fb4b0cd44..186a544e1d1f 100644
+index de644e56aa3b..f398ed390ff8 100644
 --- a/drivers/usb/host/xhci-pci.c
 +++ b/drivers/usb/host/xhci-pci.c
-@@ -441,7 +441,7 @@ static struct pci_driver xhci_pci_driver = {
+@@ -446,7 +446,7 @@ static struct pci_driver xhci_pci_driver = {
  	.remove =	xhci_pci_remove,
  	/* suspend and resume implemented later */
  
diff --git a/openpower/linux/linux-0004-drivers-drm-ast-Switch-SCU-to-VGA-output-on-POST.patch b/openpower/linux/0002-drivers-drm-ast-Switch-SCU-to-VGA-output-on-POST.patch
similarity index 92%
rename from openpower/linux/linux-0004-drivers-drm-ast-Switch-SCU-to-VGA-output-on-POST.patch
rename to openpower/linux/0002-drivers-drm-ast-Switch-SCU-to-VGA-output-on-POST.patch
index df69843..bb42caa 100644
--- a/openpower/linux/linux-0004-drivers-drm-ast-Switch-SCU-to-VGA-output-on-POST.patch
+++ b/openpower/linux/0002-drivers-drm-ast-Switch-SCU-to-VGA-output-on-POST.patch
@@ -1,7 +1,7 @@
-From 96be60fe30d5971486126da3e7b8dfc84f25b8ae Mon Sep 17 00:00:00 2001
+From 1a148c6eb2c728b2063f1d114d06932abcb1d710 Mon Sep 17 00:00:00 2001
 From: Jeremy Kerr <jk@ozlabs.org>
 Date: Wed, 2 Mar 2016 11:25:47 +0800
-Subject: [PATCH 4/7] drivers/drm/ast: Switch SCU to VGA output on POST
+Subject: [PATCH 02/10] drivers/drm/ast: Switch SCU to VGA output on POST
 
 On AST BMC platforms, the BMC may be using the VGA device for UART
 mirroring. In this case, we need to switch the DAC output to
diff --git a/openpower/linux/linux-0005-scsi-ignore-errors-from-scsi_dh_add_device.patch b/openpower/linux/0003-scsi-ignore-errors-from-scsi_dh_add_device.patch
similarity index 90%
rename from openpower/linux/linux-0005-scsi-ignore-errors-from-scsi_dh_add_device.patch
rename to openpower/linux/0003-scsi-ignore-errors-from-scsi_dh_add_device.patch
index 0bff5f7..19e9e3d 100644
--- a/openpower/linux/linux-0005-scsi-ignore-errors-from-scsi_dh_add_device.patch
+++ b/openpower/linux/0003-scsi-ignore-errors-from-scsi_dh_add_device.patch
@@ -1,7 +1,7 @@
-From 2ed71195852b81ad37938dfc4e3d7750d7046561 Mon Sep 17 00:00:00 2001
+From 69f5346b57b03d0809e45e331afca7cb09ee17f5 Mon Sep 17 00:00:00 2001
 From: Hannes Reinecke <hare@suse.de>
 Date: Tue, 1 Mar 2016 13:57:59 +1100
-Subject: [PATCH 5/7] scsi: ignore errors from scsi_dh_add_device()
+Subject: [PATCH 03/10] scsi: ignore errors from scsi_dh_add_device()
 
 device handler initialisation might fail due to a number of
 reasons. But as device_handlers are optional this shouldn't
diff --git a/openpower/linux/linux-0006-net-mlx4_core-Set-UAR-page-size-to-4KB-regardless-of.patch b/openpower/linux/0004-net-mlx4_core-Set-UAR-page-size-to-4KB-regardless-of.patch
similarity index 98%
rename from openpower/linux/linux-0006-net-mlx4_core-Set-UAR-page-size-to-4KB-regardless-of.patch
rename to openpower/linux/0004-net-mlx4_core-Set-UAR-page-size-to-4KB-regardless-of.patch
index 3e55a7c..b21736c 100644
--- a/openpower/linux/linux-0006-net-mlx4_core-Set-UAR-page-size-to-4KB-regardless-of.patch
+++ b/openpower/linux/0004-net-mlx4_core-Set-UAR-page-size-to-4KB-regardless-of.patch
@@ -1,7 +1,7 @@
-From 41418e470987141e3ee03d0cf862284a25ba8217 Mon Sep 17 00:00:00 2001
+From 5671fd1faf1b9185ad846db4e134f05a1b109ca3 Mon Sep 17 00:00:00 2001
 From: Huy Nguyen <huyn@mellanox.com>
 Date: Wed, 17 Feb 2016 17:24:26 +0200
-Subject: [PATCH 6/7] net/mlx4_core: Set UAR page size to 4KB regardless of
+Subject: [PATCH 04/10] net/mlx4_core: Set UAR page size to 4KB regardless of
  system page size
 
 problem description:
diff --git a/openpower/linux/0005-xhci-do-not-halt-the-secondary-HCD.patch b/openpower/linux/0005-xhci-do-not-halt-the-secondary-HCD.patch
new file mode 100644
index 0000000..2345b11
--- /dev/null
+++ b/openpower/linux/0005-xhci-do-not-halt-the-secondary-HCD.patch
@@ -0,0 +1,56 @@
+From 6bd20334f0036becdbc6e6fb04f2cca0a26862c7 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 05/10] 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.
+
+Sined-off-by: Joel Stanley <joel@jms.id.au>
+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 6fe0174da226..8f48dd84ddd2 100644
+--- a/drivers/usb/host/xhci.c
++++ b/drivers/usb/host/xhci.c
+@@ -682,6 +682,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);
+ 
+@@ -693,11 +708,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.8.1
+
diff --git a/openpower/linux/0006-net-mlx5-Add-pci-shutdown-callback.patch b/openpower/linux/0006-net-mlx5-Add-pci-shutdown-callback.patch
new file mode 100644
index 0000000..8c900ee
--- /dev/null
+++ b/openpower/linux/0006-net-mlx5-Add-pci-shutdown-callback.patch
@@ -0,0 +1,161 @@
+From e5debfe251a2aee37b54f768855aac11593c0e2e Mon Sep 17 00:00:00 2001
+From: Carol L Soto <clsoto@linux.vnet.ibm.com>
+Date: Tue, 12 Jul 2016 17:04:07 -0500
+Subject: [PATCH 06/10] net/mlx5: Add pci shutdown callback
+
+Backport of commit 5fc7197d3a256 ("net/mlx5: Add pci shutdown callback")
+so we can use for the OpenPower kernel.
+
+This patch introduces kexec support for mlx5.
+When switching kernels, kexec() calls shutdown, which unloads
+the driver and cleans its resources.
+
+In addition, remove unregister netdev from shutdown flow. This will
+allow a clean shutdown, even if some netdev clients did not release their
+reference from this netdev. Releasing The HW resources only is enough as
+the kernel is shutting down
+
+Signed-off-by: Majd Dibbiny <majd@mellanox.com>
+Signed-off-by: Tariq Toukan <tariqt@mellanox.com>
+Signed-off-by: Haggai Abramovsky <hagaya@mellanox.com>
+Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Carol L Soto <clsoto@linux.vnet.ibm.com>
+(cherry picked from commit 5fc7197d3a256d9c5de3134870304b24892a4908)
+Signed-off-by: Joel Stanley <joel@jms.id.au>
+---
+ drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 15 +++++++++++++--
+ drivers/net/ethernet/mellanox/mlx5/core/main.c    | 23 +++++++++++++++++++----
+ include/linux/mlx5/driver.h                       |  7 ++++---
+ 3 files changed, 36 insertions(+), 9 deletions(-)
+
+diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
+index cbd17e25beeb..887a54c8e98b 100644
+--- a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
++++ b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
+@@ -2241,7 +2241,16 @@ static void mlx5e_destroy_netdev(struct mlx5_core_dev *mdev, void *vpriv)
+ 	schedule_work(&priv->set_rx_mode_work);
+ 	mlx5e_disable_async_events(priv);
+ 	flush_scheduled_work();
+-	unregister_netdev(netdev);
++	if (test_bit(MLX5_INTERFACE_STATE_SHUTDOWN, &mdev->intf_state)) {
++		netif_device_detach(netdev);
++		mutex_lock(&priv->state_lock);
++		if (test_bit(MLX5E_STATE_OPENED, &priv->state))
++			mlx5e_close_locked(netdev);
++		mutex_unlock(&priv->state_lock);
++	} else {
++		unregister_netdev(netdev);
++	}
++
+ 	mlx5e_destroy_flow_tables(priv);
+ 	mlx5e_destroy_tirs(priv);
+ 	mlx5e_destroy_rqt(priv, MLX5E_SINGLE_RQ_RQT);
+@@ -2252,7 +2261,9 @@ static void mlx5e_destroy_netdev(struct mlx5_core_dev *mdev, void *vpriv)
+ 	mlx5_dealloc_transport_domain(priv->mdev, priv->tdn);
+ 	mlx5_core_dealloc_pd(priv->mdev, priv->pdn);
+ 	mlx5_unmap_free_uar(priv->mdev, &priv->cq_uar);
+-	free_netdev(netdev);
++
++	if (!test_bit(MLX5_INTERFACE_STATE_SHUTDOWN, &mdev->intf_state))
++		free_netdev(netdev);
+ }
+ 
+ static void *mlx5e_get_netdev(void *vpriv)
+diff --git a/drivers/net/ethernet/mellanox/mlx5/core/main.c b/drivers/net/ethernet/mellanox/mlx5/core/main.c
+index 6cf6d93d8831..8a371bdb823e 100644
+--- a/drivers/net/ethernet/mellanox/mlx5/core/main.c
++++ b/drivers/net/ethernet/mellanox/mlx5/core/main.c
+@@ -914,7 +914,7 @@ static int mlx5_load_one(struct mlx5_core_dev *dev, struct mlx5_priv *priv)
+ 	int err;
+ 
+ 	mutex_lock(&dev->intf_state_mutex);
+-	if (dev->interface_state == MLX5_INTERFACE_STATE_UP) {
++	if (test_bit(MLX5_INTERFACE_STATE_UP, &dev->intf_state)) {
+ 		dev_warn(&dev->pdev->dev, "%s: interface is up, NOP\n",
+ 			 __func__);
+ 		goto out;
+@@ -1063,7 +1063,8 @@ static int mlx5_load_one(struct mlx5_core_dev *dev, struct mlx5_priv *priv)
+ 	if (err)
+ 		pr_info("failed request module on %s\n", MLX5_IB_MOD);
+ 
+-	dev->interface_state = MLX5_INTERFACE_STATE_UP;
++	clear_bit(MLX5_INTERFACE_STATE_DOWN, &dev->intf_state);
++	set_bit(MLX5_INTERFACE_STATE_UP, &dev->intf_state);
+ out:
+ 	mutex_unlock(&dev->intf_state_mutex);
+ 
+@@ -1125,7 +1126,7 @@ static int mlx5_unload_one(struct mlx5_core_dev *dev, struct mlx5_priv *priv)
+ 	int err = 0;
+ 
+ 	mutex_lock(&dev->intf_state_mutex);
+-	if (dev->interface_state == MLX5_INTERFACE_STATE_DOWN) {
++	if (test_bit(MLX5_INTERFACE_STATE_DOWN, &dev->intf_state)) {
+ 		dev_warn(&dev->pdev->dev, "%s: interface is down, NOP\n",
+ 			 __func__);
+ 		goto out;
+@@ -1155,7 +1156,8 @@ static int mlx5_unload_one(struct mlx5_core_dev *dev, struct mlx5_priv *priv)
+ 	mlx5_cmd_cleanup(dev);
+ 
+ out:
+-	dev->interface_state = MLX5_INTERFACE_STATE_DOWN;
++	clear_bit(MLX5_INTERFACE_STATE_UP, &dev->intf_state);
++	set_bit(MLX5_INTERFACE_STATE_DOWN, &dev->intf_state);
+ 	mutex_unlock(&dev->intf_state_mutex);
+ 	return err;
+ }
+@@ -1365,6 +1367,18 @@ static const struct pci_error_handlers mlx5_err_handler = {
+ 	.resume		= mlx5_pci_resume
+ };
+ 
++static void shutdown(struct pci_dev *pdev)
++{
++	struct mlx5_core_dev *dev  = pci_get_drvdata(pdev);
++	struct mlx5_priv *priv = &dev->priv;
++
++	dev_info(&pdev->dev, "Shutdown was called\n");
++	/* Notify mlx5 clients that the kernel is being shut down */
++	set_bit(MLX5_INTERFACE_STATE_SHUTDOWN, &dev->intf_state);
++	mlx5_unload_one(dev, priv);
++	mlx5_pci_disable_device(dev);
++}
++
+ static const struct pci_device_id mlx5_core_pci_table[] = {
+ 	{ PCI_VDEVICE(MELLANOX, 0x1011) }, /* Connect-IB */
+ 	{ PCI_VDEVICE(MELLANOX, 0x1012) }, /* Connect-IB VF */
+@@ -1382,6 +1396,7 @@ static struct pci_driver mlx5_core_driver = {
+ 	.id_table       = mlx5_core_pci_table,
+ 	.probe          = init_one,
+ 	.remove         = remove_one,
++	.shutdown       = shutdown,
+ 	.err_handler	= &mlx5_err_handler
+ };
+ 
+diff --git a/include/linux/mlx5/driver.h b/include/linux/mlx5/driver.h
+index 412aa988c6ad..dc26d9942120 100644
+--- a/include/linux/mlx5/driver.h
++++ b/include/linux/mlx5/driver.h
+@@ -493,8 +493,9 @@ enum mlx5_device_state {
+ };
+ 
+ enum mlx5_interface_state {
+-	MLX5_INTERFACE_STATE_DOWN,
+-	MLX5_INTERFACE_STATE_UP,
++	MLX5_INTERFACE_STATE_DOWN = BIT(0),
++	MLX5_INTERFACE_STATE_UP = BIT(1),
++	MLX5_INTERFACE_STATE_SHUTDOWN = BIT(2),
+ };
+ 
+ enum mlx5_pci_status {
+@@ -518,7 +519,7 @@ struct mlx5_core_dev {
+ 	enum mlx5_device_state	state;
+ 	/* sync interface state */
+ 	struct mutex		intf_state_mutex;
+-	enum mlx5_interface_state interface_state;
++	unsigned long		intf_state;
+ 	void			(*event) (struct mlx5_core_dev *dev,
+ 					  enum mlx5_dev_event event,
+ 					  unsigned long param);
+-- 
+2.8.1
+
diff --git a/openpower/linux/0007-powerpc-boot-Add-OPAL-console-to-epapr-wrappers.patch b/openpower/linux/0007-powerpc-boot-Add-OPAL-console-to-epapr-wrappers.patch
new file mode 100644
index 0000000..4705841
--- /dev/null
+++ b/openpower/linux/0007-powerpc-boot-Add-OPAL-console-to-epapr-wrappers.patch
@@ -0,0 +1,286 @@
+From fb2735117c60dbaa22da54bec8615b2682b66cb9 Mon Sep 17 00:00:00 2001
+From: Oliver O'Halloran <oohall@gmail.com>
+Date: Fri, 24 Jun 2016 17:28:43 +1000
+Subject: [PATCH 07/10] powerpc/boot: Add OPAL console to epapr wrappers
+
+This patch adds an OPAL console backend to the powerpc boot wrapper so
+that decompression failures inside the wrapper can be reported to the
+user. This is important since it typically indicates data corruption in
+the firmware and other nasty things.
+
+Currently this only works when building a little endian kernel. When
+compiling a 64 bit BE kernel the wrapper is always build 32 bit to be
+compatible with some 32 bit firmwares. BE support will be added at a
+later date. Another limitation of this is that only the "raw" type of
+OPAL console is supported, however machines that provide a hvsi console
+also provide a raw console so this is not an issue in practice.
+
+Actually-written-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
+Signed-off-by: Oliver O'Halloran <oohall@gmail.com>
+Cc: Stewart Smith <stewart@linux.vnet.ibm.com>
+Signed-off-by: Joel Stanley <joel@jms.id.au>
+---
+ arch/powerpc/boot/Makefile     |  4 +-
+ arch/powerpc/boot/opal-calls.S | 58 +++++++++++++++++++++++++
+ arch/powerpc/boot/opal.c       | 97 ++++++++++++++++++++++++++++++++++++++++++
+ arch/powerpc/boot/ops.h        |  1 +
+ arch/powerpc/boot/ppc_asm.h    |  4 ++
+ arch/powerpc/boot/serial.c     |  2 +
+ arch/powerpc/boot/types.h      | 10 +++++
+ 7 files changed, 174 insertions(+), 2 deletions(-)
+ create mode 100644 arch/powerpc/boot/opal-calls.S
+ create mode 100644 arch/powerpc/boot/opal.c
+
+diff --git a/arch/powerpc/boot/Makefile b/arch/powerpc/boot/Makefile
+index 99e4487248ff..321a603f6ae3 100644
+--- a/arch/powerpc/boot/Makefile
++++ b/arch/powerpc/boot/Makefile
+@@ -70,7 +70,7 @@ $(addprefix $(obj)/,$(zlib) cuboot-c2k.o gunzip_util.o main.o): \
+ libfdt       := fdt.c fdt_ro.c fdt_wip.c fdt_sw.c fdt_rw.c fdt_strerror.c
+ libfdtheader := fdt.h libfdt.h libfdt_internal.h
+ 
+-$(addprefix $(obj)/,$(libfdt) libfdt-wrapper.o simpleboot.o epapr.o): \
++$(addprefix $(obj)/,$(libfdt) libfdt-wrapper.o simpleboot.o epapr.o opal.o): \
+ 	$(addprefix $(obj)/,$(libfdtheader))
+ 
+ src-wlib-y := string.S crt0.S crtsavres.S stdio.c main.c \
+@@ -78,7 +78,7 @@ src-wlib-y := string.S crt0.S crtsavres.S stdio.c main.c \
+ 		ns16550.c serial.c simple_alloc.c div64.S util.S \
+ 		gunzip_util.c elf_util.c $(zlib) devtree.c stdlib.c \
+ 		oflib.c ofconsole.c cuboot.c mpsc.c cpm-serial.c \
+-		uartlite.c mpc52xx-psc.c
++		uartlite.c mpc52xx-psc.c opal.c opal-calls.S
+ src-wlib-$(CONFIG_40x) += 4xx.c planetcore.c
+ src-wlib-$(CONFIG_44x) += 4xx.c ebony.c bamboo.c
+ src-wlib-$(CONFIG_8xx) += mpc8xx.c planetcore.c fsl-soc.c
+diff --git a/arch/powerpc/boot/opal-calls.S b/arch/powerpc/boot/opal-calls.S
+new file mode 100644
+index 000000000000..ff2f1b97bc53
+--- /dev/null
++++ b/arch/powerpc/boot/opal-calls.S
+@@ -0,0 +1,58 @@
++/*
++ * Copyright (c) 2016 IBM Corporation.
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License
++ * as published by the Free Software Foundation; either version
++ * 2 of the License, or (at your option) any later version.
++ */
++
++#include "ppc_asm.h"
++#include "../include/asm/opal-api.h"
++
++	.text
++
++#define OPAL_CALL(name, token)				\
++	.globl name;					\
++name:							\
++	li	r0, token;				\
++	b	opal_call;
++
++opal_call:
++	mflr	r11
++	std	r11,16(r1)
++	mfcr	r12
++	stw	r12,8(r1)
++	mr	r13,r2
++
++	/* Set opal return address */
++	ld	r11,opal_return@got(r2)
++	mtlr	r11
++	mfmsr	r12
++
++	/* switch to BE when we enter OPAL */
++	li	r11,MSR_LE
++	andc	r12,r12,r11
++	mtspr	SPRN_HSRR1,r12
++
++	/* load the opal call entry point and base */
++	ld	r11,opal@got(r2)
++	ld	r12,8(r11)
++	ld	r2,0(r11)
++	mtspr	SPRN_HSRR0,r12
++	hrfid
++
++opal_return:
++	FIXUP_ENDIAN
++	mr	r2,r13;
++	lwz	r11,8(r1);
++	ld	r12,16(r1)
++	mtcr	r11;
++	mtlr	r12
++	blr
++
++OPAL_CALL(opal_console_write,			OPAL_CONSOLE_WRITE);
++OPAL_CALL(opal_console_read,			OPAL_CONSOLE_READ);
++OPAL_CALL(opal_console_write_buffer_space,	OPAL_CONSOLE_WRITE_BUFFER_SPACE);
++OPAL_CALL(opal_poll_events,			OPAL_POLL_EVENTS);
++OPAL_CALL(opal_console_flush,			OPAL_CONSOLE_FLUSH);
+diff --git a/arch/powerpc/boot/opal.c b/arch/powerpc/boot/opal.c
+new file mode 100644
+index 000000000000..3a2ce1e1f048
+--- /dev/null
++++ b/arch/powerpc/boot/opal.c
+@@ -0,0 +1,97 @@
++/*
++ * Copyright (c) 2016 IBM Corporation.
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License
++ * as published by the Free Software Foundation; either version
++ * 2 of the License, or (at your option) any later version.
++ */
++
++#include "ops.h"
++#include "stdio.h"
++#include "io.h"
++#include <libfdt.h>
++#include "../include/asm/opal-api.h"
++
++/* Global OPAL struct used by opal-call.S */
++struct opal {
++	u64 base;
++	u64 entry;
++} opal;
++
++static u32 opal_con_id;
++
++int64_t opal_console_write(int64_t term_number, u64 *length, const u8 *buffer);
++int64_t opal_console_read(int64_t term_number, uint64_t *length, u8 *buffer);
++int64_t opal_console_write_buffer_space(uint64_t term_number, uint64_t *length);
++int64_t opal_console_flush(uint64_t term_number);
++int64_t opal_poll_events(uint64_t *outstanding_event_mask);
++
++static int opal_con_open(void)
++{
++	return 0;
++}
++
++static void opal_con_putc(unsigned char c)
++{
++	int64_t rc;
++	uint64_t olen, len;
++
++	do {
++		rc = opal_console_write_buffer_space(opal_con_id, &olen);
++		len = be64_to_cpu(olen);
++		if (rc)
++			return;
++		opal_poll_events(NULL);
++	} while (len < 1);
++
++
++	olen = cpu_to_be64(1);
++	opal_console_write(opal_con_id, &olen, &c);
++}
++
++static void opal_con_close(void)
++{
++	opal_console_flush(opal_con_id);
++}
++
++static void opal_init(void)
++{
++	void *opal_node;
++
++	opal_node = finddevice("/ibm,opal");
++	if (!opal_node)
++		return;
++	if (getprop(opal_node, "opal-base-address", &opal.base, sizeof(u64)) < 0)
++		return;
++	opal.base = be64_to_cpu(opal.base);
++	if (getprop(opal_node, "opal-entry-address", &opal.entry, sizeof(u64)) < 0)
++		return;
++	opal.entry = be64_to_cpu(opal.entry);
++}
++
++#ifdef __powerpc64__
++int opal_console_init(void *devp, struct serial_console_data *scdp)
++{
++	opal_init();
++
++	if (devp) {
++		int n = getprop(devp, "reg", &opal_con_id, sizeof(u32));
++		if (n != sizeof(u32))
++			return -1;
++		opal_con_id = be32_to_cpu(opal_con_id);
++	} else
++		opal_con_id = 0;
++
++	scdp->open = opal_con_open;
++	scdp->putc = opal_con_putc;
++	scdp->close = opal_con_close;
++
++	return 0;
++}
++#else
++int opal_console_init(void *devp, struct serial_console_data *scdp)
++{
++	return -1;
++}
++#endif
+diff --git a/arch/powerpc/boot/ops.h b/arch/powerpc/boot/ops.h
+index 5e75e1c5518e..e19b64ef977a 100644
+--- a/arch/powerpc/boot/ops.h
++++ b/arch/powerpc/boot/ops.h
+@@ -89,6 +89,7 @@ int mpsc_console_init(void *devp, struct serial_console_data *scdp);
+ int cpm_console_init(void *devp, struct serial_console_data *scdp);
+ int mpc5200_psc_console_init(void *devp, struct serial_console_data *scdp);
+ int uartlite_console_init(void *devp, struct serial_console_data *scdp);
++int opal_console_init(void *devp, struct serial_console_data *scdp);
+ void *simple_alloc_init(char *base, unsigned long heap_size,
+ 			unsigned long granularity, unsigned long max_allocs);
+ extern void flush_cache(void *, unsigned long);
+diff --git a/arch/powerpc/boot/ppc_asm.h b/arch/powerpc/boot/ppc_asm.h
+index 35ea60c1f070..b03373d8b386 100644
+--- a/arch/powerpc/boot/ppc_asm.h
++++ b/arch/powerpc/boot/ppc_asm.h
+@@ -61,6 +61,10 @@
+ 
+ #define SPRN_TBRL	268
+ #define SPRN_TBRU	269
++#define SPRN_HSRR0	0x13A	/* Hypervisor Save/Restore 0 */
++#define SPRN_HSRR1	0x13B	/* Hypervisor Save/Restore 1 */
++
++#define MSR_LE		0x0000000000000001
+ 
+ #define FIXUP_ENDIAN						   \
+ 	tdi   0, 0, 0x48; /* Reverse endian of b . + 8		*/ \
+diff --git a/arch/powerpc/boot/serial.c b/arch/powerpc/boot/serial.c
+index 167ee9433de6..e04c1e4063ae 100644
+--- a/arch/powerpc/boot/serial.c
++++ b/arch/powerpc/boot/serial.c
+@@ -132,6 +132,8 @@ int serial_console_init(void)
+ 	else if (dt_is_compatible(devp, "xlnx,opb-uartlite-1.00.b") ||
+ 		 dt_is_compatible(devp, "xlnx,xps-uartlite-1.00.a"))
+ 		rc = uartlite_console_init(devp, &serial_cd);
++	else if (dt_is_compatible(devp, "ibm,opal-console-raw"))
++		rc = opal_console_init(devp, &serial_cd);
+ 
+ 	/* Add other serial console driver calls here */
+ 
+diff --git a/arch/powerpc/boot/types.h b/arch/powerpc/boot/types.h
+index 31393d17a9c1..85565a89bcc2 100644
+--- a/arch/powerpc/boot/types.h
++++ b/arch/powerpc/boot/types.h
+@@ -12,6 +12,16 @@ typedef short			s16;
+ typedef int			s32;
+ typedef long long		s64;
+ 
++/* required for opal-api.h */
++typedef u8  uint8_t;
++typedef u16 uint16_t;
++typedef u32 uint32_t;
++typedef u64 uint64_t;
++typedef s8  int8_t;
++typedef s16 int16_t;
++typedef s32 int32_t;
++typedef s64 int64_t;
++
+ #define min(x,y) ({ \
+ 	typeof(x) _x = (x);	\
+ 	typeof(y) _y = (y);	\
+-- 
+2.8.1
+
diff --git a/openpower/linux/0008-tty-hvc-Use-opal-irqchip-interface-if-available.patch b/openpower/linux/0008-tty-hvc-Use-opal-irqchip-interface-if-available.patch
new file mode 100644
index 0000000..e4efe68
--- /dev/null
+++ b/openpower/linux/0008-tty-hvc-Use-opal-irqchip-interface-if-available.patch
@@ -0,0 +1,38 @@
+From 02f5c9908edd9066788c53a0175ba9d3d217248c Mon Sep 17 00:00:00 2001
+From: Samuel Mendoza-Jonas <sam@mendozajonas.com>
+Date: Wed, 13 Jul 2016 11:15:42 +1000
+Subject: [PATCH 08/10] tty/hvc: Use opal irqchip interface if available
+
+Update the hvc driver to use the OPAL irqchip if made available by the
+running firmware. If it is not present, the driver falls back to the
+existing OPAL event number.
+
+Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
+Cc: <stable@vger.kernel.org> # 4.1.x-
+Signed-off-by: Joel Stanley <joel@jms.id.au>
+---
+ drivers/tty/hvc/hvc_opal.c | 8 +++++++-
+ 1 file changed, 7 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/tty/hvc/hvc_opal.c b/drivers/tty/hvc/hvc_opal.c
+index 47b54c6aefd2..276b796b24e4 100644
+--- a/drivers/tty/hvc/hvc_opal.c
++++ b/drivers/tty/hvc/hvc_opal.c
+@@ -214,7 +214,13 @@ static int hvc_opal_probe(struct platform_device *dev)
+ 		dev->dev.of_node->full_name,
+ 		boot ? " (boot console)" : "");
+ 
+-	irq = opal_event_request(ilog2(OPAL_EVENT_CONSOLE_INPUT));
++	irq = irq_of_parse_and_map(dev->dev.of_node, 0);
++	if (!irq) {
++		pr_info("hvc%d: No interrupts property, using OPAL event\n",
++				termno);
++		irq = opal_event_request(ilog2(OPAL_EVENT_CONSOLE_INPUT));
++	}
++
+ 	if (!irq) {
+ 		pr_err("hvc_opal: Unable to map interrupt for device %s\n",
+ 			dev->dev.of_node->full_name);
+-- 
+2.8.1
+
diff --git a/openpower/linux/0009-tty-hvc-Use-IRQF_SHARED-for-OPAL-hvc-consoles.patch b/openpower/linux/0009-tty-hvc-Use-IRQF_SHARED-for-OPAL-hvc-consoles.patch
new file mode 100644
index 0000000..dc67554
--- /dev/null
+++ b/openpower/linux/0009-tty-hvc-Use-IRQF_SHARED-for-OPAL-hvc-consoles.patch
@@ -0,0 +1,88 @@
+From 42474bf9816cd3f7498e606494050ac30cf803e8 Mon Sep 17 00:00:00 2001
+From: Samuel Mendoza-Jonas <sam@mendozajonas.com>
+Date: Wed, 13 Jul 2016 11:15:41 +1000
+Subject: [PATCH 09/10] tty/hvc: Use IRQF_SHARED for OPAL hvc consoles
+
+Commit 2def86a7200c
+("hvc: Convert to using interrupts instead of opal events")
+enabled the use of interrupts in the hvc_driver for OPAL platforms.
+However on machines with more than one hvc console, any console after
+the first will fail to register an interrupt handler in
+notifier_add_irq() since all consoles share the same IRQ number but do
+not set the IRQF_SHARED flag:
+
+[   51.179907] genirq: Flags mismatch irq 31. 00000000 (hvc_console) vs.
+00000000 (hvc_console)
+[   51.180010] hvc_open: request_irq failed with rc -16.
+
+This error propagates up to hvc_open() and the console is closed, but
+OPAL will still generate interrupts that are not handled, leading to
+rcu_sched stall warnings.
+
+Set IRQF_SHARED when calling request_irq, allowing additional consoles
+to start properly. This is only set for consoles handled by
+hvc_opal_probe(), leaving other types unaffected.
+
+Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
+Cc: <stable@vger.kernel.org> # 4.1.x-
+Signed-off-by: Joel Stanley <joel@jms.id.au>
+---
+ drivers/tty/hvc/hvc_console.h | 1 +
+ drivers/tty/hvc/hvc_irq.c     | 7 +++++--
+ drivers/tty/hvc/hvc_opal.c    | 3 +++
+ 3 files changed, 9 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/tty/hvc/hvc_console.h b/drivers/tty/hvc/hvc_console.h
+index 913101980827..798c48d0d32c 100644
+--- a/drivers/tty/hvc/hvc_console.h
++++ b/drivers/tty/hvc/hvc_console.h
+@@ -60,6 +60,7 @@ struct hvc_struct {
+ 	struct winsize ws;
+ 	struct work_struct tty_resize;
+ 	struct list_head next;
++	unsigned long flags;
+ };
+ 
+ /* implemented by a low level driver */
+diff --git a/drivers/tty/hvc/hvc_irq.c b/drivers/tty/hvc/hvc_irq.c
+index c9adb0559f61..57d9df7ee1c9 100644
+--- a/drivers/tty/hvc/hvc_irq.c
++++ b/drivers/tty/hvc/hvc_irq.c
+@@ -14,6 +14,9 @@ static irqreturn_t hvc_handle_interrupt(int irq, void *dev_instance)
+ 	/* if hvc_poll request a repoll, then kick the hvcd thread */
+ 	if (hvc_poll(dev_instance))
+ 		hvc_kick();
++	/* We're safe to always return IRQ_HANDLED as the hvcd thread will
++	 * iterate through each hvc_struct
++	 */
+ 	return IRQ_HANDLED;
+ }
+ 
+@@ -28,8 +31,8 @@ int notifier_add_irq(struct hvc_struct *hp, int irq)
+ 		hp->irq_requested = 0;
+ 		return 0;
+ 	}
+-	rc = request_irq(irq, hvc_handle_interrupt, 0,
+-			   "hvc_console", hp);
++	rc = request_irq(irq, hvc_handle_interrupt, hp->flags,
++			"hvc_console", hp);
+ 	if (!rc)
+ 		hp->irq_requested = 1;
+ 	return rc;
+diff --git a/drivers/tty/hvc/hvc_opal.c b/drivers/tty/hvc/hvc_opal.c
+index 276b796b24e4..510799311099 100644
+--- a/drivers/tty/hvc/hvc_opal.c
++++ b/drivers/tty/hvc/hvc_opal.c
+@@ -230,6 +230,9 @@ static int hvc_opal_probe(struct platform_device *dev)
+ 	hp = hvc_alloc(termno, irq, ops, MAX_VIO_PUT_CHARS);
+ 	if (IS_ERR(hp))
+ 		return PTR_ERR(hp);
++
++	/* hvc consoles on powernv may need to share a single irq */
++	hp->flags = IRQF_SHARED;
+ 	dev_set_drvdata(&dev->dev, hp);
+ 
+ 	return 0;
+-- 
+2.8.1
+
diff --git a/openpower/linux/linux-0007-Release-4.4.14-openpower1.patch b/openpower/linux/0010-Release-4.4.16-openpower1.patch
similarity index 70%
rename from openpower/linux/linux-0007-Release-4.4.14-openpower1.patch
rename to openpower/linux/0010-Release-4.4.16-openpower1.patch
index 7656f4b..d633d26 100644
--- a/openpower/linux/linux-0007-Release-4.4.14-openpower1.patch
+++ b/openpower/linux/0010-Release-4.4.16-openpower1.patch
@@ -1,7 +1,7 @@
-From 916185a5a9dab937e0d2e4cea3f7a8f000f9e021 Mon Sep 17 00:00:00 2001
+From e27e36de137244ab337ed6a098d9777e6754d806 Mon Sep 17 00:00:00 2001
 From: Joel Stanley <joel@jms.id.au>
 Date: Thu, 14 Apr 2016 21:40:26 +0930
-Subject: [PATCH 7/7] Release 4.4.14-openpower1
+Subject: [PATCH 10/10] Release 4.4.16-openpower1
 
 Signed-off-by: Joel Stanley <joel@jms.id.au>
 ---
@@ -9,13 +9,13 @@
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/Makefile b/Makefile
-index fadbb9d73c6d..33c5654b1805 100644
+index da7621cadc8e..0207133997ad 100644
 --- a/Makefile
 +++ b/Makefile
 @@ -1,7 +1,7 @@
  VERSION = 4
  PATCHLEVEL = 4
- SUBLEVEL = 14
+ SUBLEVEL = 16
 -EXTRAVERSION =
 +EXTRAVERSION = -openpower1
  NAME = Blurry Fish Butt
diff --git a/openpower/linux/linux-0002-Revert-usb-xhci-stop-everything-on-the-first-call-to.patch b/openpower/linux/linux-0002-Revert-usb-xhci-stop-everything-on-the-first-call-to.patch
deleted file mode 100644
index 5c10436..0000000
--- a/openpower/linux/linux-0002-Revert-usb-xhci-stop-everything-on-the-first-call-to.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From 2481d9f7a822f3e5273c9bd4e273685eeb939b26 Mon Sep 17 00:00:00 2001
-From: Joel Stanley <joel@jms.id.au>
-Date: Thu, 28 Jan 2016 13:07:06 +1030
-Subject: [PATCH 2/7] Revert "usb: xhci: stop everything on the first call to
- xhci_stop"
-
-This reverts commit 8c24d6d7b09deee3036ddc4f2b81b53b28c8f877.
-
-With this patch, the driver stops everything at the first call to
-xhci_stop, which is always for the secondary HCD when executing the
-.remove handler. We instead want to only stop when the primray HCD is
-shutting down.
-
-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 ec9e758d5fcd..0e66476d4866 100644
---- a/drivers/usb/host/xhci.c
-+++ b/drivers/usb/host/xhci.c
-@@ -666,6 +666,15 @@ int xhci_run(struct usb_hcd *hcd)
- }
- EXPORT_SYMBOL_GPL(xhci_run);
- 
-+static void xhci_only_stop_hcd(struct usb_hcd *hcd)
-+{
-+	struct xhci_hcd *xhci = hcd_to_xhci(hcd);
-+
-+	spin_lock_irq(&xhci->lock);
-+	xhci_halt(xhci);
-+	spin_unlock_irq(&xhci->lock);
-+}
-+
- /*
-  * Stop xHCI driver.
-  *
-@@ -680,14 +689,15 @@ void xhci_stop(struct usb_hcd *hcd)
- 	u32 temp;
- 	struct xhci_hcd *xhci = hcd_to_xhci(hcd);
- 
--	if (xhci->xhc_state & XHCI_STATE_HALTED)
-+	mutex_lock(&xhci->mutex);
-+
-+	if (!usb_hcd_is_primary_hcd(hcd)) {
-+		xhci_only_stop_hcd(xhci->shared_hcd);
-+		mutex_unlock(&xhci->mutex);
- 		return;
-+	}
- 
--	mutex_lock(&xhci->mutex);
- 	spin_lock_irq(&xhci->lock);
--	xhci->xhc_state |= XHCI_STATE_HALTED;
--	xhci->cmd_ring_state = CMD_RING_STATE_STOPPED;
--
- 	/* Make sure the xHC is halted for a USB3 roothub
- 	 * (xhci_stop() could be called as part of failed init).
- 	 */
--- 
-2.8.1
-
diff --git a/openpower/linux/linux-0003-xhci-do-not-halt-the-secondary-HCD.patch b/openpower/linux/linux-0003-xhci-do-not-halt-the-secondary-HCD.patch
deleted file mode 100644
index 6e1430e..0000000
--- a/openpower/linux/linux-0003-xhci-do-not-halt-the-secondary-HCD.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 855a1108e1dc8f18121e16fce490c590c4a51bf8 Mon Sep 17 00:00:00 2001
-From: Thadeu Lima de Souza Cascardo <cascardo@linux.vnet.ibm.com>
-Date: Mon, 10 Mar 2014 13:02:13 -0300
-Subject: [PATCH 3/7] 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: Jeremy Kerr <jk@ozlabs.org>
-Signed-off-by: Joel Stanley <joel@jms.id.au>
----
- drivers/usb/host/xhci.c | 13 ++++++++++++-
- 1 file changed, 12 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
-index 0e66476d4866..ce7b10506bac 100644
---- a/drivers/usb/host/xhci.c
-+++ b/drivers/usb/host/xhci.c
-@@ -671,7 +671,18 @@ static void xhci_only_stop_hcd(struct usb_hcd *hcd)
- 	struct xhci_hcd *xhci = hcd_to_xhci(hcd);
- 
- 	spin_lock_irq(&xhci->lock);
--	xhci_halt(xhci);
-+	/*
-+	 * 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.
-+	 */
-+	/*xhci_halt(xhci);*/
-+
-+	/* 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;
- 	spin_unlock_irq(&xhci->lock);
- }
- 
--- 
-2.8.1
-
diff --git a/openpower/package/Config.in b/openpower/package/Config.in
index 902d2ec..571d4c0 100755
--- a/openpower/package/Config.in
+++ b/openpower/package/Config.in
@@ -1,6 +1,8 @@
 source "$BR2_EXTERNAL/package/openpower-ffs/Config.in"
 source "$BR2_EXTERNAL/package/hostboot/Config.in"
 source "$BR2_EXTERNAL/package/hostboot-binaries/Config.in"
+source "$BR2_EXTERNAL/package/openpower-mrw/Config.in"
+source "$BR2_EXTERNAL/package/common-p8-xml/Config.in"
 source "$BR2_EXTERNAL/package/palmetto-xml/Config.in"
 source "$BR2_EXTERNAL/package/habanero-xml/Config.in"
 source "$BR2_EXTERNAL/package/firestone-xml/Config.in"
diff --git a/openpower/package/barreleye-xml/Config.in b/openpower/package/barreleye-xml/Config.in
index 9187dac..5a8ba74 100755
--- a/openpower/package/barreleye-xml/Config.in
+++ b/openpower/package/barreleye-xml/Config.in
@@ -1,6 +1,7 @@
 config BR2_PACKAGE_BARRELEYE_XML
         bool "barreleye_xml"
         default y if (BR2_OPENPOWER_CONFIG_NAME = "barreleye")
+        select BR2_PACKAGE_COMMON_P8_XML
         help
             Utilites for building xml and the targeting binary image
 
diff --git a/openpower/package/barreleye-xml/barreleye-xml.mk b/openpower/package/barreleye-xml/barreleye-xml.mk
index b18b14c..13a3365 100755
--- a/openpower/package/barreleye-xml/barreleye-xml.mk
+++ b/openpower/package/barreleye-xml/barreleye-xml.mk
@@ -4,11 +4,11 @@
 #
 ################################################################################
 
-BARRELEYE_XML_VERSION ?= 81ac3ff3c4ccd16d2174f455c1cb17976daca948
+BARRELEYE_XML_VERSION ?= 253622f22fe142ea67a0025e9bcc3044db038898
 BARRELEYE_XML_SITE = $(call github,open-power,barreleye-xml,$(BARRELEYE_XML_VERSION))
 
 BARRELEYE_XML_LICENSE = Apache-2.0
-BARRELEYE_XML_DEPENDENCIES = hostboot-install-images openpower-mrw-install-images common-p8-xml-install-images
+BARRELEYE_XML_DEPENDENCIES = hostboot openpower-mrw common-p8-xml
 
 BARRELEYE_XML_INSTALL_IMAGES = YES
 BARRELEYE_XML_INSTALL_TARGET = YES
diff --git a/openpower/package/common-p8-xml/Config.in b/openpower/package/common-p8-xml/Config.in
index e69de29..2c01702 100644
--- a/openpower/package/common-p8-xml/Config.in
+++ b/openpower/package/common-p8-xml/Config.in
@@ -0,0 +1,4 @@
+config BR2_PACKAGE_COMMON_P8_XML
+        bool "Common P8 XML files"
+        default y if BR2_PACKAGE_HOSTBOOT
+        select BR2_PACKAGE_OPENPOWER_MRW
diff --git a/openpower/package/firestone-xml/Config.in b/openpower/package/firestone-xml/Config.in
index f0c0948..3990b29 100755
--- a/openpower/package/firestone-xml/Config.in
+++ b/openpower/package/firestone-xml/Config.in
@@ -1,6 +1,7 @@
 config BR2_PACKAGE_FIRESTONE_XML
         bool "firestone_xml"
         default y if (BR2_OPENPOWER_CONFIG_NAME = "firestone")
+        select BR2_PACKAGE_COMMON_P8_XML
         help
             Utilites for building xml and the targeting binary image
 
diff --git a/openpower/package/firestone-xml/firestone.mk b/openpower/package/firestone-xml/firestone.mk
index 5f631fd..c86a441 100644
--- a/openpower/package/firestone-xml/firestone.mk
+++ b/openpower/package/firestone-xml/firestone.mk
@@ -4,11 +4,11 @@
 #
 ################################################################################
 
-FIRESTONE_XML_VERSION ?= 15e371874a8dec1d8ef279aef2d0a0fed3ded8dd
+FIRESTONE_XML_VERSION ?= 783df1f6efce8f0283ca6683825578d1a260cad3
 FIRESTONE_XML_SITE ?= $(call github,open-power,firestone-xml,$(FIRESTONE_XML_VERSION))
 
 FIRESTONE_XML_LICENSE = Apache-2.0
-FIRESTONE_XML_DEPENDENCIES = hostboot-install-images openpower-mrw-install-images common-p8-xml-install-images
+FIRESTONE_XML_DEPENDENCIES = hostboot openpower-mrw common-p8-xml
 
 FIRESTONE_XML_INSTALL_IMAGES = YES
 FIRESTONE_XML_INSTALL_TARGET = YES
diff --git a/openpower/package/garrison-xml/Config.in b/openpower/package/garrison-xml/Config.in
index a1626d0..a71a2c8 100755
--- a/openpower/package/garrison-xml/Config.in
+++ b/openpower/package/garrison-xml/Config.in
@@ -1,6 +1,7 @@
 config BR2_PACKAGE_GARRISON_XML
         bool "garrison_xml"
         default y if (BR2_OPENPOWER_CONFIG_NAME = "garrison")
+        select BR2_PACKAGE_COMMON_P8_XML
         help
             Utilites for building xml and the targeting binary image
 
diff --git a/openpower/package/garrison-xml/garrison.mk b/openpower/package/garrison-xml/garrison.mk
index fd13639..b6e8b1e 100644
--- a/openpower/package/garrison-xml/garrison.mk
+++ b/openpower/package/garrison-xml/garrison.mk
@@ -4,11 +4,11 @@
 #
 ################################################################################
 
-GARRISON_XML_VERSION ?= b453a813d4c384d9b6d25fa43b84dd6b77f83a82
+GARRISON_XML_VERSION ?= dce13e14fb143c18c45a4d59dec482f84d1bc4ec
 GARRISON_XML_SITE ?= $(call github,open-power,garrison-xml,$(GARRISON_XML_VERSION))
 
 GARRISON_XML_LICENSE = Apache-2.0
-GARRISON_XML_DEPENDENCIES = hostboot-install-images openpower-mrw-install-images common-p8-xml-install-images
+GARRISON_XML_DEPENDENCIES = hostboot openpower-mrw common-p8-xml
 
 GARRISON_XML_INSTALL_IMAGES = YES
 GARRISON_XML_INSTALL_TARGET = YES
diff --git a/openpower/package/habanero-xml/Config.in b/openpower/package/habanero-xml/Config.in
index 2939cb6..02420ce 100755
--- a/openpower/package/habanero-xml/Config.in
+++ b/openpower/package/habanero-xml/Config.in
@@ -1,6 +1,7 @@
 config BR2_PACKAGE_HABANERO_XML
         bool "habanero_xml"
         default y if (BR2_OPENPOWER_CONFIG_NAME = "habanero")
+        select BR2_PACKAGE_COMMON_P8_XML
         help
             Utilites for building xml and the targeting binary image
 
diff --git a/openpower/package/habanero-xml/habanero-xml.mk b/openpower/package/habanero-xml/habanero-xml.mk
index b85a952..307c47d 100644
--- a/openpower/package/habanero-xml/habanero-xml.mk
+++ b/openpower/package/habanero-xml/habanero-xml.mk
@@ -4,11 +4,11 @@
 #
 ################################################################################
 
-HABANERO_XML_VERSION ?= 5a2a5413a6e2cd55f2e30342e898980a3d3a15d7
+HABANERO_XML_VERSION ?= 5565b8fe1feaa4cdb3b296912069c02f46c4cc59
 HABANERO_XML_SITE ?= $(call github,open-power,habanero-xml,$(HABANERO_XML_VERSION))
 
 HABANERO_XML_LICENSE = Apache-2.0
-HABANERO_XML_DEPENDENCIES = hostboot-install-images openpower-mrw-install-images common-p8-xml-install-images
+HABANERO_XML_DEPENDENCIES = hostboot openpower-mrw common-p8-xml
 
 HABANERO_XML_INSTALL_IMAGES = YES
 HABANERO_XML_INSTALL_TARGET = YES
diff --git a/openpower/package/hostboot/hostboot.mk b/openpower/package/hostboot/hostboot.mk
index b922fa0..3f57ae1 100644
--- a/openpower/package/hostboot/hostboot.mk
+++ b/openpower/package/hostboot/hostboot.mk
@@ -4,7 +4,7 @@
 #
 ################################################################################
 
-HOSTBOOT_VERSION ?= 66caa2dc2aa1706e8acc8b19b08338bbce8ef414
+HOSTBOOT_VERSION ?= 37fd71e4e7b1c609bc8d977f18f5510643a220e8
 HOSTBOOT_SITE ?= $(call github,open-power,hostboot,$(HOSTBOOT_VERSION))
 
 HOSTBOOT_LICENSE = Apache-2.0
diff --git a/openpower/package/openpower-mrw/Config.in b/openpower/package/openpower-mrw/Config.in
index e69de29..633e166 100644
--- a/openpower/package/openpower-mrw/Config.in
+++ b/openpower/package/openpower-mrw/Config.in
@@ -0,0 +1,3 @@
+config BR2_PACKAGE_OPENPOWER_MRW
+        bool "Machine Readable Workbook (MRW) infrastructure"
+        default y if BR2_PACKAGE_HOSTBOOT
diff --git a/openpower/package/openpower-pnor/Config.in b/openpower/package/openpower-pnor/Config.in
index cc7cc71..7719eda 100644
--- a/openpower/package/openpower-pnor/Config.in
+++ b/openpower/package/openpower-pnor/Config.in
@@ -1,6 +1,17 @@
 config BR2_PACKAGE_OPENPOWER_PNOR
         bool "openpower_pnor"
         default y if (BR2_OPENPOWER_PLATFORM && BR2_powerpc_power8)
+        select BR2_PACKAGE_HOSTBOOT
+        select BR2_PACKAGE_HOSTBOOT_BINARIES
+        select BR2_PACKAGE_SKIBOOT
+        select BR2_PACKAGE_OPENPOWER_FFS
+        select BR2_PACKAGE_OCC
+        select BR2_PACKAGE_CAPP_UCODE
+        select BR2_PACKAGE_BARRELEYE_XML if (BR2_OPENPOWER_XML_PACKAGE = "barreleye-xml")
+        select BR2_PACKAGE_FIRESTONE_XML if (BR2_OPENPOWER_XML_PACKAGE = "firestone-xml")
+        select BR2_PACKAGE_GARRISON_XML if (BR2_OPENPOWER_XML_PACKAGE = "garrison-xml")
+        select BR2_PACKAGE_HABANERO_XML if (BR2_OPENPOWER_XML_PACKAGE = "habanero-xml")
+        select BR2_PACKAGE_PALMETTO_XML if (BR2_OPENPOWER_XML_PACKAGE = "palmetto-xml")
         help
             Utilites for building a targeting binary image
 
@@ -37,7 +48,8 @@
 
 config BR2_TARGET_SKIBOOT_XZ
         boolean "Compress the skiboot image with XZ"
-        default n
+        select BR2_OPENPOWER_PNOR_XZ_ENABLED
+        default y
 
 config BR2_SKIBOOT_LID_XZ_NAME
         string "Name of compressed skiboot lid"
@@ -73,6 +85,5 @@
             String used to define name of openpower targeting binary file, ecc protected
 
 config BR2_OPENPOWER_PNOR_XZ_ENABLED
-        string "False if we are not compressing with XZ anywhere"
-        default "false" if !BR2_TARGET_SKIBOOT_XZ
-        default "true" if BR2_TARGET_SKIBOOT_XZ
+        bool "Enable xz compression in PNOR payloads"
+        default n
diff --git a/openpower/package/openpower-pnor/openpower-pnor.mk b/openpower/package/openpower-pnor/openpower-pnor.mk
index a80a5ec..cb04f95 100644
--- a/openpower/package/openpower-pnor/openpower-pnor.mk
+++ b/openpower/package/openpower-pnor/openpower-pnor.mk
@@ -8,7 +8,7 @@
 # make doesn't care for quotes in the dependencies.
 XML_PACKAGE=$(subst $\",,$(BR2_OPENPOWER_XML_PACKAGE))
 
-OPENPOWER_PNOR_VERSION ?= a3df90817b7046a26005f2333ae90eae22e53be1
+OPENPOWER_PNOR_VERSION ?= aecc4c0c73c176ddd6b180ebd1728cc8bdff71a2
 OPENPOWER_PNOR_SITE ?= $(call github,open-power,pnor,$(OPENPOWER_PNOR_VERSION))
 
 OPENPOWER_PNOR_LICENSE = Apache-2.0
@@ -25,7 +25,7 @@
 endif
 
 ifeq ($(BR2_OPENPOWER_PNOR_XZ_ENABLED),y)
-OPENPOWER_PNOR_DEPENDENCIES += host_xz
+OPENPOWER_PNOR_DEPENDENCIES += host-xz
 endif
 
 
@@ -58,7 +58,7 @@
             -capp_binary_filename $(BINARIES_DIR)/$(BR2_CAPP_UCODE_BIN_FILENAME) \
             -openpower_version_filename $(OPENPOWER_PNOR_VERSION_FILE) \
             -payload $(BINARIES_DIR)/$(BR2_SKIBOOT_LID_NAME) \
-            -xz_compression $(BR2_OPENPOWER_PNOR_XZ_ENABLED)
+            $(if ($(BR2_OPENPOWER_PNOR_XZ_ENABLED),y),-xz_compression true)
 
         mkdir -p $(STAGING_DIR)/pnor/
         $(TARGET_MAKE_ENV) $(@D)/create_pnor_image.pl \
diff --git a/openpower/package/palmetto-xml/Config.in b/openpower/package/palmetto-xml/Config.in
index b07d517..05a094f 100755
--- a/openpower/package/palmetto-xml/Config.in
+++ b/openpower/package/palmetto-xml/Config.in
@@ -1,6 +1,7 @@
 config BR2_PACKAGE_PALMETTO_XML
         bool "palmetto_xml"
         default y if (BR2_OPENPOWER_CONFIG_NAME = "palmetto")
+        select BR2_PACKAGE_COMMON_P8_XML
         help
             Utilites for building xml and the targeting binary image
 
diff --git a/openpower/package/palmetto-xml/palmetto-xml.mk b/openpower/package/palmetto-xml/palmetto-xml.mk
index 8130f4e..7cc554d 100644
--- a/openpower/package/palmetto-xml/palmetto-xml.mk
+++ b/openpower/package/palmetto-xml/palmetto-xml.mk
@@ -4,11 +4,11 @@
 #
 ################################################################################
 
-PALMETTO_XML_VERSION ?= 82818682f2c2009c30d700df6d5f8897a3096e4f
+PALMETTO_XML_VERSION ?= c6f563966e9fadc4fb60194c064b2310c9b916b1
 PALMETTO_XML_SITE = $(call github,open-power,palmetto-xml,$(PALMETTO_XML_VERSION))
 
 PALMETTO_XML_LICENSE = Apache-2.0
-PALMETTO_XML_DEPENDENCIES = hostboot-install-images openpower-mrw-install-images common-p8-xml-install-images
+PALMETTO_XML_DEPENDENCIES = hostboot openpower-mrw common-p8-xml
 
 PALMETTO_XML_INSTALL_IMAGES = YES
 PALMETTO_XML_INSTALL_TARGET = YES
diff --git a/openpower/package/petitboot/Config.in b/openpower/package/petitboot/Config.in
index e5769de..327f852 100644
--- a/openpower/package/petitboot/Config.in
+++ b/openpower/package/petitboot/Config.in
@@ -13,8 +13,6 @@
 	select BR2_PACKAGE_POWERPC_UTILS if BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le
 	# run-time dependency only
 	select BR2_PACKAGE_IPRUTILS if BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le
-	# run-time dependency only
-	select BR2_PACKAGE_NVME if BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le
 	help
 	  Petitboot is a small kexec-based bootloader
 
diff --git a/openpower/package/petitboot/petitboot.mk b/openpower/package/petitboot/petitboot.mk
index 8e9782e..4d94361 100644
--- a/openpower/package/petitboot/petitboot.mk
+++ b/openpower/package/petitboot/petitboot.mk
@@ -4,7 +4,7 @@
 #
 ################################################################################
 
-PETITBOOT_VERSION = v1.2.0
+PETITBOOT_VERSION = v1.2.1
 PETITBOOT_SITE ?= $(call github,open-power,petitboot,$(PETITBOOT_VERSION))
 PETITBOOT_DEPENDENCIES = ncurses udev host-bison host-flex lvm2
 PETITBOOT_LICENSE = GPLv2
diff --git a/openpower/package/skiboot/Config.in b/openpower/package/skiboot/Config.in
index 4f9c943..be8370e 100644
--- a/openpower/package/skiboot/Config.in
+++ b/openpower/package/skiboot/Config.in
@@ -31,7 +31,7 @@
 
 config BR2_SKIBOOT_VERSION
 	string
-	default "skiboot-5.2.4" if BR2_SKIBOOT_LATEST_VERSION
+	default "skiboot-5.2.5" if BR2_SKIBOOT_LATEST_VERSION
 	default BR2_SKIBOOT_CUSTOM_VERSION_VALUE \
 		if BR2_SKIBOOT_CUSTOM_VERSION
 
diff --git a/openpower/package/skiboot/skiboot.mk b/openpower/package/skiboot/skiboot.mk
index 90b2110..8ff9159 100644
--- a/openpower/package/skiboot/skiboot.mk
+++ b/openpower/package/skiboot/skiboot.mk
@@ -7,6 +7,7 @@
 SKIBOOT_VERSION = $(call qstrip,$(BR2_SKIBOOT_VERSION))
 
 SKIBOOT_SITE = $(call github,open-power,skiboot,$(SKIBOOT_VERSION))
+SKIBOOT_LICENSE = Apache-2.0
 SKIBOOT_INSTALL_IMAGES = YES
 SKIBOOT_INSTALL_TARGET = NO
 
diff --git a/openpower/scripts/firenze-firmware-whitelist b/openpower/scripts/firenze-firmware-whitelist
new file mode 100755
index 0000000..801ef8b
--- /dev/null
+++ b/openpower/scripts/firenze-firmware-whitelist
@@ -0,0 +1,46 @@
+#!/bin/bash
+# Scan the /lib/firmware directory of the target and delete any firmware
+# binaries that are not in our whitelist
+
+# A whitelist of entire directories or specific binary files
+whitelist=(     'acenic'
+                'bnx2'
+                'bnx2x'
+                'cxgb4'
+                'cxgb3'
+                'e100'
+                'radeon/CAICOS_me.bin'
+                'radeon/CEDAR_rlc.bin'
+                'radeon/CAICOS_mc.bin'
+                'radeon/CAICOS_pfp.bin'
+                'radeon/CEDAR_pfp.bin'
+                'radeon/CAICOS_smc.bin'
+                'radeon/CEDAR_smc.bin'
+                'radeon/CEDAR_me.bin'
+                'radeon/CYPRESS_uvd.bin')
+
+if [ -z "${TARGET_DIR}" ] ; then
+        echo "TARGET_DIR not defined, setting to $1"
+        TARGET_DIR=$1
+fi
+
+files=$(find ${TARGET_DIR}/lib/firmware/*)
+for file in ${files};
+do
+        if [ -d  $file ] ; then
+                continue
+        fi
+
+        found=0
+        for item in ${whitelist[@]};
+        do
+                if [ "${file/${item}}" != "${file}" ] ; then
+                        found=1
+                        break
+                fi
+        done
+
+        if [ "${found}" -ne "1" ] ; then
+                rm -v ${file}
+        fi
+done
diff --git a/openpower/scripts/op-target-dependencies b/openpower/scripts/op-target-dependencies
index cd24a56..c99c69d 100755
--- a/openpower/scripts/op-target-dependencies
+++ b/openpower/scripts/op-target-dependencies
@@ -56,7 +56,6 @@
     my $package = shift;
     my $level = shift;
 
-    $package =~ s/-install-images//;    # Strip off -install-images subpass.
     $package =~ s/-rebuild.*//;         # Strip off -rebuild* subpass.
     $package =~ s/linux[0-9]*/linux/;   # Strip off linux version.
 
diff --git a/openpower/scripts/release-notes b/openpower/scripts/release-notes
new file mode 100755
index 0000000..402c88d
--- /dev/null
+++ b/openpower/scripts/release-notes
@@ -0,0 +1,180 @@
+#!/bin/env perl
+use strict;
+
+my $repos =
+{
+    'op-build' => { REPO => "http://github.com/open-power/op-build" },
+    'hostboot' => { REPO => "http://github.com/open-power/hostboot" ,
+                    DIR => "openpower/package/hostboot",
+                    PACKAGE => "HOSTBOOT" },
+    'skiboot'  => { REPO => "http://github.com/open-power/skiboot" ,
+                    DIR => "openpower/package/skiboot",
+                    PACKAGE => "SKIBOOT" },
+    'occ'      => { REPO => "http://github.com/open-power/occ" ,
+                    DIR => "openpower/package/occ",
+                    PACKAGE => "OCC" },
+    'pnor'     => { REPO => "http://github.com/open-power/pnor" ,
+                    DIR => "openpower/package/openpower-pnor",
+                    PACKAGE => "OPENPOWER_PNOR" },
+    'palmetto-xml' => { REPO => "http://github.com/open-power/palmetto-xml" ,
+                    DIR => "openpower/package/palmetto-xml",
+                    PACKAGE => "PALMETTO_XML" },
+    'habanero-xml' => { REPO => "http://github.com/open-power/habanero-xml" ,
+                    DIR => "openpower/package/habanero-xml",
+                    PACKAGE => "HABANERO_XML" },
+    'firestone-xml' => { REPO => "http://github.com/open-power/firestone-xml" ,
+                    DIR => "openpower/package/firestone-xml",
+                    PACKAGE => "FIRESTONE_XML" },
+    'garrison-xml'  => { REPO => "http://github.com/open-power/garrison-xml" ,
+                    DIR => "openpower/package/garrison-xml",
+                    PACKAGE => "GARRISON_XML" },
+    'barreleye-xml'  => { REPO => "http://github.com/open-power/barreleye-xml" ,
+                    DIR => "openpower/package/barreleye-xml",
+                    PACKAGE => "BARRELEYE_XML" },
+    'petitboot'     => { REPO => "http://github.com/open-power/petitboot" ,
+                    DIR => "openpower/package/petitboot",
+                    PACKAGE => "PETITBOOT" },
+};
+
+my $begin_release = shift;
+my $end_release = shift;
+
+foreach my $repo (keys %{$repos})
+{
+    if (-e $repo)
+    {
+        system("cd $repo; git fetch") && die "Could not fetch $repo";
+    }
+    else
+    {
+        system("git clone $repos->{$repo}->{REPO} $repo") &&
+            die "Could not clone $repo";
+    }
+}
+
+system("cd op-build; git checkout $end_release --force; git reset HEAD --hard");
+
+
+open(OP_SUMMARY, "cd op-build; ".
+        "git diff $begin_release...$end_release --name-only |".
+        "grep -e \"\.mk\" -e \"Config.in\" |".
+        "xargs git diff $begin_release...$end_release -- |".
+        "grep -e '^[+-][^[:space:]]*_VERSION' ".
+        "-e'^[+-][[:space:]]*default.*if.*LATEST_VERSION' |") || die;
+
+my $old_level = {};
+my $new_level = {};
+
+while(my $line = <OP_SUMMARY>)
+{
+    chomp $line;
+    if ($line =~ m/\$/) # Sanity check there are not variables here.
+    {
+        next;
+    }
+    if ($line =~ m/-([^[:space:]]*)_VERSION([[:space:]]*\?*=[[:space:]]*)(.*)/)
+    {
+        print "Old $1:$3\n";
+        $old_level->{$1} = $3;
+    }
+    if ($line =~ m/\+([^[:space:]]*)_VERSION([[:space:]]*\?*=[[:space:]]*)(.*)/)
+    {
+        print "New $1:$3\n";
+        $new_level->{$1} = $3;
+    }
+    if ($line =~ m/-[[:space:]]*default[[:space:]]*"([^[:space:]]*)"[[:space:]]*if[[:space:]]BR2_([^[:space:]]*)_LATEST_VERSION/)
+    {
+        print "Old $2:$1\n";
+        $old_level->{$2} = $1;
+    }
+    if ($line =~ m/\+[[:space:]]*default[[:space:]]*"([^[:space:]]*)"[[:space:]]*if[[:space:]]BR2_([^[:space:]]*)_LATEST_VERSION/)
+    {
+        print "New $2:$1\n";
+        $new_level->{$2} = $1;
+    }
+}
+
+open(OUTPUT, "> RELEASE.md") || die "Failed to open RELEASE.md";
+
+print OUTPUT "# Release Notes for OpenPower Firmware $end_release\n";
+
+my $op_url = $repos->{'op-build'}->{REPO};
+
+foreach my $repo (sort keys %{$repos})
+{
+    next if (not exists $repos->{$repo}->{PACKAGE});
+
+    my $package = $repos->{$repo}->{PACKAGE};
+    my $url = $repos->{$repo}->{REPO};
+    my $dir = $repos->{$repo}->{DIR};
+
+    print OUTPUT "## Package: $repo\n";
+    print OUTPUT "[Repository]($url)\n";
+    print OUTPUT "\n";
+
+    my $package = $repos->{$repo}->{PACKAGE};
+
+    # Display patches.
+    if (open(LSLOG, "ls op-build/$dir/*.patch | ".
+                    "xargs -n1 --no-run-if-empty basename |"))
+    {
+        print OUTPUT "### Patches\n";
+        while (my $logline = <LSLOG>)
+        {
+            chomp $logline;
+            print OUTPUT "* [$logline]".
+                "($op_url/tree/$end_release/$dir/$logline)\n";
+        }
+        close LSLOG;
+        print OUTPUT "\n";
+    }
+    else
+    {
+        print OUTPUT "None.\n";
+    }
+
+    # Display changes.
+    print OUTPUT "### Commits\n";
+    if ((not exists $old_level->{$package}) &&
+        (not exists $new_level->{$package}))
+    {
+        # No change identified.
+        print "No changes: $repo\n";
+        print OUTPUT "No changes.\n";
+        next;
+    }
+
+    if ((exists $old_level->{$package}) &&
+        (exists $new_level->{$package}))
+    {
+        print "Changes in $repo...\n";
+
+        open(GITLOG, "cd $repo; git shortlog $old_level->{$package}...".
+                     "$new_level->{$package} --no-merges --format=".
+                     "\"* [%h]($url/commit/%h) %s\" |");
+
+        while (my $logline = <GITLOG>)
+        {
+            chomp $logline;
+            $logline =~ s/^[[:space:]]*//;
+            print OUTPUT "$logline\n";
+        }
+        close GITLOG;
+        print OUTPUT "\n";
+        next;
+    }
+
+    if (not exists $old_level->{$package})
+    {
+        print "New package $repo.\n";
+        print OUTPUT "New package.\n";
+        next;
+    }
+
+    if (not exists $new_level->{$package})
+    {
+        print "Deleted package $repo.\n";
+        print OUTPUT "Package removed.\n";
+        next;
+    }
+}
