|
|
a8a466 |
From b004a9938ed1a8bb2007d0442512c6802c3a6bd1 Mon Sep 17 00:00:00 2001
|
|
|
a8a466 |
From: Sasikumar Chandrasekaran <sasikumar.pc@broadcom.com>
|
|
|
a8a466 |
Date: Tue, 10 Jan 2017 18:20:45 -0500
|
|
|
a8a466 |
Subject: [PATCH 03/11] scsi: megaraid_sas: EEDP Escape Mode Support for SAS3.5
|
|
|
a8a466 |
Generic Megaraid Controllers
|
|
|
a8a466 |
|
|
|
a8a466 |
An UNMAP command on a PI formatted device will leave the Logical Block Application
|
|
|
a8a466 |
Tag and Logical Block Reference Tag as all F's (for those LBAs that are unmapped).
|
|
|
a8a466 |
To avoid IO errors if those LBAs are subsequently read before they are written with
|
|
|
a8a466 |
valid tag fields, the MPI SCSI IO requests need to set the EEDPFlags element EEDP
|
|
|
a8a466 |
Escape Mode field, Bits [7:6] appropriately. A value of 2 should be set to disable
|
|
|
a8a466 |
all PI checks if the Logical Block Application Tag is 0xFFFF for PI types 1 and 2.
|
|
|
a8a466 |
A value of 3 should be set to disable all PI checks if the Logical Block Application
|
|
|
a8a466 |
Tag is 0xFFFF and the Logical Block Reference Tag is 0xFFFFFFFF for PI type 3.
|
|
|
a8a466 |
|
|
|
a8a466 |
Signed-off-by: Sasikumar Chandrasekaran <sasikumar.pc@broadcom.com>
|
|
|
a8a466 |
Reviewed-by: Tomas Henzl <thenzl@redhat.com>
|
|
|
a8a466 |
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
|
|
|
a8a466 |
---
|
|
|
a8a466 |
drivers/scsi/megaraid/megaraid_sas_fusion.c | 1 +
|
|
|
a8a466 |
drivers/scsi/megaraid/megaraid_sas_fusion.h | 2 ++
|
|
|
a8a466 |
2 files changed, 3 insertions(+)
|
|
|
a8a466 |
|
|
|
a8a466 |
diff --git a/drivers/scsi/megaraid/megaraid_sas_fusion.c b/drivers/scsi/megaraid/megaraid_sas_fusion.c
|
|
|
a8a466 |
index c64b85a..27c6a1f 100644
|
|
|
a8a466 |
--- a/drivers/scsi/megaraid/megaraid_sas_fusion.c
|
|
|
a8a466 |
+++ b/drivers/scsi/megaraid/megaraid_sas_fusion.c
|
|
|
a8a466 |
@@ -1589,6 +1589,7 @@ megasas_set_pd_lba(struct MPI2_RAID_SCSI_IO_REQUEST *io_request, u8 cdb_len,
|
|
|
a8a466 |
MPI2_SCSIIO_EEDPFLAGS_CHECK_REFTAG |
|
|
|
a8a466 |
MPI2_SCSIIO_EEDPFLAGS_CHECK_REMOVE_OP |
|
|
|
a8a466 |
MPI2_SCSIIO_EEDPFLAGS_CHECK_APPTAG |
|
|
|
a8a466 |
+ MPI25_SCSIIO_EEDPFLAGS_DO_NOT_DISABLE_MODE |
|
|
|
a8a466 |
MPI2_SCSIIO_EEDPFLAGS_CHECK_GUARD);
|
|
|
a8a466 |
} else {
|
|
|
a8a466 |
io_request->EEDPFlags = cpu_to_le16(
|
|
|
a8a466 |
diff --git a/drivers/scsi/megaraid/megaraid_sas_fusion.h b/drivers/scsi/megaraid/megaraid_sas_fusion.h
|
|
|
a8a466 |
index 80eaee2..3cd3d0a 100644
|
|
|
a8a466 |
--- a/drivers/scsi/megaraid/megaraid_sas_fusion.h
|
|
|
a8a466 |
+++ b/drivers/scsi/megaraid/megaraid_sas_fusion.h
|
|
|
a8a466 |
@@ -175,6 +175,8 @@ enum REGION_TYPE {
|
|
|
a8a466 |
#define MPI2_SCSIIO_EEDPFLAGS_CHECK_APPTAG (0x0200)
|
|
|
a8a466 |
#define MPI2_SCSIIO_EEDPFLAGS_CHECK_GUARD (0x0100)
|
|
|
a8a466 |
#define MPI2_SCSIIO_EEDPFLAGS_INSERT_OP (0x0004)
|
|
|
a8a466 |
+/* EEDP escape mode */
|
|
|
a8a466 |
+#define MPI25_SCSIIO_EEDPFLAGS_DO_NOT_DISABLE_MODE (0x0040)
|
|
|
a8a466 |
#define MPI2_FUNCTION_SCSI_IO_REQUEST (0x00) /* SCSI IO */
|
|
|
a8a466 |
#define MPI2_FUNCTION_SCSI_TASK_MGMT (0x01)
|
|
|
a8a466 |
#define MPI2_REQ_DESCRIPT_FLAGS_HIGH_PRIORITY (0x03)
|
|
|
a8a466 |
--
|
|
|
a8a466 |
1.8.3.1
|
|
|
a8a466 |
|