diff --git a/openpower/configs/firestone_defconfig b/openpower/configs/firestone_defconfig
index 211b99d..eb4eb30 100644
--- a/openpower/configs/firestone_defconfig
+++ b/openpower/configs/firestone_defconfig
@@ -6,6 +6,7 @@
 BR2_EXTRA_GCC_CONFIG_OPTIONS="--enable-targets=powerpc64-linux"
 BR2_TOOLCHAIN_BUILDROOT_CXX=y
 # BR2_TOOLCHAIN_BUILDROOT_LIBSTDCPP is not set
+BR2_GLIBC_VERSION_2_22=y
 
 BR2_OPENPOWER_CONFIG_NAME="firestone"
 BR2_OPENPOWER_XML_PACKAGE="firestone-xml"
@@ -44,8 +45,8 @@
 BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var"
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_SAME_AS_HEADERS=y
-BR2_KERNEL_HEADERS_4_2=y
-BR2_DEFAULT_KERNEL_HEADERS="4.2.6"
+BR2_KERNEL_HEADERS_4_4=y
+BR2_DEFAULT_KERNEL_HEADERS="4.4"
 BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL)/linux"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
 BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL)/configs/linux/skiroot_defconfig"
diff --git a/openpower/configs/garrison_defconfig b/openpower/configs/garrison_defconfig
index 1a95416..1b5dc49 100644
--- a/openpower/configs/garrison_defconfig
+++ b/openpower/configs/garrison_defconfig
@@ -6,6 +6,7 @@
 BR2_EXTRA_GCC_CONFIG_OPTIONS="--enable-targets=powerpc64-linux"
 BR2_TOOLCHAIN_BUILDROOT_CXX=y
 # BR2_TOOLCHAIN_BUILDROOT_LIBSTDCPP is not set
+BR2_GLIBC_VERSION_2_22=y
 
 BR2_OPENPOWER_CONFIG_NAME="garrison"
 BR2_OPENPOWER_XML_PACKAGE="garrison-xml"
@@ -46,8 +47,8 @@
 BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var"
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_SAME_AS_HEADERS=y
-BR2_KERNEL_HEADERS_4_2=y
-BR2_DEFAULT_KERNEL_HEADERS="4.2.6"
+BR2_KERNEL_HEADERS_4_4=y
+BR2_DEFAULT_KERNEL_HEADERS="4.4"
 BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL)/linux"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
 BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL)/configs/linux/skiroot_defconfig"
diff --git a/openpower/configs/habanero_defconfig b/openpower/configs/habanero_defconfig
index 6ccb972..8cf6bd3 100644
--- a/openpower/configs/habanero_defconfig
+++ b/openpower/configs/habanero_defconfig
@@ -6,6 +6,7 @@
 BR2_EXTRA_GCC_CONFIG_OPTIONS="--enable-targets=powerpc64-linux"
 BR2_TOOLCHAIN_BUILDROOT_CXX=y
 # BR2_TOOLCHAIN_BUILDROOT_LIBSTDCPP is not set
+BR2_GLIBC_VERSION_2_22=y
 
 BR2_OPENPOWER_CONFIG_NAME="habanero"
 BR2_OPENPOWER_XML_PACKAGE="habanero-xml"
@@ -44,8 +45,8 @@
 BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var"
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_SAME_AS_HEADERS=y
-BR2_KERNEL_HEADERS_4_2=y
-BR2_DEFAULT_KERNEL_HEADERS="4.2.6"
+BR2_KERNEL_HEADERS_4_4=y
+BR2_DEFAULT_KERNEL_HEADERS="4.4"
 BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL)/linux"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
 BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL)/configs/linux/skiroot_defconfig"
diff --git a/openpower/configs/linux/skiroot_defconfig b/openpower/configs/linux/skiroot_defconfig
index 1a80631..56d80ed 100644
--- a/openpower/configs/linux/skiroot_defconfig
+++ b/openpower/configs/linux/skiroot_defconfig
@@ -35,7 +35,6 @@
 CONFIG_PARTITION_ADVANCED=y
 # CONFIG_IOSCHED_DEADLINE is not set
 # CONFIG_PPC_PSERIES is not set
-# CONFIG_PPC_PMAC is not set
 CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
 CONFIG_HZ_100=y
 CONFIG_KEXEC=y
@@ -159,7 +158,6 @@
 CONFIG_FB_MATROX_MILLENIUM=y
 CONFIG_FB_MATROX_MYSTIQUE=y
 CONFIG_FB_MATROX_G=y
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
 # CONFIG_LCD_CLASS_DEVICE is not set
 # CONFIG_BACKLIGHT_GENERIC is not set
 # CONFIG_VGA_CONSOLE is not set
@@ -210,4 +208,5 @@
 # CONFIG_FTRACE is not set
 CONFIG_XMON=y
 CONFIG_XMON_DEFAULT=y
+# CONFIG_CRYPTO_ECHAINIV is not set
 # CONFIG_CRYPTO_HW is not set
diff --git a/openpower/configs/openpower_mambo_defconfig b/openpower/configs/openpower_mambo_defconfig
index 82fe9e5..eb2ccbc 100644
--- a/openpower/configs/openpower_mambo_defconfig
+++ b/openpower/configs/openpower_mambo_defconfig
@@ -4,6 +4,7 @@
 
 BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="--enable-targets=powerpc64-linux"
 BR2_EXTRA_GCC_CONFIG_OPTIONS="--enable-targets=powerpc64-linux"
+BR2_GLIBC_VERSION_2_22=y
 
 # No HostBoot for Mambo
 BR2_PACKAGE_HOSTBOOT=n
@@ -32,8 +33,8 @@
 BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var"
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_SAME_AS_HEADERS=y
-BR2_KERNEL_HEADERS_4_2=y
-BR2_DEFAULT_KERNEL_HEADERS="4.2.6"
+BR2_KERNEL_HEADERS_4_4=y
+BR2_DEFAULT_KERNEL_HEADERS="4.4"
 BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL)/linux"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
 BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL)/configs/linux/skiroot_defconfig"
diff --git a/openpower/configs/palmetto_defconfig b/openpower/configs/palmetto_defconfig
index 6942589..26857e9 100644
--- a/openpower/configs/palmetto_defconfig
+++ b/openpower/configs/palmetto_defconfig
@@ -6,6 +6,7 @@
 BR2_EXTRA_GCC_CONFIG_OPTIONS="--enable-targets=powerpc64-linux"
 BR2_TOOLCHAIN_BUILDROOT_CXX=y
 # BR2_TOOLCHAIN_BUILDROOT_LIBSTDCPP is not set
+BR2_GLIBC_VERSION_2_22=y
 
 BR2_OPENPOWER_CONFIG_NAME="palmetto"
 BR2_OPENPOWER_XML_PACKAGE="palmetto-xml"
@@ -43,8 +44,8 @@
 BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var"
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_SAME_AS_HEADERS=y
-BR2_KERNEL_HEADERS_4_2=y
-BR2_DEFAULT_KERNEL_HEADERS="4.2.6"
+BR2_KERNEL_HEADERS_4_4=y
+BR2_DEFAULT_KERNEL_HEADERS="4.4"
 BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL)/linux"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
 BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL)/configs/linux/skiroot_defconfig"
