Release 4.4-openpower2 kernel

 - Updated defconfig for 4.4
 - Adds EEH PE patch
 - Restores xhci driver workarounds for USB bugs
 - aacraid driver is now usptream
 - Powerpc kexec patches are upstream

Tested on palmetto and habanero systems.

Signed-off-by: Joel Stanley <joel@jms.id.au>
diff --git a/buildroot b/buildroot
index 3c8df8b..13f9e11 160000
--- a/buildroot
+++ b/buildroot
@@ -1 +1 @@
-Subproject commit 3c8df8b8a7e9151a51b84296b73644786b21f7f1
+Subproject commit 13f9e110cb6243092b25b95c870d3c88503e1aac
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
-