linux: Update to v4.2.6-openpower1

 - Rebased on upstream stable release v4.2.6
 - Dropped "ast: Default to 8bpp on big endian", as we do not build
   for big endian, and there was no interest in upstreaming this patch
 - Dropped "fbcon: initialize blink interval before calling" as this is
   in the upstream stable release

Signed-off-by: Joel Stanley <joel@jms.id.au>
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
new file mode 100644
index 0000000..81d0dcf
--- /dev/null
+++ b/openpower/linux/linux-0009-aacraid-Tune-response-path-if-IsFastPath-bit-set.patch
@@ -0,0 +1,319 @@
+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
+