diff --git a/openpower/linux/linux-0001-powerpc-Add-openpower_defconfig.patch b/openpower/linux/linux-0001-powerpc-Add-openpower_defconfig.patch
deleted file mode 100644
index 5724b60..0000000
--- a/openpower/linux/linux-0001-powerpc-Add-openpower_defconfig.patch
+++ /dev/null
@@ -1,241 +0,0 @@
-From bbf8dfe1ddb782c0ed75a14c3dcbb473c8563987 Mon Sep 17 00:00:00 2001
-From: Jeremy Kerr <jk@ozlabs.org>
-Date: Fri, 12 Dec 2014 08:03:11 +0800
-Subject: [PATCH 01/15] powerpc: Add openpower_defconfig
-
-Simplifies building an openpower kernel a little. It is based on the
-configuration used by the op-build openpower buildroot overlay.
-
-Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
-Signed-off-by: Joel Stanley <joel@jms.id.au>
----
- arch/powerpc/configs/openpower_defconfig | 217 +++++++++++++++++++++++++++++++
- 1 file changed, 217 insertions(+)
- create mode 100644 arch/powerpc/configs/openpower_defconfig
-
-diff --git a/arch/powerpc/configs/openpower_defconfig b/arch/powerpc/configs/openpower_defconfig
-new file mode 100644
-index 000000000000..4d6779a3c753
---- /dev/null
-+++ b/arch/powerpc/configs/openpower_defconfig
-@@ -0,0 +1,217 @@
-+CONFIG_PPC64=y
-+CONFIG_ALTIVEC=y
-+CONFIG_VSX=y
-+CONFIG_SMP=y
-+CONFIG_NR_CPUS=2048
-+CONFIG_CPU_LITTLE_ENDIAN=y
-+# CONFIG_SWAP is not set
-+CONFIG_SYSVIPC=y
-+CONFIG_POSIX_MQUEUE=y
-+# CONFIG_CROSS_MEMORY_ATTACH is not set
-+CONFIG_IRQ_DOMAIN_DEBUG=y
-+CONFIG_NO_HZ=y
-+CONFIG_HIGH_RES_TIMERS=y
-+CONFIG_TASKSTATS=y
-+CONFIG_TASK_DELAY_ACCT=y
-+CONFIG_TASK_XACCT=y
-+CONFIG_TASK_IO_ACCOUNTING=y
-+CONFIG_IKCONFIG=y
-+CONFIG_IKCONFIG_PROC=y
-+CONFIG_LOG_BUF_SHIFT=20
-+CONFIG_RELAY=y
-+CONFIG_BLK_DEV_INITRD=y
-+# CONFIG_RD_GZIP is not set
-+# CONFIG_RD_BZIP2 is not set
-+# CONFIG_RD_LZMA is not set
-+# CONFIG_RD_LZO is not set
-+# CONFIG_RD_LZ4 is not set
-+CONFIG_KALLSYMS_ALL=y
-+CONFIG_PERF_EVENTS=y
-+# CONFIG_COMPAT_BRK is not set
-+CONFIG_JUMP_LABEL=y
-+CONFIG_MODULES=y
-+CONFIG_MODULE_UNLOAD=y
-+CONFIG_PARTITION_ADVANCED=y
-+# CONFIG_IOSCHED_DEADLINE is not set
-+# CONFIG_PPC_PMAC is not set
-+CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
-+CONFIG_HZ_100=y
-+CONFIG_KEXEC=y
-+CONFIG_IRQ_ALL_CPUS=y
-+# CONFIG_COMPACTION is not set
-+# CONFIG_MIGRATION is not set
-+# CONFIG_BOUNCE is not set
-+CONFIG_PPC_64K_PAGES=y
-+CONFIG_SCHED_SMT=y
-+# CONFIG_SUSPEND is not set
-+# CONFIG_SECCOMP is not set
-+CONFIG_NET=y
-+CONFIG_PACKET=y
-+CONFIG_UNIX=y
-+CONFIG_INET=y
-+CONFIG_IP_MULTICAST=y
-+CONFIG_NET_IPIP=y
-+CONFIG_SYN_COOKIES=y
-+# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
-+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
-+# CONFIG_INET_XFRM_MODE_BEET is not set
-+# CONFIG_IPV6 is not set
-+# CONFIG_WIRELESS is not set
-+CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
-+CONFIG_DEVTMPFS=y
-+CONFIG_DEVTMPFS_MOUNT=y
-+CONFIG_BLK_DEV_LOOP=y
-+CONFIG_BLK_DEV_RAM=y
-+CONFIG_BLK_DEV_RAM_SIZE=65536
-+CONFIG_ATA_OVER_ETH=y
-+CONFIG_VIRTIO_BLK=y
-+CONFIG_EEPROM_AT24=y
-+CONFIG_CXL=y
-+CONFIG_BLK_DEV_SD=y
-+CONFIG_CHR_DEV_ST=y
-+CONFIG_BLK_DEV_SR=y
-+CONFIG_BLK_DEV_SR_VENDOR=y
-+CONFIG_CHR_DEV_SG=y
-+CONFIG_SCSI_CONSTANTS=y
-+CONFIG_SCSI_SCAN_ASYNC=y
-+CONFIG_SCSI_FC_ATTRS=y
-+CONFIG_SCSI_CXGB3_ISCSI=y
-+CONFIG_SCSI_CXGB4_ISCSI=y
-+CONFIG_SCSI_BNX2_ISCSI=y
-+CONFIG_BE2ISCSI=y
-+CONFIG_SCSI_AACRAID=y
-+CONFIG_SCSI_MPT2SAS=y
-+CONFIG_SCSI_IBMVSCSI=y
-+CONFIG_SCSI_SYM53C8XX_2=y
-+CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=0
-+CONFIG_SCSI_IPR=y
-+# CONFIG_SCSI_IPR_TRACE is not set
-+# CONFIG_SCSI_IPR_DUMP is not set
-+CONFIG_SCSI_QLA_FC=y
-+CONFIG_SCSI_QLA_ISCSI=y
-+CONFIG_SCSI_LPFC=y
-+CONFIG_SCSI_VIRTIO=y
-+CONFIG_SCSI_DH=y
-+CONFIG_SCSI_DH_ALUA=y
-+CONFIG_ATA=y
-+CONFIG_SATA_AHCI=y
-+# CONFIG_ATA_SFF is not set
-+CONFIG_MD=y
-+CONFIG_BLK_DEV_MD=y
-+CONFIG_MD_LINEAR=y
-+CONFIG_MD_RAID0=y
-+CONFIG_MD_RAID1=y
-+CONFIG_MD_RAID10=y
-+CONFIG_MD_RAID456=y
-+CONFIG_MD_MULTIPATH=y
-+CONFIG_MD_FAULTY=y
-+CONFIG_BLK_DEV_DM=y
-+CONFIG_DM_CRYPT=y
-+CONFIG_DM_SNAPSHOT=y
-+CONFIG_DM_MIRROR=y
-+CONFIG_DM_ZERO=y
-+CONFIG_DM_MULTIPATH=y
-+CONFIG_NETCONSOLE=y
-+CONFIG_TUN=y
-+CONFIG_VIRTIO_NET=y
-+CONFIG_VORTEX=y
-+CONFIG_ACENIC=y
-+CONFIG_ACENIC_OMIT_TIGON_I=y
-+CONFIG_PCNET32=y
-+CONFIG_TIGON3=y
-+CONFIG_BNX2X=y
-+CONFIG_CHELSIO_T1=y
-+CONFIG_BE2NET=y
-+CONFIG_S2IO=y
-+CONFIG_IBMVETH=y
-+CONFIG_E100=y
-+CONFIG_E1000=y
-+CONFIG_E1000E=y
-+CONFIG_IXGB=y
-+CONFIG_IXGBE=y
-+CONFIG_MLX4_EN=y
-+CONFIG_MYRI10GE=y
-+CONFIG_QLGE=y
-+CONFIG_NETXEN_NIC=y
-+CONFIG_SFC=y
-+# CONFIG_WLAN is not set
-+# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
-+CONFIG_INPUT_EVDEV=y
-+CONFIG_INPUT_MISC=y
-+# CONFIG_SERIO_SERPORT is not set
-+CONFIG_SERIAL_8250=y
-+CONFIG_SERIAL_8250_CONSOLE=y
-+CONFIG_HVC_CONSOLE=y
-+CONFIG_IPMI_HANDLER=y
-+CONFIG_IPMI_DEVICE_INTERFACE=y
-+CONFIG_IPMI_POWERNV=y
-+CONFIG_HW_RANDOM=y
-+CONFIG_GEN_RTC=y
-+CONFIG_RAW_DRIVER=y
-+CONFIG_MAX_RAW_DEVS=1024
-+# CONFIG_I2C_COMPAT is not set
-+CONFIG_I2C_CHARDEV=y
-+# CONFIG_I2C_HELPER_AUTO is not set
-+CONFIG_DRM=y
-+CONFIG_DRM_RADEON=y
-+CONFIG_DRM_AST=y
-+CONFIG_FIRMWARE_EDID=y
-+CONFIG_FB_MODE_HELPERS=y
-+CONFIG_FB_OF=y
-+CONFIG_FB_MATROX=y
-+CONFIG_FB_MATROX_MILLENIUM=y
-+CONFIG_FB_MATROX_MYSTIQUE=y
-+CONFIG_FB_MATROX_G=y
-+CONFIG_BACKLIGHT_LCD_SUPPORT=y
-+# CONFIG_LCD_CLASS_DEVICE is not set
-+# CONFIG_BACKLIGHT_GENERIC is not set
-+# CONFIG_VGA_CONSOLE is not set
-+CONFIG_LOGO=y
-+CONFIG_USB_HIDDEV=y
-+CONFIG_USB=y
-+CONFIG_USB_MON=y
-+CONFIG_USB_XHCI_HCD=y
-+CONFIG_USB_EHCI_HCD=y
-+# CONFIG_USB_EHCI_HCD_PPC_OF is not set
-+CONFIG_USB_OHCI_HCD=y
-+CONFIG_USB_STORAGE=y
-+CONFIG_VIRT_DRIVERS=y
-+CONFIG_VIRTIO_PCI=y
-+# CONFIG_IOMMU_SUPPORT is not set
-+CONFIG_EXT4_FS=y
-+CONFIG_EXT4_FS_POSIX_ACL=y
-+CONFIG_EXT4_FS_SECURITY=y
-+CONFIG_XFS_FS=y
-+CONFIG_XFS_POSIX_ACL=y
-+CONFIG_BTRFS_FS=y
-+CONFIG_BTRFS_FS_POSIX_ACL=y
-+CONFIG_AUTOFS4_FS=y
-+CONFIG_ISO9660_FS=y
-+CONFIG_UDF_FS=y
-+CONFIG_MSDOS_FS=y
-+CONFIG_VFAT_FS=y
-+CONFIG_PROC_KCORE=y
-+CONFIG_TMPFS=y
-+CONFIG_TMPFS_POSIX_ACL=y
-+CONFIG_NFS_FS=y
-+CONFIG_NFS_V3_ACL=y
-+CONFIG_NFS_V4=y
-+CONFIG_CIFS=y
-+# CONFIG_CIFS_DEBUG is not set
-+CONFIG_NLS_DEFAULT="utf8"
-+CONFIG_NLS_CODEPAGE_437=y
-+CONFIG_NLS_ASCII=y
-+CONFIG_NLS_ISO8859_1=y
-+CONFIG_NLS_UTF8=y
-+CONFIG_PRINTK_TIME=y
-+CONFIG_DEBUG_FS=y
-+CONFIG_MAGIC_SYSRQ=y
-+CONFIG_DEBUG_KERNEL=y
-+CONFIG_DEBUG_STACKOVERFLOW=y
-+CONFIG_LOCKUP_DETECTOR=y
-+CONFIG_SCHEDSTATS=y
-+# CONFIG_FTRACE is not set
-+CONFIG_XMON=y
-+CONFIG_XMON_DEFAULT=y
-+CONFIG_CRYPTO_ECHAINIV=y
-+# CONFIG_CRYPTO_HW is not set
--- 
-2.6.2
-
diff --git a/openpower/linux/linux-0002-xhci-Use-xhci_pci_remove-for-xhci-device-shutdown.patch b/openpower/linux/linux-0001-xhci-Use-xhci_pci_remove-for-xhci-device-shutdown.patch
similarity index 71%
rename from openpower/linux/linux-0002-xhci-Use-xhci_pci_remove-for-xhci-device-shutdown.patch
rename to openpower/linux/linux-0001-xhci-Use-xhci_pci_remove-for-xhci-device-shutdown.patch
index edfa9d2..98a6a9e 100644
--- a/openpower/linux/linux-0002-xhci-Use-xhci_pci_remove-for-xhci-device-shutdown.patch
+++ b/openpower/linux/linux-0001-xhci-Use-xhci_pci_remove-for-xhci-device-shutdown.patch
@@ -1,7 +1,7 @@
-From fedf5abf0669ce6e812d4dd095e74ef65eec9058 Mon Sep 17 00:00:00 2001
+From 78b652c3a955cb9700abebff725a041cb805e193 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 02/15] xhci: Use xhci_pci_remove for xhci device shutdown
+Subject: [PATCH 1/5] 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 c47d3e480586..a7447462b663 100644
+index c62109091d12..6d5b32c298bc 100644
 --- a/drivers/usb/host/xhci-pci.c
 +++ b/drivers/usb/host/xhci-pci.c
