--- /dev/null
+From 1e793f6fc0db920400574211c48f9157a37e3945 Mon Sep 17 00:00:00 2001
+From: Kashyap Desai <kashyap.desai@broadcom.com>
+Date: Fri, 21 Oct 2016 06:33:32 -0700
+Subject: scsi: megaraid_sas: Fix data integrity failure for JBOD (passthrough) devices
+
+From: Kashyap Desai <kashyap.desai@broadcom.com>
+
+commit 1e793f6fc0db920400574211c48f9157a37e3945 upstream.
+
+Commit 02b01e010afe ("megaraid_sas: return sync cache call with
+success") modified the driver to successfully complete SYNCHRONIZE_CACHE
+commands without passing them to the controller. Disk drive caches are
+only explicitly managed by controller firmware when operating in RAID
+mode. So this commit effectively disabled writeback cache flushing for
+any drives used in JBOD mode, leading to data integrity failures.
+
+[mkp: clarified patch description]
+
+Fixes: 02b01e010afeeb49328d35650d70721d2ca3fd59
+Signed-off-by: Kashyap Desai <kashyap.desai@broadcom.com>
+Signed-off-by: Sumit Saxena <sumit.saxena@broadcom.com>
+Reviewed-by: Tomas Henzl <thenzl@redhat.com>
+Reviewed-by: Hannes Reinecke <hare@suse.com>
+Reviewed-by: Ewan D. Milne <emilne@redhat.com>
+Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/scsi/megaraid/megaraid_sas_base.c | 13 +++++--------
+ 1 file changed, 5 insertions(+), 8 deletions(-)
+
+--- a/drivers/scsi/megaraid/megaraid_sas_base.c
++++ b/drivers/scsi/megaraid/megaraid_sas_base.c
+@@ -1713,16 +1713,13 @@ megasas_queue_command(struct Scsi_Host *
+ goto out_done;
+ }
+
+- switch (scmd->cmnd[0]) {
+- case SYNCHRONIZE_CACHE:
+- /*
+- * FW takes care of flush cache on its own
+- * No need to send it down
+- */
++ /*
++ * FW takes care of flush cache on its own for Virtual Disk.
++ * No need to send it down for VD. For JBOD send SYNCHRONIZE_CACHE to FW.
++ */
++ if ((scmd->cmnd[0] == SYNCHRONIZE_CACHE) && MEGASAS_IS_LOGICAL(scmd)) {
+ scmd->result = DID_OK << 16;
+ goto out_done;
+- default:
+- break;
+ }
+
+ return instance->instancet->build_and_issue_cmd(instance, scmd);
--- /dev/null
+From 5e5ec1759dd663a1d5a2f10930224dd009e500e8 Mon Sep 17 00:00:00 2001
+From: Sumit Saxena <sumit.saxena@broadcom.com>
+Date: Wed, 9 Nov 2016 02:59:42 -0800
+Subject: scsi: megaraid_sas: fix macro MEGASAS_IS_LOGICAL to avoid regression
+
+From: Sumit Saxena <sumit.saxena@broadcom.com>
+
+commit 5e5ec1759dd663a1d5a2f10930224dd009e500e8 upstream.
+
+This patch will fix regression caused by commit 1e793f6fc0db ("scsi:
+megaraid_sas: Fix data integrity failure for JBOD (passthrough)
+devices").
+
+The problem was that the MEGASAS_IS_LOGICAL macro did not have braces
+and as a result the driver ended up exposing a lot of non-existing SCSI
+devices (all SCSI commands to channels 1,2,3 were returned as
+SUCCESS-DID_OK by driver).
+
+[mkp: clarified patch description]
+
+Fixes: 1e793f6fc0db920400574211c48f9157a37e3945
+Reported-by: Jens Axboe <axboe@kernel.dk>
+Signed-off-by: Kashyap Desai <kashyap.desai@broadcom.com>
+Signed-off-by: Sumit Saxena <sumit.saxena@broadcom.com>
+Tested-by: Sumit Saxena <sumit.saxena@broadcom.com>
+Reviewed-by: Tomas Henzl <thenzl@redhat.com>
+Tested-by: Jens Axboe <axboe@fb.com>
+Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/scsi/megaraid/megaraid_sas.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/scsi/megaraid/megaraid_sas.h
++++ b/drivers/scsi/megaraid/megaraid_sas.h
+@@ -2233,7 +2233,7 @@ struct megasas_instance_template {
+ };
+
+ #define MEGASAS_IS_LOGICAL(scp) \
+- (scp->device->channel < MEGASAS_MAX_PD_CHANNELS) ? 0 : 1
++ ((scp->device->channel < MEGASAS_MAX_PD_CHANNELS) ? 0 : 1)
+
+ #define MEGASAS_DEV_INDEX(scp) \
+ (((scp->device->channel % 2) * MEGASAS_MAX_DEV_PER_CHANNEL) + \
packet-on-direct_xmit-limit-tso-and-csum-to-supported-devices.patch
arch-powerpc-update-parameters-for-csum_tcpudp_magic-csum_tcpudp_nofold.patch
usb-dwc3-gadget-properly-account-queued-requests.patch
+scsi-megaraid_sas-fix-data-integrity-failure-for-jbod-passthrough-devices.patch
+scsi-megaraid_sas-fix-macro-megasas_is_logical-to-avoid-regression.patch