summaryrefslogtreecommitdiffstats
path: root/openpower/linux
diff options
context:
space:
mode:
authorJoel Stanley <joel@jms.id.au>2016-01-22 16:13:06 +1030
committerJoel Stanley <joel@jms.id.au>2016-01-28 21:47:47 +1030
commitd9669fe85dca8da2ebd49f8d87921019ec42806c (patch)
treea2e7b3bfdbf55ae0a0745de749a45a472adfdc1f /openpower/linux
parentda2732d9bde6351c4668f50a63c9a02aeaec30d6 (diff)
downloadtalos-op-build-d9669fe85dca8da2ebd49f8d87921019ec42806c.tar.gz
talos-op-build-d9669fe85dca8da2ebd49f8d87921019ec42806c.zip
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>
Diffstat (limited to 'openpower/linux')
-rw-r--r--openpower/linux/linux-0001-powerpc-Add-openpower_defconfig.patch241
-rw-r--r--openpower/linux/linux-0001-xhci-Use-xhci_pci_remove-for-xhci-device-shutdown.patch (renamed from openpower/linux/linux-0002-xhci-Use-xhci_pci_remove-for-xhci-device-shutdown.patch)10
-rw-r--r--openpower/linux/linux-0002-Revert-usb-xhci-stop-everything-on-the-first-call-to.patch62
-rw-r--r--openpower/linux/linux-0003-powerpc-kexec-Reset-secondary-cpu-endianess-before-k.patch48
-rw-r--r--openpower/linux/linux-0003-xhci-do-not-halt-the-secondary-HCD.patch42
-rw-r--r--openpower/linux/linux-0004-powerpc-eeh-Fix-PE-location-code.patch75
-rw-r--r--openpower/linux/linux-0004-powerpc-kexec-Reset-HILE-before-kexec_sequence.patch40
-rw-r--r--openpower/linux/linux-0005-Release-4.4.0-openpower2.patch (renamed from openpower/linux/linux-0015-Release-4.2.6-openpower1.patch)16
-rw-r--r--openpower/linux/linux-0005-Revert-powerpc-Reject-binutils-2.24-when-building-li.patch38
-rw-r--r--openpower/linux/linux-0006-aacraid-Fix-for-LD-name-and-UID-not-exposed-to-OS.patch41
-rw-r--r--openpower/linux/linux-0007-aacraid-Add-Power-Management-support.patch441
-rw-r--r--openpower/linux/linux-0008-aacraid-Change-interrupt-mode-to-MSI-for-Series-6.patch46
-rw-r--r--openpower/linux/linux-0009-aacraid-Tune-response-path-if-IsFastPath-bit-set.patch319
-rw-r--r--openpower/linux/linux-0010-aacraid-Enable-64bit-write-to-controller-register.patch92
-rw-r--r--openpower/linux/linux-0011-aacraid-IOCTL-fix.patch36
-rw-r--r--openpower/linux/linux-0012-aacraid-Reset-irq-affinity-hints.patch242
-rw-r--r--openpower/linux/linux-0013-aacraid-Use-pci_enable_msix_range.patch74
-rw-r--r--openpower/linux/linux-0014-aacraid-Update-driver-version.patch30
18 files changed, 192 insertions, 1701 deletions
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 5724b603..00000000
--- 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
index edfa9d28..98a6a9e8 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 @@ Signed-off-by: Joel Stanley <joel@jms.id.au>
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 @@ index c47d3e480586..a7447462b663 100644
.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 00000000..63ac2969
--- /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 78d6a8b6..00000000
--- 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 00000000..3ad61578
--- /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 00000000..155133c5
--- /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 89e25f20..00000000
--- 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-0015-Release-4.2.6-openpower1.patch b/openpower/linux/linux-0005-Release-4.4.0-openpower2.patch
index dcbb6cb3..7e3759a7 100644
--- a/openpower/linux/linux-0015-Release-4.2.6-openpower1.patch
+++ b/openpower/linux/linux-0005-Release-4.4.0-openpower2.patch
@@ -1,7 +1,7 @@
-From 56015eb38198431a6fe83f8d0d516242ce05e3df Mon Sep 17 00:00:00 2001
+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 15/15] Release 4.2.6-openpower1
+Subject: [PATCH 5/5] Release 4.4.0-openpower2
Signed-off-by: Joel Stanley <joel@jms.id.au>
---
@@ -9,18 +9,18 @@ Signed-off-by: Joel Stanley <joel@jms.id.au>
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Makefile b/Makefile
-index 9ef37399b4e8..028e6976b210 100644
+index 70dea02f1346..93c4379da8ed 100644
--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,7 @@
VERSION = 4
- PATCHLEVEL = 2
- SUBLEVEL = 6
+ PATCHLEVEL = 4
+ SUBLEVEL = 0
-EXTRAVERSION =
-+EXTRAVERSION = -openpower1
- NAME = Hurr durr I'ma sheep
++EXTRAVERSION = -openpower2
+ NAME = Blurry Fish Butt
# *DOCUMENTATION*
--
-2.6.2
+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 c0d298b9..00000000
--- 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 712e090e..00000000
--- 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 c26a5baf..00000000
--- 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 872fdc75..00000000
--- 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 81d0dcf3..00000000
--- 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 ec349ff3..00000000
--- 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 a06e4858..00000000
--- 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 3434b4bf..00000000
--- 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 69621fa4..00000000
--- 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 5eeed92b..00000000
--- 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
-
OpenPOWER on IntegriCloud