-@@ -420,7 +420,7 @@ static struct pci_driver xhci_pci_driver = {
+@@ -426,7 +426,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.6.2
+2.7.0.rc3
 
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
new file mode 100644
index 0000000..63ac296
--- /dev/null
+++ b/openpower/linux/linux-0002-Revert-usb-xhci-stop-everything-on-the-first-call-to.patch
@@ -0,0 +1,62 @@
+From 8afabdc0db0f80e45c9bfdeb3faadaa89d4dd775 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/5] 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 3f912705dcef..2cc689a3b549 100644
+--- a/drivers/usb/host/xhci.c
++++ b/drivers/usb/host/xhci.c
+@@ -665,6 +665,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.
+  *
+@@ -679,14 +688,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.7.0.rc3
+
diff --git a/openpower/linux/linux-0003-powerpc-kexec-Reset-secondary-cpu-endianess-before-k.patch b/openpower/linux/linux-0003-powerpc-kexec-Reset-secondary-cpu-endianess-before-k.patch
deleted file mode 100644
index 78d6a8b..0000000
--- a/openpower/linux/linux-0003-powerpc-kexec-Reset-secondary-cpu-endianess-before-k.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From a0fa3be3772983f7b96cc4133542a0eac25f6ed9 Mon Sep 17 00:00:00 2001
-From: Samuel Mendoza-Jonas <sam.mj@au1.ibm.com>
-Date: Mon, 29 Jun 2015 13:43:51 +1000
-Subject: [PATCH 03/15] powerpc/kexec: Reset secondary cpu endianess before
- kexec
-
-If the target kernel does not inlcude the FIXUP_ENDIAN check, coming
-from a different-endian kernel will cause the target kernel to panic.
-All ppc64 kernels can handle starting in big-endian mode, so return to
-big-endian before branching into the target kernel.
-
-This mainly affects pseries as secondaries on powernv are returned to
-OPAL.
-
-Signed-off-by: Samuel Mendoza-Jonas <sam.mj@au1.ibm.com>
-Signed-off-by: Joel Stanley <joel@jms.id.au>
----
- arch/powerpc/kernel/misc_64.S | 13 +++++++++++--
- 1 file changed, 11 insertions(+), 2 deletions(-)
-
-diff --git a/arch/powerpc/kernel/misc_64.S b/arch/powerpc/kernel/misc_64.S
-index 4e314b90c75d..6e4168cf4698 100644
---- a/arch/powerpc/kernel/misc_64.S
-+++ b/arch/powerpc/kernel/misc_64.S
-@@ -475,9 +475,18 @@ _GLOBAL(kexec_wait)
- #ifdef CONFIG_KEXEC		/* use no memory without kexec */
- 	lwz	r4,0(r5)
- 	cmpwi	0,r4,0
--	bnea	0x60
-+	beq	99b
-+#ifdef CONFIG_PPC_BOOK3S_64
-+	li	r10,0x60
-+	mfmsr	r11
-+	clrrdi	r11,r11,1	/* Clear MSR_LE */
-+	mtsrr0	r10
-+	mtsrr1	r11
-+	rfid
-+#else
-+	ba	0x60
-+#endif
- #endif
--	b	99b
- 
- /* this can be in text because we won't change it until we are
-  * running in real anyways
--- 
-2.6.2
-
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
new file mode 100644
index 0000000..3ad6157
--- /dev/null
+++ b/openpower/linux/linux-0003-xhci-do-not-halt-the-secondary-HCD.patch
@@ -0,0 +1,42 @@
+From 82addbe4d27c12454572e1200f962cd5ee25523f 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/5] 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 2cc689a3b549..aa6d1e0b4bea 100644
+--- a/drivers/usb/host/xhci.c
++++ b/drivers/usb/host/xhci.c
+@@ -670,7 +670,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.7.0.rc3
+
diff --git a/openpower/linux/linux-0004-powerpc-eeh-Fix-PE-location-code.patch b/openpower/linux/linux-0004-powerpc-eeh-Fix-PE-location-code.patch
new file mode 100644
index 0000000..155133c
--- /dev/null
+++ b/openpower/linux/linux-0004-powerpc-eeh-Fix-PE-location-code.patch
@@ -0,0 +1,75 @@
+From 3cbe4777b9d0640df25fa4eb41b15199f78f9e99 Mon Sep 17 00:00:00 2001
+From: Gavin Shan <gwshan@linux.vnet.ibm.com>
+Date: Thu, 28 Jan 2016 16:18:37 +1100
+Subject: [PATCH 4/5] powerpc/eeh: Fix PE location code
+
+In eeh_pe_loc_get(), the PE location code is retrieved from the
+"ibm,loc-code" property of the device node for the bridge of the
+PE's primary bus. It's not correct because the property indicates
+the parent PE's location code.
+
+This reads the correct PE location code from "ibm,io-base-loc-code"
+or "ibm,slot-location-code" property of PE parent bus's device node.
+
+Signed-off-by: Gavin Shan <gwshan@linux.vnet.ibm.com>
+Signed-off-by: Sam Mendoza-Jonas <sam@mendozajonas.com>
+Signed-off-by: Joel Stanley <joel@jms.id.au>
+---
+ arch/powerpc/kernel/eeh_pe.c | 33 +++++++++++++++------------------
+ 1 file changed, 15 insertions(+), 18 deletions(-)
+
+diff --git a/arch/powerpc/kernel/eeh_pe.c b/arch/powerpc/kernel/eeh_pe.c
+index 8654cb166c19..ca9e5371930e 100644
+--- a/arch/powerpc/kernel/eeh_pe.c
++++ b/arch/powerpc/kernel/eeh_pe.c
+@@ -883,32 +883,29 @@ void eeh_pe_restore_bars(struct eeh_pe *pe)
+ const char *eeh_pe_loc_get(struct eeh_pe *pe)
+ {
+ 	struct pci_bus *bus = eeh_pe_bus_get(pe);
+-	struct device_node *dn = pci_bus_to_OF_node(bus);
++	struct device_node *dn;
+ 	const char *loc = NULL;
+ 
+-	if (!dn)
+-		goto out;
++	while (bus) {
++		dn = pci_bus_to_OF_node(bus);
++		if (!dn) {
++			bus = bus->parent;
++			continue;
++		}
+ 
+-	/* PHB PE or root PE ? */
+-	if (pci_is_root_bus(bus)) {
+-		loc = of_get_property(dn, "ibm,loc-code", NULL);
+-		if (!loc)
++		if (pci_is_root_bus(bus))
+ 			loc = of_get_property(dn, "ibm,io-base-loc-code", NULL);
++		else
++			loc = of_get_property(dn, "ibm,slot-location-code",
++					      NULL);
++
+ 		if (loc)
+-			goto out;
++			return loc;
+ 
+-		/* Check the root port */
+-		dn = dn->child;
+-		if (!dn)
+-			goto out;
++		bus = bus->parent;
+ 	}
+ 
+-	loc = of_get_property(dn, "ibm,loc-code", NULL);
+-	if (!loc)
+-		loc = of_get_property(dn, "ibm,slot-location-code", NULL);
+-
+-out:
+-	return loc ? loc : "N/A";
++	return "N/A";
+ }
+ 
+ /**
+-- 
+2.7.0.rc3
+
diff --git a/openpower/linux/linux-0004-powerpc-kexec-Reset-HILE-before-kexec_sequence.patch b/openpower/linux/linux-0004-powerpc-kexec-Reset-HILE-before-kexec_sequence.patch
deleted file mode 100644
index 89e25f2..0000000
--- a/openpower/linux/linux-0004-powerpc-kexec-Reset-HILE-before-kexec_sequence.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 3ac7b2ce48a25617a838b58dce149244c5f216ef Mon Sep 17 00:00:00 2001
-From: Samuel Mendoza-Jonas <sam.mj@au1.ibm.com>
-Date: Wed, 22 Jul 2015 11:09:15 +1000
-Subject: [PATCH 04/15] powerpc/kexec: Reset HILE before kexec_sequence
-
-On powernv secondary cpus are returned to OPAL, and will then enter
-the target kernel in big-endian. However if it is set the HILE bit
-will persist, causing the first exception in the target kernel to be
-delivered in litte-endian regardless of the current endianess.
-
-If running on top of OPAL make sure the HILE bit is reset once we've
-finished waiting for all of the secondaries to be returned to OPAL.
-
-Signed-off-by: Samuel Mendoza-Jonas <sam.mj@au1.ibm.com>
-Signed-off-by: Joel Stanley <joel@jms.id.au>
----
- arch/powerpc/platforms/powernv/setup.c | 7 +++++++
- 1 file changed, 7 insertions(+)
-
-diff --git a/arch/powerpc/platforms/powernv/setup.c b/arch/powerpc/platforms/powernv/setup.c
-index 53737e019ae3..59076db194c0 100644
---- a/arch/powerpc/platforms/powernv/setup.c
-+++ b/arch/powerpc/platforms/powernv/setup.c
-@@ -243,6 +243,13 @@ static void pnv_kexec_cpu_down(int crash_shutdown, int secondary)
- 	} else {
- 		/* Primary waits for the secondaries to have reached OPAL */
- 		pnv_kexec_wait_secondaries_down();
-+
-+		/*
-+		 * We might be running as little-endian - now that interrupts
-+		 * are disabled, reset the HILE bit to big-endian so we don't
-+		 * take interrupts in the wrong endian later
-+		 */
-+		opal_reinit_cpus(OPAL_REINIT_CPUS_HILE_BE);
- 	}
- }
- #endif /* CONFIG_KEXEC */
--- 
-2.6.2
-
diff --git a/openpower/linux/linux-0005-Release-4.4.0-openpower2.patch b/openpower/linux/linux-0005-Release-4.4.0-openpower2.patch
new file mode 100644
index 0000000..7e3759a
--- /dev/null
+++ b/openpower/linux/linux-0005-Release-4.4.0-openpower2.patch
@@ -0,0 +1,26 @@
+From dd90dddefe4b9fc7996ce37c18bd88210ebbe898 Mon Sep 17 00:00:00 2001
+From: Joel Stanley <joel@jms.id.au>
+Date: Tue, 20 Oct 2015 15:01:06 +1030
+Subject: [PATCH 5/5] Release 4.4.0-openpower2
+
+Signed-off-by: Joel Stanley <joel@jms.id.au>
+---
+ Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Makefile b/Makefile
+index 70dea02f1346..93c4379da8ed 100644
+--- a/Makefile
++++ b/Makefile
+@@ -1,7 +1,7 @@
+ VERSION = 4
+ PATCHLEVEL = 4
+ SUBLEVEL = 0
+-EXTRAVERSION =
++EXTRAVERSION = -openpower2
+ NAME = Blurry Fish Butt
+ 
+ # *DOCUMENTATION*
+-- 
+2.7.0.rc3
+
diff --git a/openpower/linux/linux-0005-Revert-powerpc-Reject-binutils-2.24-when-building-li.patch b/openpower/linux/linux-0005-Revert-powerpc-Reject-binutils-2.24-when-building-li.patch
deleted file mode 100644
index c0d298b..0000000
--- a/openpower/linux/linux-0005-Revert-powerpc-Reject-binutils-2.24-when-building-li.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From 8ff76b10e7d83cb4ac2ec13e792644493613a2c2 Mon Sep 17 00:00:00 2001
-From: Joel Stanley <joel@jms.id.au>
-Date: Fri, 11 Sep 2015 14:43:18 +0930
-Subject: [PATCH 05/15] Revert "powerpc: Reject binutils 2.24 when building
- little endian"
-
-This reverts commit 60e065f70bdb0b0e916389024922ad40f3270c96.
-
-We know better than Michael does; we carry a patch that fixes our
-binutils.
-
-Signed-off-by: Joel Stanley <joel@jms.id.au>
----
- arch/powerpc/Makefile | 8 --------
- 1 file changed, 8 deletions(-)
-
-diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile
-index 05f464eb6952..b2ae85dca1f7 100644
---- a/arch/powerpc/Makefile
-+++ b/arch/powerpc/Makefile
-@@ -358,14 +358,6 @@ checkbin:
- 		echo 'disable kernel modules' ; \
- 		false ; \
- 	fi
--	@if test "x${CONFIG_CPU_LITTLE_ENDIAN}" = "xy" \
--	    && $(LD) --version | head -1 | grep ' 2\.24$$' >/dev/null ; then \
--		echo -n '*** binutils 2.24 miscompiles weak symbols ' ; \
--		echo 'in some circumstances.' ; \
--		echo -n '*** Please use a different binutils version.' ; \
--		false ; \
--	fi
--
- 
- CLEAN_FILES += $(TOUT)
- 
--- 
-2.6.2
-
diff --git a/openpower/linux/linux-0006-aacraid-Fix-for-LD-name-and-UID-not-exposed-to-OS.patch b/openpower/linux/linux-0006-aacraid-Fix-for-LD-name-and-UID-not-exposed-to-OS.patch
deleted file mode 100644
index 712e090..0000000
--- a/openpower/linux/linux-0006-aacraid-Fix-for-LD-name-and-UID-not-exposed-to-OS.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From 5c0ce63abf423b06ad4a9dd0340dc691cf6af7ea Mon Sep 17 00:00:00 2001
-From: Mahesh Rajashekhara <Mahesh.Rajashekhara@pmcs.com>
-Date: Fri, 28 Aug 2015 06:38:33 -0400
-Subject: [PATCH 06/15] aacraid: Fix for LD name and UID not exposed to OS
-
-Driver sends the right size of the response buffer.
-
-Reviewed-by: Tomas Henzl <thenzl@redhat.com>
-Reviewed-by: Murthy Bhat <Murthy.Bhat@pmcs.com>
-Reviewed-by: Karthikeya Sunkesula <Karthikeya.Sunkesula@pmcs.com>
-Signed-off-by: Mahesh Rajashekhara <Mahesh.Rajashekhara@pmcs.com>
-Signed-off-by: Joel Stanley <joel@jms.id.au>
----
- drivers/scsi/aacraid/aachba.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/scsi/aacraid/aachba.c b/drivers/scsi/aacraid/aachba.c
-index 9b3dd6ef6a0b..fe59b0084575 100644
---- a/drivers/scsi/aacraid/aachba.c
-+++ b/drivers/scsi/aacraid/aachba.c
-@@ -570,7 +570,7 @@ static int aac_get_container_name(struct scsi_cmnd * scsicmd)
- 
- 	status = aac_fib_send(ContainerCommand,
- 		  cmd_fibcontext,
--		  sizeof (struct aac_get_name),
-+		  sizeof(struct aac_get_name_resp),
- 		  FsaNormal,
- 		  0, 1,
- 		  (fib_callback)get_container_name_callback,
-@@ -1052,7 +1052,7 @@ static int aac_get_container_serial(struct scsi_cmnd * scsicmd)
- 
- 	status = aac_fib_send(ContainerCommand,
- 		  cmd_fibcontext,
--		  sizeof (struct aac_get_serial),
-+		  sizeof(struct aac_get_serial_resp),
- 		  FsaNormal,
- 		  0, 1,
- 		  (fib_callback) get_container_serial_callback,
--- 
-2.6.2
-
diff --git a/openpower/linux/linux-0007-aacraid-Add-Power-Management-support.patch b/openpower/linux/linux-0007-aacraid-Add-Power-Management-support.patch
deleted file mode 100644
index c26a5ba..0000000
--- a/openpower/linux/linux-0007-aacraid-Add-Power-Management-support.patch
+++ /dev/null
@@ -1,441 +0,0 @@
-From fd4cc1e0ec6ca370ece67af9e6a3cde5cb9becb6 Mon Sep 17 00:00:00 2001
-From: Mahesh Rajashekhara <Mahesh.Rajashekhara@pmcs.com>
-Date: Fri, 28 Aug 2015 06:38:34 -0400
-Subject: [PATCH 07/15] aacraid: Add Power Management support
-
-* .suspend() and .resume() routines implemented in the driver
-* aac_release_resources() initiates firmware shutdown
-* aac_acquire_resources re-initializes the host interface
-
-Reviewed-by: Tomas Henzl <thenzl@redhat.com>
-Reviewed-by: Murthy Bhat <Murthy.Bhat@pmcs.com>
-Reviewed-by: Karthikeya Sunkesula <Karthikeya.Sunkesula@pmcs.com>
-Signed-off-by: Mahesh Rajashekhara <Mahesh.Rajashekhara@pmcs.com>
-Signed-off-by: Joel Stanley <joel@jms.id.au>
----
- drivers/scsi/aacraid/aacraid.h  |   5 ++
- drivers/scsi/aacraid/comminit.c | 154 ++++++++++++++++++++--------------------
- drivers/scsi/aacraid/linit.c    | 147 ++++++++++++++++++++++++++++++++++++++
- drivers/scsi/aacraid/rx.c       |   1 +
- drivers/scsi/aacraid/sa.c       |   1 +
- drivers/scsi/aacraid/src.c      |   2 +
- 6 files changed, 232 insertions(+), 78 deletions(-)
-
-diff --git a/drivers/scsi/aacraid/aacraid.h b/drivers/scsi/aacraid/aacraid.h
-index 40fe65c91b41..62b099940345 100644
---- a/drivers/scsi/aacraid/aacraid.h
-+++ b/drivers/scsi/aacraid/aacraid.h
-@@ -547,6 +547,7 @@ struct adapter_ops
- 	int  (*adapter_sync_cmd)(struct aac_dev *dev, u32 command, u32 p1, u32 p2, u32 p3, u32 p4, u32 p5, u32 p6, u32 *status, u32 *r1, u32 *r2, u32 *r3, u32 *r4);
- 	int  (*adapter_check_health)(struct aac_dev *dev);
- 	int  (*adapter_restart)(struct aac_dev *dev, int bled);
-+	void (*adapter_start)(struct aac_dev *dev);
- 	/* Transport operations */
- 	int  (*adapter_ioremap)(struct aac_dev * dev, u32 size);
- 	irq_handler_t adapter_intr;
-@@ -1247,6 +1248,9 @@ struct aac_dev
- #define aac_adapter_restart(dev,bled) \
- 	(dev)->a_ops.adapter_restart(dev,bled)
- 
-+#define aac_adapter_start(dev) \
-+	((dev)->a_ops.adapter_start(dev))
-+
- #define aac_adapter_ioremap(dev, size) \
- 	(dev)->a_ops.adapter_ioremap(dev, size)
- 
-@@ -2127,6 +2131,7 @@ int aac_sa_init(struct aac_dev *dev);
- int aac_src_init(struct aac_dev *dev);
- int aac_srcv_init(struct aac_dev *dev);
- int aac_queue_get(struct aac_dev * dev, u32 * index, u32 qid, struct hw_fib * hw_fib, int wait, struct fib * fibptr, unsigned long *nonotify);
-+void aac_define_int_mode(struct aac_dev *dev);
- unsigned int aac_response_normal(struct aac_queue * q);
- unsigned int aac_command_normal(struct aac_queue * q);
- unsigned int aac_intr_normal(struct aac_dev *dev, u32 Index,
-diff --git a/drivers/scsi/aacraid/comminit.c b/drivers/scsi/aacraid/comminit.c
-index 45db84ad322f..45a0a044dfdb 100644
---- a/drivers/scsi/aacraid/comminit.c
-+++ b/drivers/scsi/aacraid/comminit.c
-@@ -43,8 +43,6 @@
- 
- #include "aacraid.h"
- 
--static void aac_define_int_mode(struct aac_dev *dev);
--
- struct aac_common aac_config = {
- 	.irq_mod = 1
- };
-@@ -338,6 +336,82 @@ static int aac_comm_init(struct aac_dev * dev)
- 	return 0;
- }
- 
-+void aac_define_int_mode(struct aac_dev *dev)
-+{
-+	int i, msi_count;
-+
-+	msi_count = i = 0;
-+	/* max. vectors from GET_COMM_PREFERRED_SETTINGS */
-+	if (dev->max_msix == 0 ||
-+	    dev->pdev->device == PMC_DEVICE_S6 ||
-+	    dev->sync_mode) {
-+		dev->max_msix = 1;
-+		dev->vector_cap =
-+			dev->scsi_host_ptr->can_queue +
-+			AAC_NUM_MGT_FIB;
-+		return;
-+	}
-+
-+	/* Don't bother allocating more MSI-X vectors than cpus */
-+	msi_count = min(dev->max_msix,
-+		(unsigned int)num_online_cpus());
-+
-+	dev->max_msix = msi_count;
-+
-+	if (msi_count > AAC_MAX_MSIX)
-+		msi_count = AAC_MAX_MSIX;
-+
-+	for (i = 0; i < msi_count; i++)
-+		dev->msixentry[i].entry = i;
-+
-+	if (msi_count > 1 &&
-+	    pci_find_capability(dev->pdev, PCI_CAP_ID_MSIX)) {
-+		i = pci_enable_msix(dev->pdev,
-+				    dev->msixentry,
-+				    msi_count);
-+		 /* Check how many MSIX vectors are allocated */
-+		if (i >= 0) {
-+			dev->msi_enabled = 1;
-+			if (i) {
-+				msi_count = i;
-+				if (pci_enable_msix(dev->pdev,
-+				    dev->msixentry,
-+				    msi_count)) {
-+					dev->msi_enabled = 0;
-+					printk(KERN_ERR "%s%d: MSIX not supported!! Will try MSI 0x%x.\n",
-+							dev->name, dev->id, i);
-+				}
-+			}
-+		} else {
-+			dev->msi_enabled = 0;
-+			printk(KERN_ERR "%s%d: MSIX not supported!! Will try MSI 0x%x.\n",
-+					dev->name, dev->id, i);
-+		}
-+	}
-+
-+	if (!dev->msi_enabled) {
-+		msi_count = 1;
-+		i = pci_enable_msi(dev->pdev);
-+
-+		if (!i) {
-+			dev->msi_enabled = 1;
-+			dev->msi = 1;
-+		} else {
-+			printk(KERN_ERR "%s%d: MSI not supported!! Will try INTx 0x%x.\n",
-+					dev->name, dev->id, i);
-+		}
-+	}
-+
-+	if (!dev->msi_enabled)
-+		dev->max_msix = msi_count = 1;
-+	else {
-+		if (dev->max_msix > msi_count)
-+			dev->max_msix = msi_count;
-+	}
-+	dev->vector_cap =
-+		(dev->scsi_host_ptr->can_queue + AAC_NUM_MGT_FIB) /
-+		msi_count;
-+}
- struct aac_dev *aac_init_adapter(struct aac_dev *dev)
- {
- 	u32 status[5];
-@@ -508,79 +582,3 @@ struct aac_dev *aac_init_adapter(struct aac_dev *dev)
- 	return dev;
- }
- 
--static void aac_define_int_mode(struct aac_dev *dev)
--{
--
--	int i, msi_count;
--
--	msi_count = i = 0;
--	/* max. vectors from GET_COMM_PREFERRED_SETTINGS */
--	if (dev->max_msix == 0 ||
--	    dev->pdev->device == PMC_DEVICE_S6 ||
--	    dev->sync_mode) {
--		dev->max_msix = 1;
--		dev->vector_cap =
--			dev->scsi_host_ptr->can_queue +
--			AAC_NUM_MGT_FIB;
--		return;
--	}
--
--	msi_count = min(dev->max_msix,
--		(unsigned int)num_online_cpus());
--
--	dev->max_msix = msi_count;
--
--	if (msi_count > AAC_MAX_MSIX)
--		msi_count = AAC_MAX_MSIX;
--
--	for (i = 0; i < msi_count; i++)
--		dev->msixentry[i].entry = i;
--
--	if (msi_count > 1 &&
--	    pci_find_capability(dev->pdev, PCI_CAP_ID_MSIX)) {
--		i = pci_enable_msix(dev->pdev,
--				    dev->msixentry,
--				    msi_count);
--		 /* Check how many MSIX vectors are allocated */
--		if (i >= 0) {
--			dev->msi_enabled = 1;
--			if (i) {
--				msi_count = i;
--				if (pci_enable_msix(dev->pdev,
--				    dev->msixentry,
--				    msi_count)) {
--					dev->msi_enabled = 0;
--					printk(KERN_ERR "%s%d: MSIX not supported!! Will try MSI 0x%x.\n",
--							dev->name, dev->id, i);
--				}
--			}
--		} else {
--			dev->msi_enabled = 0;
--			printk(KERN_ERR "%s%d: MSIX not supported!! Will try MSI 0x%x.\n",
--					dev->name, dev->id, i);
--		}
--	}
--
--	if (!dev->msi_enabled) {
--		msi_count = 1;
--		i = pci_enable_msi(dev->pdev);
--
--		if (!i) {
--			dev->msi_enabled = 1;
--			dev->msi = 1;
--		} else {
--			printk(KERN_ERR "%s%d: MSI not supported!! Will try INTx 0x%x.\n",
--					dev->name, dev->id, i);
--		}
--	}
--
--	if (!dev->msi_enabled)
--		dev->max_msix = msi_count = 1;
--	else {
--		if (dev->max_msix > msi_count)
--			dev->max_msix = msi_count;
--	}
--	dev->vector_cap =
--		(dev->scsi_host_ptr->can_queue + AAC_NUM_MGT_FIB) /
--		msi_count;
--}
-diff --git a/drivers/scsi/aacraid/linit.c b/drivers/scsi/aacraid/linit.c
-index 9eec02733c86..37375cf7d126 100644
---- a/drivers/scsi/aacraid/linit.c
-+++ b/drivers/scsi/aacraid/linit.c
-@@ -1317,6 +1317,149 @@ static int aac_probe_one(struct pci_dev *pdev, const struct pci_device_id *id)
- 	return error;
- }
- 
-+#if (defined(CONFIG_PM))
-+void aac_release_resources(struct aac_dev *aac)
-+{
-+	int i;
-+
-+	aac_adapter_disable_int(aac);
-+	if (aac->pdev->device == PMC_DEVICE_S6 ||
-+	    aac->pdev->device == PMC_DEVICE_S7 ||
-+	    aac->pdev->device == PMC_DEVICE_S8 ||
-+	    aac->pdev->device == PMC_DEVICE_S9) {
-+		if (aac->max_msix > 1) {
-+			for (i = 0; i < aac->max_msix; i++)
-+				free_irq(aac->msixentry[i].vector,
-+					&(aac->aac_msix[i]));
-+		} else {
-+			free_irq(aac->pdev->irq, &(aac->aac_msix[0]));
-+		}
-+	} else {
-+		free_irq(aac->pdev->irq, aac);
-+	}
-+	if (aac->msi)
-+		pci_disable_msi(aac->pdev);
-+	else if (aac->max_msix > 1)
-+		pci_disable_msix(aac->pdev);
-+
-+}
-+
-+static int aac_acquire_resources(struct aac_dev *dev)
-+{
-+	int i, j;
-+	int instance = dev->id;
-+	const char *name = dev->name;
-+	unsigned long status;
-+	/*
-+	 *	First clear out all interrupts.  Then enable the one's that we
-+	 *	can handle.
-+	 */
-+	while (!((status = src_readl(dev, MUnit.OMR)) & KERNEL_UP_AND_RUNNING)
-+		|| status == 0xffffffff)
-+			msleep(20);
-+
-+	aac_adapter_disable_int(dev);
-+	aac_adapter_enable_int(dev);
-+
-+
-+	if ((dev->pdev->device == PMC_DEVICE_S7 ||
-+	     dev->pdev->device == PMC_DEVICE_S8 ||
-+	     dev->pdev->device == PMC_DEVICE_S9))
-+		aac_define_int_mode(dev);
-+
-+	if (dev->msi_enabled)
-+		aac_src_access_devreg(dev, AAC_ENABLE_MSIX);
-+
-+	if (!dev->sync_mode && dev->msi_enabled && dev->max_msix > 1) {
-+		for (i = 0; i < dev->max_msix; i++) {
-+			dev->aac_msix[i].vector_no = i;
-+			dev->aac_msix[i].dev = dev;
-+
-+			if (request_irq(dev->msixentry[i].vector,
-+					dev->a_ops.adapter_intr,
-+					0, "aacraid", &(dev->aac_msix[i]))) {
-+				printk(KERN_ERR "%s%d: Failed to register IRQ for vector %d.\n",
-+						name, instance, i);
-+				for (j = 0 ; j < i ; j++)
-+					free_irq(dev->msixentry[j].vector,
-+						 &(dev->aac_msix[j]));
-+				pci_disable_msix(dev->pdev);
-+				goto error_iounmap;
-+			}
-+		}
-+	} else {
-+		dev->aac_msix[0].vector_no = 0;
-+		dev->aac_msix[0].dev = dev;
-+
-+		if (request_irq(dev->pdev->irq, dev->a_ops.adapter_intr,
-+			IRQF_SHARED, "aacraid",
-+			&(dev->aac_msix[0])) < 0) {
-+			if (dev->msi)
-+				pci_disable_msi(dev->pdev);
-+			printk(KERN_ERR "%s%d: Interrupt unavailable.\n",
-+					name, instance);
-+			goto error_iounmap;
-+		}
-+	}
-+
-+	aac_adapter_enable_int(dev);
-+
-+	if (!dev->sync_mode)
-+		aac_adapter_start(dev);
-+	return 0;
-+
-+error_iounmap:
-+	return -1;
-+
-+}
-+static int aac_suspend(struct pci_dev *pdev, pm_message_t state)
-+{
-+
-+	struct Scsi_Host *shost = pci_get_drvdata(pdev);
-+	struct aac_dev *aac = (struct aac_dev *)shost->hostdata;
-+
-+	scsi_block_requests(shost);
-+	aac_send_shutdown(aac);
-+
-+	aac_release_resources(aac);
-+
-+	pci_set_drvdata(pdev, shost);
-+	pci_save_state(pdev);
-+	pci_disable_device(pdev);
-+	pci_set_power_state(pdev, pci_choose_state(pdev, state));
-+
-+	return 0;
-+}
-+
-+static int aac_resume(struct pci_dev *pdev)
-+{
-+	struct Scsi_Host *shost = pci_get_drvdata(pdev);
-+	struct aac_dev *aac = (struct aac_dev *)shost->hostdata;
-+	int r;
-+
-+	pci_set_power_state(pdev, PCI_D0);
-+	pci_enable_wake(pdev, PCI_D0, 0);
-+	pci_restore_state(pdev);
-+	r = pci_enable_device(pdev);
-+
-+	if (r)
-+		goto fail_device;
-+
-+	pci_set_master(pdev);
-+	if (aac_acquire_resources(aac))
-+		goto fail_device;
-+	scsi_unblock_requests(shost);
-+
-+	return 0;
-+
-+fail_device:
-+	printk(KERN_INFO "%s%d: resume failed.\n", aac->name, aac->id);
-+	scsi_host_put(shost);
-+	pci_disable_device(pdev);
-+	return -ENODEV;
-+}
-+#endif
-+
- static void aac_shutdown(struct pci_dev *dev)
- {
- 	struct Scsi_Host *shost = pci_get_drvdata(dev);
-@@ -1356,6 +1499,10 @@ static struct pci_driver aac_pci_driver = {
- 	.id_table	= aac_pci_tbl,
- 	.probe		= aac_probe_one,
- 	.remove		= aac_remove_one,
-+#if (defined(CONFIG_PM))
-+	.suspend	= aac_suspend,
-+	.resume		= aac_resume,
-+#endif
- 	.shutdown	= aac_shutdown,
- };
- 
-diff --git a/drivers/scsi/aacraid/rx.c b/drivers/scsi/aacraid/rx.c
-index 9570612b80ce..ac1638069335 100644
---- a/drivers/scsi/aacraid/rx.c
-+++ b/drivers/scsi/aacraid/rx.c
-@@ -623,6 +623,7 @@ int _aac_rx_init(struct aac_dev *dev)
- 	dev->a_ops.adapter_sync_cmd = rx_sync_cmd;
- 	dev->a_ops.adapter_check_health = aac_rx_check_health;
- 	dev->a_ops.adapter_restart = aac_rx_restart_adapter;
-+	dev->a_ops.adapter_start = aac_rx_start_adapter;
- 
- 	/*
- 	 *	First clear out all interrupts.  Then enable the one's that we
-diff --git a/drivers/scsi/aacraid/sa.c b/drivers/scsi/aacraid/sa.c
-index e66477c98240..869aea23c041 100644
---- a/drivers/scsi/aacraid/sa.c
-+++ b/drivers/scsi/aacraid/sa.c
-@@ -372,6 +372,7 @@ int aac_sa_init(struct aac_dev *dev)
- 	dev->a_ops.adapter_sync_cmd = sa_sync_cmd;
- 	dev->a_ops.adapter_check_health = aac_sa_check_health;
- 	dev->a_ops.adapter_restart = aac_sa_restart_adapter;
-+	dev->a_ops.adapter_start = aac_sa_start_adapter;
- 	dev->a_ops.adapter_intr = aac_sa_intr;
- 	dev->a_ops.adapter_deliver = aac_rx_deliver_producer;
- 	dev->a_ops.adapter_ioremap = aac_sa_ioremap;
-diff --git a/drivers/scsi/aacraid/src.c b/drivers/scsi/aacraid/src.c
-index e63cf9f22f36..b147341ac24d 100644
---- a/drivers/scsi/aacraid/src.c
-+++ b/drivers/scsi/aacraid/src.c
-@@ -726,6 +726,7 @@ int aac_src_init(struct aac_dev *dev)
- 	dev->a_ops.adapter_sync_cmd = src_sync_cmd;
- 	dev->a_ops.adapter_check_health = aac_src_check_health;
- 	dev->a_ops.adapter_restart = aac_src_restart_adapter;
-+	dev->a_ops.adapter_start = aac_src_start_adapter;
- 
- 	/*
- 	 *	First clear out all interrupts.  Then enable the one's that we
-@@ -892,6 +893,7 @@ int aac_srcv_init(struct aac_dev *dev)
- 	dev->a_ops.adapter_sync_cmd = src_sync_cmd;
- 	dev->a_ops.adapter_check_health = aac_src_check_health;
- 	dev->a_ops.adapter_restart = aac_src_restart_adapter;
-+	dev->a_ops.adapter_start = aac_src_start_adapter;
- 
- 	/*
- 	 *	First clear out all interrupts.  Then enable the one's that we
--- 
-2.6.2
-
diff --git a/openpower/linux/linux-0008-aacraid-Change-interrupt-mode-to-MSI-for-Series-6.patch b/openpower/linux/linux-0008-aacraid-Change-interrupt-mode-to-MSI-for-Series-6.patch
deleted file mode 100644
index 872fdc7..0000000
--- a/openpower/linux/linux-0008-aacraid-Change-interrupt-mode-to-MSI-for-Series-6.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From 3b9ff8cca5a7d0745311e06c71286090ffd17392 Mon Sep 17 00:00:00 2001
-From: Mahesh Rajashekhara <Mahesh.Rajashekhara@pmcs.com>
-Date: Fri, 28 Aug 2015 06:38:35 -0400
-Subject: [PATCH 08/15] aacraid: Change interrupt mode to MSI for Series 6
-
-This change always sets MSI interrupt mode for series-6 controller.
-
-Reviewed-by: Tomas Henzl <thenzl@redhat.com>
-Reviewed-by: Murthy Bhat <Murthy.Bhat@pmcs.com>
-Reviewed-by: Karthikeya Sunkesula <Karthikeya.Sunkesula@pmcs.com>
-Signed-off-by: Mahesh Rajashekhara <Mahesh.Rajashekhara@pmcs.com>
-Signed-off-by: Joel Stanley <joel@jms.id.au>
----
- drivers/scsi/aacraid/aachba.c | 2 +-
- drivers/scsi/aacraid/src.c    | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/scsi/aacraid/aachba.c b/drivers/scsi/aacraid/aachba.c
-index fe59b0084575..05f2a0295f4d 100644
---- a/drivers/scsi/aacraid/aachba.c
-+++ b/drivers/scsi/aacraid/aachba.c
-@@ -259,7 +259,7 @@ MODULE_PARM_DESC(commit, "Control whether a COMMIT_CONFIG is issued to the"
- 	" 0=off, 1=on");
- module_param_named(msi, aac_msi, int, S_IRUGO|S_IWUSR);
- MODULE_PARM_DESC(msi, "IRQ handling."
--	" 0=PIC(default), 1=MSI, 2=MSI-X(unsupported, uses MSI)");
-+	" 0=PIC(default), 1=MSI, 2=MSI-X)");
- module_param(startup_timeout, int, S_IRUGO|S_IWUSR);
- MODULE_PARM_DESC(startup_timeout, "The duration of time in seconds to wait for"
- 	" adapter to have it's kernel up and\n"
-diff --git a/drivers/scsi/aacraid/src.c b/drivers/scsi/aacraid/src.c
-index b147341ac24d..eb07b3d4ed38 100644
---- a/drivers/scsi/aacraid/src.c
-+++ b/drivers/scsi/aacraid/src.c
-@@ -742,7 +742,7 @@ int aac_src_init(struct aac_dev *dev)
- 	if (dev->comm_interface != AAC_COMM_MESSAGE_TYPE1)
- 		goto error_iounmap;
- 
--	dev->msi = aac_msi && !pci_enable_msi(dev->pdev);
-+	dev->msi = !pci_enable_msi(dev->pdev);
- 
- 	dev->aac_msix[0].vector_no = 0;
- 	dev->aac_msix[0].dev = dev;
--- 
-2.6.2
-
diff --git a/openpower/linux/linux-0009-aacraid-Tune-response-path-if-IsFastPath-bit-set.patch b/openpower/linux/linux-0009-aacraid-Tune-response-path-if-IsFastPath-bit-set.patch
deleted file mode 100644
index 81d0dcf..0000000
--- a/openpower/linux/linux-0009-aacraid-Tune-response-path-if-IsFastPath-bit-set.patch
+++ /dev/null
@@ -1,319 +0,0 @@
-From abcbb5d7d8e9e6144487bfcc22d14efe3f76de40 Mon Sep 17 00:00:00 2001
-From: Mahesh Rajashekhara <Mahesh.Rajashekhara@pmcs.com>
-Date: Fri, 28 Aug 2015 06:38:37 -0400
-Subject: [PATCH 09/15] aacraid: Tune response path if IsFastPath bit set
-
-If 'IsFastPath' bit is set, then response path assumes no error and skips error check.
-
-Reviewed-by: Murthy Bhat <Murthy.Bhat@pmcs.com>
-Reviewed-by: Karthikeya Sunkesula <Karthikeya.Sunkesula@pmcs.com>
-Signed-off-by: Mahesh Rajashekhara <Mahesh.Rajashekhara@pmcs.com>
-Signed-off-by: Joel Stanley <joel@jms.id.au>
----
- drivers/scsi/aacraid/aachba.c | 259 ++++++++++++++++++++++--------------------
- 1 file changed, 137 insertions(+), 122 deletions(-)
-
-diff --git a/drivers/scsi/aacraid/aachba.c b/drivers/scsi/aacraid/aachba.c
-index 05f2a0295f4d..e4c243748a97 100644
---- a/drivers/scsi/aacraid/aachba.c
-+++ b/drivers/scsi/aacraid/aachba.c
-@@ -2977,11 +2977,16 @@ static void aac_srb_callback(void *context, struct fib * fibptr)
- 		return;
- 
- 	BUG_ON(fibptr == NULL);
--
- 	dev = fibptr->dev;
- 
--	srbreply = (struct aac_srb_reply *) fib_data(fibptr);
-+	scsi_dma_unmap(scsicmd);
- 
-+	/* expose physical device if expose_physicald flag is on */
-+	if (scsicmd->cmnd[0] == INQUIRY && !(scsicmd->cmnd[1] & 0x01)
-+	  && expose_physicals > 0)
-+		aac_expose_phy_device(scsicmd);
-+
-+	srbreply = (struct aac_srb_reply *) fib_data(fibptr);
- 	scsicmd->sense_buffer[0] = '\0';  /* Initialize sense valid flag to false */
- 
- 	if (fibptr->flags & FIB_CONTEXT_FLAG_FASTRESP) {
-@@ -2994,147 +2999,157 @@ static void aac_srb_callback(void *context, struct fib * fibptr)
- 		 */
- 		scsi_set_resid(scsicmd, scsi_bufflen(scsicmd)
- 				   - le32_to_cpu(srbreply->data_xfer_length));
--	}
--
--	scsi_dma_unmap(scsicmd);
--
--	/* expose physical device if expose_physicald flag is on */
--	if (scsicmd->cmnd[0] == INQUIRY && !(scsicmd->cmnd[1] & 0x01)
--	  && expose_physicals > 0)
--		aac_expose_phy_device(scsicmd);
-+		/*
-+		 * First check the fib status
-+		 */
- 
--	/*
--	 * First check the fib status
--	 */
-+		if (le32_to_cpu(srbreply->status) != ST_OK) {
-+			int len;
- 
--	if (le32_to_cpu(srbreply->status) != ST_OK){
--		int len;
--		printk(KERN_WARNING "aac_srb_callback: srb failed, status = %d\n", le32_to_cpu(srbreply->status));
--		len = min_t(u32, le32_to_cpu(srbreply->sense_data_size),
--			    SCSI_SENSE_BUFFERSIZE);
--		scsicmd->result = DID_ERROR << 16 | COMMAND_COMPLETE << 8 | SAM_STAT_CHECK_CONDITION;
--		memcpy(scsicmd->sense_buffer, srbreply->sense_data, len);
--	}
-+			printk(KERN_WARNING "aac_srb_callback: srb failed, status = %d\n", le32_to_cpu(srbreply->status));
-+			len = min_t(u32, le32_to_cpu(srbreply->sense_data_size),
-+				    SCSI_SENSE_BUFFERSIZE);
-+			scsicmd->result = DID_ERROR << 16
-+						| COMMAND_COMPLETE << 8
-+						| SAM_STAT_CHECK_CONDITION;
-+			memcpy(scsicmd->sense_buffer,
-+					srbreply->sense_data, len);
-+		}
- 
--	/*
--	 * Next check the srb status
--	 */
--	switch( (le32_to_cpu(srbreply->srb_status))&0x3f){
--	case SRB_STATUS_ERROR_RECOVERY:
--	case SRB_STATUS_PENDING:
--	case SRB_STATUS_SUCCESS:
--		scsicmd->result = DID_OK << 16 | COMMAND_COMPLETE << 8;
--		break;
--	case SRB_STATUS_DATA_OVERRUN:
--		switch(scsicmd->cmnd[0]){
--		case  READ_6:
--		case  WRITE_6:
--		case  READ_10:
--		case  WRITE_10:
--		case  READ_12:
--		case  WRITE_12:
--		case  READ_16:
--		case  WRITE_16:
--			if (le32_to_cpu(srbreply->data_xfer_length) < scsicmd->underflow) {
--				printk(KERN_WARNING"aacraid: SCSI CMD underflow\n");
--			} else {
--				printk(KERN_WARNING"aacraid: SCSI CMD Data Overrun\n");
-+		/*
-+		 * Next check the srb status
-+		 */
-+		switch ((le32_to_cpu(srbreply->srb_status))&0x3f) {
-+		case SRB_STATUS_ERROR_RECOVERY:
-+		case SRB_STATUS_PENDING:
-+		case SRB_STATUS_SUCCESS:
-+			scsicmd->result = DID_OK << 16 | COMMAND_COMPLETE << 8;
-+			break;
-+		case SRB_STATUS_DATA_OVERRUN:
-+			switch (scsicmd->cmnd[0]) {
-+			case  READ_6:
-+			case  WRITE_6:
-+			case  READ_10:
-+			case  WRITE_10:
-+			case  READ_12:
-+			case  WRITE_12:
-+			case  READ_16:
-+			case  WRITE_16:
-+				if (le32_to_cpu(srbreply->data_xfer_length)
-+							< scsicmd->underflow)
-+					printk(KERN_WARNING"aacraid: SCSI CMD underflow\n");
-+				else
-+					printk(KERN_WARNING"aacraid: SCSI CMD Data Overrun\n");
-+				scsicmd->result = DID_ERROR << 16
-+							| COMMAND_COMPLETE << 8;
-+				break;
-+			case INQUIRY: {
-+				scsicmd->result = DID_OK << 16
-+							| COMMAND_COMPLETE << 8;
-+				break;
-+			}
-+			default:
-+				scsicmd->result = DID_OK << 16 | COMMAND_COMPLETE << 8;
-+				break;
- 			}
--			scsicmd->result = DID_ERROR << 16 | COMMAND_COMPLETE << 8;
- 			break;
--		case INQUIRY: {
--			scsicmd->result = DID_OK << 16 | COMMAND_COMPLETE << 8;
-+		case SRB_STATUS_ABORTED:
-+			scsicmd->result = DID_ABORT << 16 | ABORT << 8;
- 			break;
--		}
--		default:
--			scsicmd->result = DID_OK << 16 | COMMAND_COMPLETE << 8;
-+		case SRB_STATUS_ABORT_FAILED:
-+			/*
-+			 * Not sure about this one - but assuming the
-+			 * hba was trying to abort for some reason
-+			 */
-+			scsicmd->result = DID_ERROR << 16 | ABORT << 8;
-+			break;
-+		case SRB_STATUS_PARITY_ERROR:
-+			scsicmd->result = DID_PARITY << 16
-+						| MSG_PARITY_ERROR << 8;
-+			break;
-+		case SRB_STATUS_NO_DEVICE:
-+		case SRB_STATUS_INVALID_PATH_ID:
-+		case SRB_STATUS_INVALID_TARGET_ID:
-+		case SRB_STATUS_INVALID_LUN:
-+		case SRB_STATUS_SELECTION_TIMEOUT:
-+			scsicmd->result = DID_NO_CONNECT << 16
-+						| COMMAND_COMPLETE << 8;
- 			break;
--		}
--		break;
--	case SRB_STATUS_ABORTED:
--		scsicmd->result = DID_ABORT << 16 | ABORT << 8;
--		break;
--	case SRB_STATUS_ABORT_FAILED:
--		// Not sure about this one - but assuming the hba was trying to abort for some reason
--		scsicmd->result = DID_ERROR << 16 | ABORT << 8;
--		break;
--	case SRB_STATUS_PARITY_ERROR:
--		scsicmd->result = DID_PARITY << 16 | MSG_PARITY_ERROR << 8;
--		break;
--	case SRB_STATUS_NO_DEVICE:
--	case SRB_STATUS_INVALID_PATH_ID:
--	case SRB_STATUS_INVALID_TARGET_ID:
--	case SRB_STATUS_INVALID_LUN:
--	case SRB_STATUS_SELECTION_TIMEOUT:
--		scsicmd->result = DID_NO_CONNECT << 16 | COMMAND_COMPLETE << 8;
--		break;
- 
--	case SRB_STATUS_COMMAND_TIMEOUT:
--	case SRB_STATUS_TIMEOUT:
--		scsicmd->result = DID_TIME_OUT << 16 | COMMAND_COMPLETE << 8;
--		break;
-+		case SRB_STATUS_COMMAND_TIMEOUT:
-+		case SRB_STATUS_TIMEOUT:
-+			scsicmd->result = DID_TIME_OUT << 16
-+						| COMMAND_COMPLETE << 8;
-+			break;
- 
--	case SRB_STATUS_BUSY:
--		scsicmd->result = DID_BUS_BUSY << 16 | COMMAND_COMPLETE << 8;
--		break;
-+		case SRB_STATUS_BUSY:
-+			scsicmd->result = DID_BUS_BUSY << 16
-+						| COMMAND_COMPLETE << 8;
-+			break;
- 
--	case SRB_STATUS_BUS_RESET:
--		scsicmd->result = DID_RESET << 16 | COMMAND_COMPLETE << 8;
--		break;
-+		case SRB_STATUS_BUS_RESET:
-+			scsicmd->result = DID_RESET << 16
-+						| COMMAND_COMPLETE << 8;
-+			break;
- 
--	case SRB_STATUS_MESSAGE_REJECTED:
--		scsicmd->result = DID_ERROR << 16 | MESSAGE_REJECT << 8;
--		break;
--	case SRB_STATUS_REQUEST_FLUSHED:
--	case SRB_STATUS_ERROR:
--	case SRB_STATUS_INVALID_REQUEST:
--	case SRB_STATUS_REQUEST_SENSE_FAILED:
--	case SRB_STATUS_NO_HBA:
--	case SRB_STATUS_UNEXPECTED_BUS_FREE:
--	case SRB_STATUS_PHASE_SEQUENCE_FAILURE:
--	case SRB_STATUS_BAD_SRB_BLOCK_LENGTH:
--	case SRB_STATUS_DELAYED_RETRY:
--	case SRB_STATUS_BAD_FUNCTION:
--	case SRB_STATUS_NOT_STARTED:
--	case SRB_STATUS_NOT_IN_USE:
--	case SRB_STATUS_FORCE_ABORT:
--	case SRB_STATUS_DOMAIN_VALIDATION_FAIL:
--	default:
-+		case SRB_STATUS_MESSAGE_REJECTED:
-+			scsicmd->result = DID_ERROR << 16
-+						| MESSAGE_REJECT << 8;
-+			break;
-+		case SRB_STATUS_REQUEST_FLUSHED:
-+		case SRB_STATUS_ERROR:
-+		case SRB_STATUS_INVALID_REQUEST:
-+		case SRB_STATUS_REQUEST_SENSE_FAILED:
-+		case SRB_STATUS_NO_HBA:
-+		case SRB_STATUS_UNEXPECTED_BUS_FREE:
-+		case SRB_STATUS_PHASE_SEQUENCE_FAILURE:
-+		case SRB_STATUS_BAD_SRB_BLOCK_LENGTH:
-+		case SRB_STATUS_DELAYED_RETRY:
-+		case SRB_STATUS_BAD_FUNCTION:
-+		case SRB_STATUS_NOT_STARTED:
-+		case SRB_STATUS_NOT_IN_USE:
-+		case SRB_STATUS_FORCE_ABORT:
-+		case SRB_STATUS_DOMAIN_VALIDATION_FAIL:
-+		default:
- #ifdef AAC_DETAILED_STATUS_INFO
--		printk("aacraid: SRB ERROR(%u) %s scsi cmd 0x%x - scsi status 0x%x\n",
--			le32_to_cpu(srbreply->srb_status) & 0x3F,
--			aac_get_status_string(
--				le32_to_cpu(srbreply->srb_status) & 0x3F),
--			scsicmd->cmnd[0],
--			le32_to_cpu(srbreply->scsi_status));
-+			printk(KERN_INFO "aacraid: SRB ERROR(%u) %s scsi cmd 0x%x - scsi status 0x%x\n",
-+				le32_to_cpu(srbreply->srb_status) & 0x3F,
-+				aac_get_status_string(
-+					le32_to_cpu(srbreply->srb_status) & 0x3F),
-+				scsicmd->cmnd[0],
-+				le32_to_cpu(srbreply->scsi_status));
- #endif
--		if ((scsicmd->cmnd[0] == ATA_12)
--		  || (scsicmd->cmnd[0] == ATA_16)) {
--			if (scsicmd->cmnd[2] & (0x01 << 5)) {
--				scsicmd->result = DID_OK << 16
--						| COMMAND_COMPLETE << 8;
-+			if ((scsicmd->cmnd[0] == ATA_12)
-+				|| (scsicmd->cmnd[0] == ATA_16)) {
-+					if (scsicmd->cmnd[2] & (0x01 << 5)) {
-+						scsicmd->result = DID_OK << 16
-+							| COMMAND_COMPLETE << 8;
- 				break;
-+				} else {
-+					scsicmd->result = DID_ERROR << 16
-+						| COMMAND_COMPLETE << 8;
-+					break;
-+				}
- 			} else {
- 				scsicmd->result = DID_ERROR << 16
--						| COMMAND_COMPLETE << 8;
-+					| COMMAND_COMPLETE << 8;
- 				break;
- 			}
--		} else {
--			scsicmd->result = DID_ERROR << 16
--					| COMMAND_COMPLETE << 8;
--			break;
- 		}
--	}
--	if (le32_to_cpu(srbreply->scsi_status) == SAM_STAT_CHECK_CONDITION) {
--		int len;
--		scsicmd->result |= SAM_STAT_CHECK_CONDITION;
--		len = min_t(u32, le32_to_cpu(srbreply->sense_data_size),
--			    SCSI_SENSE_BUFFERSIZE);
-+		if (le32_to_cpu(srbreply->scsi_status)
-+				== SAM_STAT_CHECK_CONDITION) {
-+			int len;
-+
-+			scsicmd->result |= SAM_STAT_CHECK_CONDITION;
-+			len = min_t(u32, le32_to_cpu(srbreply->sense_data_size),
-+				    SCSI_SENSE_BUFFERSIZE);
- #ifdef AAC_DETAILED_STATUS_INFO
--		printk(KERN_WARNING "aac_srb_callback: check condition, status = %d len=%d\n",
--					le32_to_cpu(srbreply->status), len);
-+			printk(KERN_WARNING "aac_srb_callback: check condition, status = %d len=%d\n",
-+						le32_to_cpu(srbreply->status), len);
- #endif
--		memcpy(scsicmd->sense_buffer, srbreply->sense_data, len);
-+			memcpy(scsicmd->sense_buffer,
-+					srbreply->sense_data, len);
-+		}
- 	}
- 	/*
- 	 * OR in the scsi status (already shifted up a bit)
--- 
-2.6.2
-
diff --git a/openpower/linux/linux-0010-aacraid-Enable-64bit-write-to-controller-register.patch b/openpower/linux/linux-0010-aacraid-Enable-64bit-write-to-controller-register.patch
deleted file mode 100644
index ec349ff..0000000
--- a/openpower/linux/linux-0010-aacraid-Enable-64bit-write-to-controller-register.patch
+++ /dev/null
@@ -1,92 +0,0 @@
-From 2eed91e90f6fa1bfdc21c5c84eeff9d656cfb2f6 Mon Sep 17 00:00:00 2001
-From: Mahesh Rajashekhara <Mahesh.Rajashekhara@pmcs.com>
-Date: Fri, 28 Aug 2015 06:38:36 -0400
-Subject: [PATCH 10/15] aacraid: Enable 64bit write to controller register
-
-If writeq() not supported, then do atomic two 32bit write
-
-Reviewed-by: Tomas Henzl <thenzl@redhat.com>
-Reviewed-by: Murthy Bhat <Murthy.Bhat@pmcs.com>
-Reviewed-by: Karthikeya Sunkesula <Karthikeya.Sunkesula@pmcs.com>
-Signed-off-by: Mahesh Rajashekhara <Mahesh.Rajashekhara@pmcs.com>
-Signed-off-by: Joel Stanley <joel@jms.id.au>
----
- drivers/scsi/aacraid/aacraid.h  |  9 +++++++++
- drivers/scsi/aacraid/comminit.c |  1 +
- drivers/scsi/aacraid/src.c      | 12 ++++++++++--
- 3 files changed, 20 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/scsi/aacraid/aacraid.h b/drivers/scsi/aacraid/aacraid.h
-index 62b099940345..e54f597a058d 100644
---- a/drivers/scsi/aacraid/aacraid.h
-+++ b/drivers/scsi/aacraid/aacraid.h
-@@ -844,6 +844,10 @@ struct src_registers {
- 						&((AEP)->regs.src.bar0->CSR))
- #define src_writel(AEP, CSR, value)	writel(value, \
- 						&((AEP)->regs.src.bar0->CSR))
-+#if defined(writeq)
-+#define	src_writeq(AEP, CSR, value)	writeq(value, \
-+						&((AEP)->regs.src.bar0->CSR))
-+#endif
- 
- #define SRC_ODR_SHIFT		12
- #define SRC_IDR_SHIFT		9
-@@ -1163,6 +1167,11 @@ struct aac_dev
- 	struct fsa_dev_info	*fsa_dev;
- 	struct task_struct	*thread;
- 	int			cardtype;
-+	/*
-+	 *This lock will protect the two 32-bit
-+	 *writes to the Inbound Queue
-+	 */
-+	spinlock_t		iq_lock;
- 
- 	/*
- 	 *	The following is the device specific extension.
-diff --git a/drivers/scsi/aacraid/comminit.c b/drivers/scsi/aacraid/comminit.c
-index 45a0a044dfdb..b4b6088fcb33 100644
---- a/drivers/scsi/aacraid/comminit.c
-+++ b/drivers/scsi/aacraid/comminit.c
-@@ -424,6 +424,7 @@ struct aac_dev *aac_init_adapter(struct aac_dev *dev)
- 	dev->management_fib_count = 0;
- 	spin_lock_init(&dev->manage_lock);
- 	spin_lock_init(&dev->sync_lock);
-+	spin_lock_init(&dev->iq_lock);
- 	dev->max_fib_size = sizeof(struct hw_fib);
- 	dev->sg_tablesize = host->sg_tablesize = (dev->max_fib_size
- 		- sizeof(struct aac_fibhdr)
-diff --git a/drivers/scsi/aacraid/src.c b/drivers/scsi/aacraid/src.c
-index eb07b3d4ed38..1409a0b945ea 100644
---- a/drivers/scsi/aacraid/src.c
-+++ b/drivers/scsi/aacraid/src.c
-@@ -447,6 +447,10 @@ static int aac_src_deliver_message(struct fib *fib)
- 	u32 fibsize;
- 	dma_addr_t address;
- 	struct aac_fib_xporthdr *pFibX;
-+#if !defined(writeq)
-+	unsigned long flags;
-+#endif
-+
- 	u16 hdr_size = le16_to_cpu(fib->hw_fib_va->header.Size);
- 
- 	atomic_inc(&q->numpending);
-@@ -511,10 +515,14 @@ static int aac_src_deliver_message(struct fib *fib)
- 			return -EINVAL;
- 		address |= fibsize;
- 	}
--
-+#if defined(writeq)
-+	src_writeq(dev, MUnit.IQ_L, (u64)address);
-+#else
-+	spin_lock_irqsave(&fib->dev->iq_lock, flags);
- 	src_writel(dev, MUnit.IQ_H, upper_32_bits(address) & 0xffffffff);
- 	src_writel(dev, MUnit.IQ_L, address & 0xffffffff);
--
-+	spin_unlock_irqrestore(&fib->dev->iq_lock, flags);
-+#endif
- 	return 0;
- }
- 
--- 
-2.6.2
-
diff --git a/openpower/linux/linux-0011-aacraid-IOCTL-fix.patch b/openpower/linux/linux-0011-aacraid-IOCTL-fix.patch
deleted file mode 100644
index a06e485..0000000
--- a/openpower/linux/linux-0011-aacraid-IOCTL-fix.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 21b4be79f2475bc5acd600400c47110695675ac0 Mon Sep 17 00:00:00 2001
-From: Mahesh Rajashekhara <Mahesh.Rajashekhara@pmcs.com>
-Date: Fri, 28 Aug 2015 06:38:39 -0400
-Subject: [PATCH 11/15] aacraid: IOCTL fix
-
-Driver blocks ioctls once it received shutdown/suspend request during
-suspend/hybernation. This patch unblocks ioctls on resume path.
-
-Reviewed-by: Tomas Henzl <thenzl@redhat.com>
-Reviewed-by: Murthy Bhat <Murthy.Bhat@pmcs.com>
-Reviewed-by: Karthikeya Sunkesula <Karthikeya.Sunkesula@pmcs.com>
-Signed-off-by: Mahesh Rajashekhara <Mahesh.Rajashekhara@pmcs.com>
-Signed-off-by: Joel Stanley <joel@jms.id.au>
----
- drivers/scsi/aacraid/linit.c | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/drivers/scsi/aacraid/linit.c b/drivers/scsi/aacraid/linit.c
-index 37375cf7d126..3b6e5c67e853 100644
---- a/drivers/scsi/aacraid/linit.c
-+++ b/drivers/scsi/aacraid/linit.c
-@@ -1448,6 +1448,11 @@ static int aac_resume(struct pci_dev *pdev)
- 	pci_set_master(pdev);
- 	if (aac_acquire_resources(aac))
- 		goto fail_device;
-+	/*
-+	* reset this flag to unblock ioctl() as it was set at
-+	* aac_send_shutdown() to block ioctls from upperlayer
-+	*/
-+	aac->adapter_shutdown = 0;
- 	scsi_unblock_requests(shost);
- 
- 	return 0;
--- 
-2.6.2
-
diff --git a/openpower/linux/linux-0012-aacraid-Reset-irq-affinity-hints.patch b/openpower/linux/linux-0012-aacraid-Reset-irq-affinity-hints.patch
deleted file mode 100644
index 3434b4b..0000000
--- a/openpower/linux/linux-0012-aacraid-Reset-irq-affinity-hints.patch
+++ /dev/null
@@ -1,242 +0,0 @@
-From 691bc6c6570ffbd9e1c4733dd12cd513ff6e19ec Mon Sep 17 00:00:00 2001
-From: Mahesh Rajashekhara <Mahesh.Rajashekhara@pmcs.com>
-Date: Fri, 28 Aug 2015 06:38:38 -0400
-Subject: [PATCH 12/15] aacraid: Reset irq affinity hints
-
-Reset irq affinity hints before releasing IRQ.
-Removed duplicate code of IRQ acquire/release.
-
-Reviewed-by: Tomas Henzl <thenzl@redhat.com>
-Reviewed-by: Murthy Bhat <Murthy.Bhat@pmcs.com>
-Reviewed-by: Karthikeya Sunkesula <Karthikeya.Sunkesula@pmcs.com>
-Signed-off-by: Mahesh Rajashekhara <Mahesh.Rajashekhara@pmcs.com>
-Signed-off-by: Joel Stanley <joel@jms.id.au>
----
- drivers/scsi/aacraid/aacraid.h |   2 +
- drivers/scsi/aacraid/commsup.c | 113 ++++++++++++++++++++++++++++++-----------
- drivers/scsi/aacraid/src.c     |  48 ++---------------
- 3 files changed, 88 insertions(+), 75 deletions(-)
-
-diff --git a/drivers/scsi/aacraid/aacraid.h b/drivers/scsi/aacraid/aacraid.h
-index e54f597a058d..7b95227af478 100644
---- a/drivers/scsi/aacraid/aacraid.h
-+++ b/drivers/scsi/aacraid/aacraid.h
-@@ -2110,6 +2110,8 @@ static inline unsigned int cap_to_cyls(sector_t capacity, unsigned divisor)
- #define AAC_OWNER_ERROR_HANDLER	0x103
- #define AAC_OWNER_FIRMWARE	0x106
- 
-+int aac_acquire_irq(struct aac_dev *dev);
-+void aac_free_irq(struct aac_dev *dev);
- const char *aac_driverinfo(struct Scsi_Host *);
- struct fib *aac_fib_alloc(struct aac_dev *dev);
- int aac_fib_setup(struct aac_dev *dev);
-diff --git a/drivers/scsi/aacraid/commsup.c b/drivers/scsi/aacraid/commsup.c
-index 4da574925284..a1f90fe849c9 100644
---- a/drivers/scsi/aacraid/commsup.c
-+++ b/drivers/scsi/aacraid/commsup.c
-@@ -1270,13 +1270,12 @@ retry_next:
- static int _aac_reset_adapter(struct aac_dev *aac, int forced)
- {
- 	int index, quirks;
--	int retval, i;
-+	int retval;
- 	struct Scsi_Host *host;
- 	struct scsi_device *dev;
- 	struct scsi_cmnd *command;
- 	struct scsi_cmnd *command_list;
- 	int jafo = 0;
--	int cpu;
- 
- 	/*
- 	 * Assumptions:
-@@ -1339,35 +1338,7 @@ static int _aac_reset_adapter(struct aac_dev *aac, int forced)
- 	aac->comm_phys = 0;
- 	kfree(aac->queues);
- 	aac->queues = NULL;
--	cpu = cpumask_first(cpu_online_mask);
--	if (aac->pdev->device == PMC_DEVICE_S6 ||
--	    aac->pdev->device == PMC_DEVICE_S7 ||
--	    aac->pdev->device == PMC_DEVICE_S8 ||
--	    aac->pdev->device == PMC_DEVICE_S9) {
--		if (aac->max_msix > 1) {
--			for (i = 0; i < aac->max_msix; i++) {
--				if (irq_set_affinity_hint(
--				    aac->msixentry[i].vector,
--				    NULL)) {
--					printk(KERN_ERR "%s%d: Failed to reset IRQ affinity for cpu %d\n",
--						aac->name,
--						aac->id,
--						cpu);
--				}
--				cpu = cpumask_next(cpu,
--						cpu_online_mask);
--				free_irq(aac->msixentry[i].vector,
--					 &(aac->aac_msix[i]));
--			}
--			pci_disable_msix(aac->pdev);
--		} else {
--			free_irq(aac->pdev->irq, &(aac->aac_msix[0]));
--		}
--	} else {
--		free_irq(aac->pdev->irq, aac);
--	}
--	if (aac->msi)
--		pci_disable_msi(aac->pdev);
-+	aac_free_irq(aac);
- 	kfree(aac->fsa_dev);
- 	aac->fsa_dev = NULL;
- 	quirks = aac_get_driver_ident(index)->quirks;
-@@ -1978,3 +1949,83 @@ int aac_command_thread(void *data)
- 	dev->aif_thread = 0;
- 	return 0;
- }
-+
-+int aac_acquire_irq(struct aac_dev *dev)
-+{
-+	int i;
-+	int j;
-+	int ret = 0;
-+	int cpu;
-+
-+	cpu = cpumask_first(cpu_online_mask);
-+	if (!dev->sync_mode && dev->msi_enabled && dev->max_msix > 1) {
-+		for (i = 0; i < dev->max_msix; i++) {
-+			dev->aac_msix[i].vector_no = i;
-+			dev->aac_msix[i].dev = dev;
-+			if (request_irq(dev->msixentry[i].vector,
-+					dev->a_ops.adapter_intr,
-+					0, "aacraid", &(dev->aac_msix[i]))) {
-+				printk(KERN_ERR "%s%d: Failed to register IRQ for vector %d.\n",
-+						dev->name, dev->id, i);
-+				for (j = 0 ; j < i ; j++)
-+					free_irq(dev->msixentry[j].vector,
-+						 &(dev->aac_msix[j]));
-+				pci_disable_msix(dev->pdev);
-+				ret = -1;
-+			}
-+			if (irq_set_affinity_hint(dev->msixentry[i].vector,
-+							get_cpu_mask(cpu))) {
-+				printk(KERN_ERR "%s%d: Failed to set IRQ affinity for cpu %d\n",
-+					    dev->name, dev->id, cpu);
-+			}
-+			cpu = cpumask_next(cpu, cpu_online_mask);
-+		}
-+	} else {
-+		dev->aac_msix[0].vector_no = 0;
-+		dev->aac_msix[0].dev = dev;
-+
-+		if (request_irq(dev->pdev->irq, dev->a_ops.adapter_intr,
-+			IRQF_SHARED, "aacraid",
-+			&(dev->aac_msix[0])) < 0) {
-+			if (dev->msi)
-+				pci_disable_msi(dev->pdev);
-+			printk(KERN_ERR "%s%d: Interrupt unavailable.\n",
-+					dev->name, dev->id);
-+			ret = -1;
-+		}
-+	}
-+	return ret;
-+}
-+
-+void aac_free_irq(struct aac_dev *dev)
-+{
-+	int i;
-+	int cpu;
-+
-+	cpu = cpumask_first(cpu_online_mask);
-+	if (dev->pdev->device == PMC_DEVICE_S6 ||
-+	    dev->pdev->device == PMC_DEVICE_S7 ||
-+	    dev->pdev->device == PMC_DEVICE_S8 ||
-+	    dev->pdev->device == PMC_DEVICE_S9) {
-+		if (dev->max_msix > 1) {
-+			for (i = 0; i < dev->max_msix; i++) {
-+				if (irq_set_affinity_hint(
-+					dev->msixentry[i].vector, NULL)) {
-+					printk(KERN_ERR "%s%d: Failed to reset IRQ affinity for cpu %d\n",
-+					    dev->name, dev->id, cpu);
-+				}
-+				cpu = cpumask_next(cpu, cpu_online_mask);
-+				free_irq(dev->msixentry[i].vector,
-+						&(dev->aac_msix[i]));
-+			}
-+		} else {
-+			free_irq(dev->pdev->irq, &(dev->aac_msix[0]));
-+		}
-+	} else {
-+		free_irq(dev->pdev->irq, dev);
-+	}
-+	if (dev->msi)
-+		pci_disable_msi(dev->pdev);
-+	else if (dev->max_msix > 1)
-+		pci_disable_msix(dev->pdev);
-+}
-diff --git a/drivers/scsi/aacraid/src.c b/drivers/scsi/aacraid/src.c
-index 1409a0b945ea..2aa34ea8ceb1 100644
---- a/drivers/scsi/aacraid/src.c
-+++ b/drivers/scsi/aacraid/src.c
-@@ -798,9 +798,7 @@ int aac_srcv_init(struct aac_dev *dev)
- 	unsigned long status;
- 	int restart = 0;
- 	int instance = dev->id;
--	int i, j;
- 	const char *name = dev->name;
--	int cpu;
- 
- 	dev->a_ops.adapter_ioremap = aac_srcv_ioremap;
- 	dev->a_ops.adapter_comm = aac_src_select_comm;
-@@ -918,48 +916,10 @@ int aac_srcv_init(struct aac_dev *dev)
- 		goto error_iounmap;
- 	if (dev->msi_enabled)
- 		aac_src_access_devreg(dev, AAC_ENABLE_MSIX);
--	if (!dev->sync_mode && dev->msi_enabled && dev->max_msix > 1) {
--		cpu = cpumask_first(cpu_online_mask);
--		for (i = 0; i < dev->max_msix; i++) {
--			dev->aac_msix[i].vector_no = i;
--			dev->aac_msix[i].dev = dev;
--
--			if (request_irq(dev->msixentry[i].vector,
--					dev->a_ops.adapter_intr,
--					0,
--					"aacraid",
--					&(dev->aac_msix[i]))) {
--				printk(KERN_ERR "%s%d: Failed to register IRQ for vector %d.\n",
--						name, instance, i);
--				for (j = 0 ; j < i ; j++)
--					free_irq(dev->msixentry[j].vector,
--						 &(dev->aac_msix[j]));
--				pci_disable_msix(dev->pdev);
--				goto error_iounmap;
--			}
--			if (irq_set_affinity_hint(
--			   dev->msixentry[i].vector,
--			   get_cpu_mask(cpu))) {
--				printk(KERN_ERR "%s%d: Failed to set IRQ affinity for cpu %d\n",
--						name, instance, cpu);
--			}
--			cpu = cpumask_next(cpu, cpu_online_mask);
--		}
--	} else {
--		dev->aac_msix[0].vector_no = 0;
--		dev->aac_msix[0].dev = dev;
--
--		if (request_irq(dev->pdev->irq, dev->a_ops.adapter_intr,
--				IRQF_SHARED,
--				"aacraid",
--				&(dev->aac_msix[0])) < 0) {
--			if (dev->msi)
--				pci_disable_msi(dev->pdev);
--			printk(KERN_ERR "%s%d: Interrupt unavailable.\n",
--					name, instance);
--			goto error_iounmap;
--		}
--	}
-+
-+	if (aac_acquire_irq(dev))
-+		goto error_iounmap;
-+
- 	dev->dbg_base = dev->base_start;
- 	dev->dbg_base_mapped = dev->base;
- 	dev->dbg_size = dev->base_size;
--- 
-2.6.2
-
diff --git a/openpower/linux/linux-0013-aacraid-Use-pci_enable_msix_range.patch b/openpower/linux/linux-0013-aacraid-Use-pci_enable_msix_range.patch
deleted file mode 100644
index 69621fa..0000000
--- a/openpower/linux/linux-0013-aacraid-Use-pci_enable_msix_range.patch
+++ /dev/null
@@ -1,74 +0,0 @@
-From 9db12f2808069bb0d284cf3745d3aad2727d8efa Mon Sep 17 00:00:00 2001
-From: Mahesh Rajashekhara <Mahesh.Rajashekhara@pmcs.com>
-Date: Fri, 28 Aug 2015 06:38:40 -0400
-Subject: [PATCH 13/15] aacraid: Use pci_enable_msix_range()
-
-As pci_enable_msix() deprecated, replaced with pci_enable_msix_range()
-
-Reviewed-by: Tomas Henzl <thenzl@redhat.com>
-Reviewed-by: Murthy Bhat <Murthy.Bhat@pmcs.com>
-Reviewed-by: Karthikeya Sunkesula <Karthikeya.Sunkesula@pmcs.com>
-Signed-off-by: Mahesh Rajashekhara <Mahesh.Rajashekhara@pmcs.com>
-Signed-off-by: Joel Stanley <joel@jms.id.au>
----
- drivers/scsi/aacraid/aacraid.h  |  2 +-
- drivers/scsi/aacraid/comminit.c | 20 ++++++--------------
- 2 files changed, 7 insertions(+), 15 deletions(-)
-
-diff --git a/drivers/scsi/aacraid/aacraid.h b/drivers/scsi/aacraid/aacraid.h
-index 7b95227af478..2de5ebcce138 100644
---- a/drivers/scsi/aacraid/aacraid.h
-+++ b/drivers/scsi/aacraid/aacraid.h
-@@ -12,7 +12,7 @@
-  *              D E F I N E S
-  *----------------------------------------------------------------------------*/
- 
--#define AAC_MAX_MSIX		8	/* vectors */
-+#define AAC_MAX_MSIX		32	/* vectors */
- #define AAC_PCI_MSI_ENABLE	0x8000
- 
- enum {
-diff --git a/drivers/scsi/aacraid/comminit.c b/drivers/scsi/aacraid/comminit.c
-index b4b6088fcb33..0e954e37f0b5 100644
---- a/drivers/scsi/aacraid/comminit.c
-+++ b/drivers/scsi/aacraid/comminit.c
-@@ -338,7 +338,7 @@ static int aac_comm_init(struct aac_dev * dev)
- 
- void aac_define_int_mode(struct aac_dev *dev)
- {
--	int i, msi_count;
-+	int i, msi_count, min_msix;
- 
- 	msi_count = i = 0;
- 	/* max. vectors from GET_COMM_PREFERRED_SETTINGS */
-@@ -366,22 +366,14 @@ void aac_define_int_mode(struct aac_dev *dev)
- 
- 	if (msi_count > 1 &&
- 	    pci_find_capability(dev->pdev, PCI_CAP_ID_MSIX)) {
--		i = pci_enable_msix(dev->pdev,
-+		min_msix = 2;
-+		i = pci_enable_msix_range(dev->pdev,
- 				    dev->msixentry,
-+				    min_msix,
- 				    msi_count);
--		 /* Check how many MSIX vectors are allocated */
--		if (i >= 0) {
-+		if (i > 0) {
- 			dev->msi_enabled = 1;
--			if (i) {
--				msi_count = i;
--				if (pci_enable_msix(dev->pdev,
--				    dev->msixentry,
--				    msi_count)) {
--					dev->msi_enabled = 0;
--					printk(KERN_ERR "%s%d: MSIX not supported!! Will try MSI 0x%x.\n",
--							dev->name, dev->id, i);
--				}
--			}
-+			msi_count = i;
- 		} else {
- 			dev->msi_enabled = 0;
- 			printk(KERN_ERR "%s%d: MSIX not supported!! Will try MSI 0x%x.\n",
--- 
-2.6.2
-
diff --git a/openpower/linux/linux-0014-aacraid-Update-driver-version.patch b/openpower/linux/linux-0014-aacraid-Update-driver-version.patch
deleted file mode 100644
index 5eeed92..0000000
--- a/openpower/linux/linux-0014-aacraid-Update-driver-version.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 4ce229595057fb71ff775bd9b84a9f72848275b3 Mon Sep 17 00:00:00 2001
-From: Mahesh Rajashekhara <Mahesh.Rajashekhara@pmcs.com>
-Date: Fri, 28 Aug 2015 06:38:41 -0400
-Subject: [PATCH 14/15] aacraid: Update driver version
-
-Reviewed-by: Tomas Henzl <thenzl@redhat.com>
-Reviewed-by: Murthy Bhat <Murthy.Bhat@pmcs.com>
-Reviewed-by: Karthikeya Sunkesula <Karthikeya.Sunkesula@pmcs.com>
-Signed-off-by: Mahesh Rajashekhara <Mahesh.Rajashekhara@pmcs.com>
-Signed-off-by: Joel Stanley <joel@jms.id.au>
----
- drivers/scsi/aacraid/aacraid.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/scsi/aacraid/aacraid.h b/drivers/scsi/aacraid/aacraid.h
-index 2de5ebcce138..074878b55a0b 100644
---- a/drivers/scsi/aacraid/aacraid.h
-+++ b/drivers/scsi/aacraid/aacraid.h
-@@ -62,7 +62,7 @@ enum {
- #define	PMC_GLOBAL_INT_BIT0		0x00000001
- 
- #ifndef AAC_DRIVER_BUILD
--# define AAC_DRIVER_BUILD 40709
-+# define AAC_DRIVER_BUILD 41010
- # define AAC_DRIVER_BRANCH "-ms"
- #endif
- #define MAXIMUM_NUM_CONTAINERS	32
--- 
-2.6.2
-
diff --git a/openpower/linux/linux-0015-Release-4.2.6-openpower1.patch b/openpower/linux/linux-0015-Release-4.2.6-openpower1.patch
deleted file mode 100644
index dcbb6cb..0000000
--- a/openpower/linux/linux-0015-Release-4.2.6-openpower1.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From 56015eb38198431a6fe83f8d0d516242ce05e3df Mon Sep 17 00:00:00 2001
-From: Joel Stanley <joel@jms.id.au>
-Date: Tue, 20 Oct 2015 15:01:06 +1030
-Subject: [PATCH 15/15] Release 4.2.6-openpower1
-
-Signed-off-by: Joel Stanley <joel@jms.id.au>
----
- Makefile | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/Makefile b/Makefile
-index 9ef37399b4e8..028e6976b210 100644
---- a/Makefile
-+++ b/Makefile
-@@ -1,7 +1,7 @@
- VERSION = 4
- PATCHLEVEL = 2
- SUBLEVEL = 6
--EXTRAVERSION =
-+EXTRAVERSION = -openpower1
- NAME = Hurr durr I'ma sheep
- 
- # *DOCUMENTATION*
--- 
-2.6.2
-
