diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-10-02 22:01:32 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-10-02 22:01:32 -0400 |
commit | 3151367f8778a1789d6f6e6f6c642681b6cd6d64 (patch) | |
tree | 1869d5429a25abd994ae94079808b8db060ec6f3 /drivers/scsi/mpt2sas | |
parent | 16642a2e7be23bbda013fc32d8f6c68982eab603 (diff) | |
parent | fe709ed827d370e6b0c0a9f9456da1c22bdcd118 (diff) |
Merge tag 'scsi-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi
Pull first round of SCSI updates from James Bottomley:
"This is a large set of updates, mostly for drivers (qla2xxx [including
support for new 83xx based card], qla4xxx, mpt2sas, bfa, zfcp, hpsa,
be2iscsi, isci, lpfc, ipr, ibmvfc, ibmvscsi, megaraid_sas).
There's also a rework for tape adding virtually unlimited numbers of
tape drives plus a set of dif fixes for sd and a fix for a live lock
on hot remove of SCSI devices.
This round includes a signed tag pull of isci-for-3.6
Signed-off-by: James Bottomley <JBottomley@Parallels.com>"
Fix up trivial conflict in drivers/scsi/qla2xxx/qla_nx.c due to new PCI
helper function use in a function that was removed by this pull.
* tag 'scsi-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi: (198 commits)
[SCSI] st: remove st_mutex
[SCSI] sd: Ensure we correctly disable devices with unknown protection type
[SCSI] hpsa: gen8plus Smart Array IDs
[SCSI] qla4xxx: Update driver version to 5.03.00-k1
[SCSI] qla4xxx: Disable generating pause frames for ISP83XX
[SCSI] qla4xxx: Fix double clearing of risc_intr for ISP83XX
[SCSI] qla4xxx: IDC implementation for Loopback
[SCSI] qla4xxx: update copyrights in LICENSE.qla4xxx
[SCSI] qla4xxx: Fix panic while rmmod
[SCSI] qla4xxx: Fail probe_adapter if IRQ allocation fails
[SCSI] qla4xxx: Prevent MSI/MSI-X falling back to INTx for ISP82XX
[SCSI] qla4xxx: Update idc reg in case of PCI AER
[SCSI] qla4xxx: Fix double IDC locking in qla4_8xxx_error_recovery
[SCSI] qla4xxx: Clear interrupt while unloading driver for ISP83XX
[SCSI] qla4xxx: Print correct IDC version
[SCSI] qla4xxx: Added new mbox cmd to pass driver version to FW
[SCSI] scsi_dh_alua: Enable STPG for unavailable ports
[SCSI] scsi_remove_target: fix softlockup regression on hot remove
[SCSI] ibmvscsi: Fix host config length field overflow
[SCSI] ibmvscsi: Remove backend abstraction
...
Diffstat (limited to 'drivers/scsi/mpt2sas')
-rw-r--r-- | drivers/scsi/mpt2sas/Kconfig | 2 | ||||
-rw-r--r-- | drivers/scsi/mpt2sas/mpi/mpi2.h | 14 | ||||
-rw-r--r-- | drivers/scsi/mpt2sas/mpi/mpi2_init.h | 9 | ||||
-rw-r--r-- | drivers/scsi/mpt2sas/mpi/mpi2_ioc.h | 8 | ||||
-rw-r--r-- | drivers/scsi/mpt2sas/mpi/mpi2_raid.h | 7 | ||||
-rw-r--r-- | drivers/scsi/mpt2sas/mpt2sas_base.c | 6 | ||||
-rw-r--r-- | drivers/scsi/mpt2sas/mpt2sas_base.h | 14 | ||||
-rw-r--r-- | drivers/scsi/mpt2sas/mpt2sas_config.c | 38 | ||||
-rw-r--r-- | drivers/scsi/mpt2sas/mpt2sas_ctl.c | 80 | ||||
-rw-r--r-- | drivers/scsi/mpt2sas/mpt2sas_ctl.h | 2 | ||||
-rw-r--r-- | drivers/scsi/mpt2sas/mpt2sas_debug.h | 2 | ||||
-rw-r--r-- | drivers/scsi/mpt2sas/mpt2sas_scsih.c | 59 | ||||
-rw-r--r-- | drivers/scsi/mpt2sas/mpt2sas_transport.c | 2 |
13 files changed, 195 insertions, 48 deletions
diff --git a/drivers/scsi/mpt2sas/Kconfig b/drivers/scsi/mpt2sas/Kconfig index bbb7e4bf30a3..39f08dd20556 100644 --- a/drivers/scsi/mpt2sas/Kconfig +++ b/drivers/scsi/mpt2sas/Kconfig | |||
@@ -2,7 +2,7 @@ | |||
2 | # Kernel configuration file for the MPT2SAS | 2 | # Kernel configuration file for the MPT2SAS |
3 | # | 3 | # |
4 | # This code is based on drivers/scsi/mpt2sas/Kconfig | 4 | # This code is based on drivers/scsi/mpt2sas/Kconfig |
5 | # Copyright (C) 2007-2010 LSI Corporation | 5 | # Copyright (C) 2007-2012 LSI Corporation |
6 | # (mailto:DL-MPTFusionLinux@lsi.com) | 6 | # (mailto:DL-MPTFusionLinux@lsi.com) |
7 | 7 | ||
8 | # This program is free software; you can redistribute it and/or | 8 | # This program is free software; you can redistribute it and/or |
diff --git a/drivers/scsi/mpt2sas/mpi/mpi2.h b/drivers/scsi/mpt2sas/mpi/mpi2.h index a80f3220c641..e960f9625c78 100644 --- a/drivers/scsi/mpt2sas/mpi/mpi2.h +++ b/drivers/scsi/mpt2sas/mpi/mpi2.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (c) 2000-2011 LSI Corporation. | 2 | * Copyright (c) 2000-2012 LSI Corporation. |
3 | * | 3 | * |
4 | * | 4 | * |
5 | * Name: mpi2.h | 5 | * Name: mpi2.h |
@@ -8,7 +8,7 @@ | |||
8 | * scatter/gather formats. | 8 | * scatter/gather formats. |
9 | * Creation Date: June 21, 2006 | 9 | * Creation Date: June 21, 2006 |
10 | * | 10 | * |
11 | * mpi2.h Version: 02.00.23 | 11 | * mpi2.h Version: 02.00.25 |
12 | * | 12 | * |
13 | * Version History | 13 | * Version History |
14 | * --------------- | 14 | * --------------- |
@@ -72,6 +72,9 @@ | |||
72 | * 05-25-11 02.00.21 Bumped MPI2_HEADER_VERSION_UNIT. | 72 | * 05-25-11 02.00.21 Bumped MPI2_HEADER_VERSION_UNIT. |
73 | * 08-24-11 02.00.22 Bumped MPI2_HEADER_VERSION_UNIT. | 73 | * 08-24-11 02.00.22 Bumped MPI2_HEADER_VERSION_UNIT. |
74 | * 11-18-11 02.00.23 Bumped MPI2_HEADER_VERSION_UNIT. | 74 | * 11-18-11 02.00.23 Bumped MPI2_HEADER_VERSION_UNIT. |
75 | * 02-06-12 02.00.24 Bumped MPI2_HEADER_VERSION_UNIT. | ||
76 | * 03-29-12 02.00.25 Bumped MPI2_HEADER_VERSION_UNIT. | ||
77 | * Added Hard Reset delay timings. | ||
75 | * -------------------------------------------------------------------------- | 78 | * -------------------------------------------------------------------------- |
76 | */ | 79 | */ |
77 | 80 | ||
@@ -97,7 +100,7 @@ | |||
97 | #define MPI2_VERSION_02_00 (0x0200) | 100 | #define MPI2_VERSION_02_00 (0x0200) |
98 | 101 | ||
99 | /* versioning for this MPI header set */ | 102 | /* versioning for this MPI header set */ |
100 | #define MPI2_HEADER_VERSION_UNIT (0x17) | 103 | #define MPI2_HEADER_VERSION_UNIT (0x19) |
101 | #define MPI2_HEADER_VERSION_DEV (0x00) | 104 | #define MPI2_HEADER_VERSION_DEV (0x00) |
102 | #define MPI2_HEADER_VERSION_UNIT_MASK (0xFF00) | 105 | #define MPI2_HEADER_VERSION_UNIT_MASK (0xFF00) |
103 | #define MPI2_HEADER_VERSION_UNIT_SHIFT (8) | 106 | #define MPI2_HEADER_VERSION_UNIT_SHIFT (8) |
@@ -275,6 +278,11 @@ typedef volatile struct _MPI2_SYSTEM_INTERFACE_REGS | |||
275 | #define MPI2_REQUEST_DESCRIPTOR_POST_HIGH_OFFSET (0x000000C4) | 278 | #define MPI2_REQUEST_DESCRIPTOR_POST_HIGH_OFFSET (0x000000C4) |
276 | 279 | ||
277 | 280 | ||
281 | /* Hard Reset delay timings */ | ||
282 | #define MPI2_HARD_RESET_PCIE_FIRST_READ_DELAY_MICRO_SEC (50000) | ||
283 | #define MPI2_HARD_RESET_PCIE_RESET_READ_WINDOW_MICRO_SEC (255000) | ||
284 | #define MPI2_HARD_RESET_PCIE_SECOND_READ_DELAY_MICRO_SEC (256000) | ||
285 | |||
278 | /***************************************************************************** | 286 | /***************************************************************************** |
279 | * | 287 | * |
280 | * Message Descriptors | 288 | * Message Descriptors |
diff --git a/drivers/scsi/mpt2sas/mpi/mpi2_init.h b/drivers/scsi/mpt2sas/mpi/mpi2_init.h index de90162413c2..38c5da398143 100644 --- a/drivers/scsi/mpt2sas/mpi/mpi2_init.h +++ b/drivers/scsi/mpt2sas/mpi/mpi2_init.h | |||
@@ -1,12 +1,12 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (c) 2000-2010 LSI Corporation. | 2 | * Copyright (c) 2000-2012 LSI Corporation. |
3 | * | 3 | * |
4 | * | 4 | * |
5 | * Name: mpi2_init.h | 5 | * Name: mpi2_init.h |
6 | * Title: MPI SCSI initiator mode messages and structures | 6 | * Title: MPI SCSI initiator mode messages and structures |
7 | * Creation Date: June 23, 2006 | 7 | * Creation Date: June 23, 2006 |
8 | * | 8 | * |
9 | * mpi2_init.h Version: 02.00.11 | 9 | * mpi2_init.h Version: 02.00.13 |
10 | * | 10 | * |
11 | * Version History | 11 | * Version History |
12 | * --------------- | 12 | * --------------- |
@@ -34,6 +34,8 @@ | |||
34 | * 02-10-10 02.00.09 Removed unused structure that had "#if 0" around it. | 34 | * 02-10-10 02.00.09 Removed unused structure that had "#if 0" around it. |
35 | * 05-12-10 02.00.10 Added optional vendor-unique region to SCSI IO Request. | 35 | * 05-12-10 02.00.10 Added optional vendor-unique region to SCSI IO Request. |
36 | * 11-10-10 02.00.11 Added MPI2_SCSIIO_NUM_SGLOFFSETS define. | 36 | * 11-10-10 02.00.11 Added MPI2_SCSIIO_NUM_SGLOFFSETS define. |
37 | * 02-06-12 02.00.13 Added alternate defines for Task Priority / Command | ||
38 | * Priority to match SAM-4. | ||
37 | * -------------------------------------------------------------------------- | 39 | * -------------------------------------------------------------------------- |
38 | */ | 40 | */ |
39 | 41 | ||
@@ -194,6 +196,9 @@ typedef struct _MPI2_SCSI_IO_REQUEST | |||
194 | 196 | ||
195 | #define MPI2_SCSIIO_CONTROL_TASKPRI_MASK (0x00007800) | 197 | #define MPI2_SCSIIO_CONTROL_TASKPRI_MASK (0x00007800) |
196 | #define MPI2_SCSIIO_CONTROL_TASKPRI_SHIFT (11) | 198 | #define MPI2_SCSIIO_CONTROL_TASKPRI_SHIFT (11) |
199 | /* alternate name for the previous field; called Command Priority in SAM-4 */ | ||
200 | #define MPI2_SCSIIO_CONTROL_CMDPRI_MASK (0x00007800) | ||
201 | #define MPI2_SCSIIO_CONTROL_CMDPRI_SHIFT (11) | ||
197 | 202 | ||
198 | #define MPI2_SCSIIO_CONTROL_TASKATTRIBUTE_MASK (0x00000700) | 203 | #define MPI2_SCSIIO_CONTROL_TASKATTRIBUTE_MASK (0x00000700) |
199 | #define MPI2_SCSIIO_CONTROL_SIMPLEQ (0x00000000) | 204 | #define MPI2_SCSIIO_CONTROL_SIMPLEQ (0x00000000) |
diff --git a/drivers/scsi/mpt2sas/mpi/mpi2_ioc.h b/drivers/scsi/mpt2sas/mpi/mpi2_ioc.h index 9a925c07a9ec..b0d4760bb17d 100644 --- a/drivers/scsi/mpt2sas/mpi/mpi2_ioc.h +++ b/drivers/scsi/mpt2sas/mpi/mpi2_ioc.h | |||
@@ -1,12 +1,12 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (c) 2000-2011 LSI Corporation. | 2 | * Copyright (c) 2000-2012 LSI Corporation. |
3 | * | 3 | * |
4 | * | 4 | * |
5 | * Name: mpi2_ioc.h | 5 | * Name: mpi2_ioc.h |
6 | * Title: MPI IOC, Port, Event, FW Download, and FW Upload messages | 6 | * Title: MPI IOC, Port, Event, FW Download, and FW Upload messages |
7 | * Creation Date: October 11, 2006 | 7 | * Creation Date: October 11, 2006 |
8 | * | 8 | * |
9 | * mpi2_ioc.h Version: 02.00.19 | 9 | * mpi2_ioc.h Version: 02.00.21 |
10 | * | 10 | * |
11 | * Version History | 11 | * Version History |
12 | * --------------- | 12 | * --------------- |
@@ -117,6 +117,7 @@ | |||
117 | * 08-24-11 02.00.19 Added PhysicalPort field to | 117 | * 08-24-11 02.00.19 Added PhysicalPort field to |
118 | * MPI2_EVENT_DATA_SAS_DEVICE_STATUS_CHANGE structure. | 118 | * MPI2_EVENT_DATA_SAS_DEVICE_STATUS_CHANGE structure. |
119 | * Marked MPI2_PM_CONTROL_FEATURE_PCIE_LINK as obsolete. | 119 | * Marked MPI2_PM_CONTROL_FEATURE_PCIE_LINK as obsolete. |
120 | * 03-29-12 02.00.21 Added a product specific range to event values. | ||
120 | * -------------------------------------------------------------------------- | 121 | * -------------------------------------------------------------------------- |
121 | */ | 122 | */ |
122 | 123 | ||
@@ -492,7 +493,8 @@ typedef struct _MPI2_EVENT_NOTIFICATION_REPLY | |||
492 | #define MPI2_EVENT_SAS_NOTIFY_PRIMITIVE (0x0026) | 493 | #define MPI2_EVENT_SAS_NOTIFY_PRIMITIVE (0x0026) |
493 | #define MPI2_EVENT_TEMP_THRESHOLD (0x0027) | 494 | #define MPI2_EVENT_TEMP_THRESHOLD (0x0027) |
494 | #define MPI2_EVENT_HOST_MESSAGE (0x0028) | 495 | #define MPI2_EVENT_HOST_MESSAGE (0x0028) |
495 | 496 | #define MPI2_EVENT_MIN_PRODUCT_SPECIFIC (0x006E) | |
497 | #define MPI2_EVENT_MAX_PRODUCT_SPECIFIC (0x007F) | ||
496 | 498 | ||
497 | /* Log Entry Added Event data */ | 499 | /* Log Entry Added Event data */ |
498 | 500 | ||
diff --git a/drivers/scsi/mpt2sas/mpi/mpi2_raid.h b/drivers/scsi/mpt2sas/mpi/mpi2_raid.h index 0601612b875a..2b38af213beb 100644 --- a/drivers/scsi/mpt2sas/mpi/mpi2_raid.h +++ b/drivers/scsi/mpt2sas/mpi/mpi2_raid.h | |||
@@ -1,12 +1,12 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (c) 2000-2010 LSI Corporation. | 2 | * Copyright (c) 2000-2012 LSI Corporation. |
3 | * | 3 | * |
4 | * | 4 | * |
5 | * Name: mpi2_raid.h | 5 | * Name: mpi2_raid.h |
6 | * Title: MPI Integrated RAID messages and structures | 6 | * Title: MPI Integrated RAID messages and structures |
7 | * Creation Date: April 26, 2007 | 7 | * Creation Date: April 26, 2007 |
8 | * | 8 | * |
9 | * mpi2_raid.h Version: 02.00.06 | 9 | * mpi2_raid.h Version: 02.00.08 |
10 | * | 10 | * |
11 | * Version History | 11 | * Version History |
12 | * --------------- | 12 | * --------------- |
@@ -26,7 +26,7 @@ | |||
26 | * 08-24-10 02.00.06 Added MPI2_RAID_ACTION_COMPATIBILITY_CHECK along with | 26 | * 08-24-10 02.00.06 Added MPI2_RAID_ACTION_COMPATIBILITY_CHECK along with |
27 | * related structures and defines. | 27 | * related structures and defines. |
28 | * Added product-specific range to RAID Action values. | 28 | * Added product-specific range to RAID Action values. |
29 | 29 | * 02-06-12 02.00.08 Added MPI2_RAID_ACTION_PHYSDISK_HIDDEN. | |
30 | * -------------------------------------------------------------------------- | 30 | * -------------------------------------------------------------------------- |
31 | */ | 31 | */ |
32 | 32 | ||
@@ -181,6 +181,7 @@ typedef struct _MPI2_RAID_ACTION_REQUEST | |||
181 | #define MPI2_RAID_ACTION_START_RAID_FUNCTION (0x21) | 181 | #define MPI2_RAID_ACTION_START_RAID_FUNCTION (0x21) |
182 | #define MPI2_RAID_ACTION_STOP_RAID_FUNCTION (0x22) | 182 | #define MPI2_RAID_ACTION_STOP_RAID_FUNCTION (0x22) |
183 | #define MPI2_RAID_ACTION_COMPATIBILITY_CHECK (0x23) | 183 | #define MPI2_RAID_ACTION_COMPATIBILITY_CHECK (0x23) |
184 | #define MPI2_RAID_ACTION_PHYSDISK_HIDDEN (0x24) | ||
184 | #define MPI2_RAID_ACTION_MIN_PRODUCT_SPECIFIC (0x80) | 185 | #define MPI2_RAID_ACTION_MIN_PRODUCT_SPECIFIC (0x80) |
185 | #define MPI2_RAID_ACTION_MAX_PRODUCT_SPECIFIC (0xFF) | 186 | #define MPI2_RAID_ACTION_MAX_PRODUCT_SPECIFIC (0xFF) |
186 | 187 | ||
diff --git a/drivers/scsi/mpt2sas/mpt2sas_base.c b/drivers/scsi/mpt2sas/mpt2sas_base.c index 9d5a56c4b332..ffd85c511c8e 100644 --- a/drivers/scsi/mpt2sas/mpt2sas_base.c +++ b/drivers/scsi/mpt2sas/mpt2sas_base.c | |||
@@ -3,7 +3,7 @@ | |||
3 | * for access to MPT (Message Passing Technology) firmware. | 3 | * for access to MPT (Message Passing Technology) firmware. |
4 | * | 4 | * |
5 | * This code is based on drivers/scsi/mpt2sas/mpt2_base.c | 5 | * This code is based on drivers/scsi/mpt2sas/mpt2_base.c |
6 | * Copyright (C) 2007-2010 LSI Corporation | 6 | * Copyright (C) 2007-2012 LSI Corporation |
7 | * (mailto:DL-MPTFusionLinux@lsi.com) | 7 | * (mailto:DL-MPTFusionLinux@lsi.com) |
8 | * | 8 | * |
9 | * This program is free software; you can redistribute it and/or | 9 | * This program is free software; you can redistribute it and/or |
@@ -1978,9 +1978,9 @@ _base_display_intel_branding(struct MPT2SAS_ADAPTER *ioc) | |||
1978 | printk(MPT2SAS_INFO_FMT "%s\n", ioc->name, | 1978 | printk(MPT2SAS_INFO_FMT "%s\n", ioc->name, |
1979 | MPT2SAS_INTEL_RMS2LL040_BRANDING); | 1979 | MPT2SAS_INTEL_RMS2LL040_BRANDING); |
1980 | break; | 1980 | break; |
1981 | case MPT2SAS_INTEL_RAMSDALE_SSDID: | 1981 | case MPT2SAS_INTEL_SSD910_SSDID: |
1982 | printk(MPT2SAS_INFO_FMT "%s\n", ioc->name, | 1982 | printk(MPT2SAS_INFO_FMT "%s\n", ioc->name, |
1983 | MPT2SAS_INTEL_RAMSDALE_BRANDING); | 1983 | MPT2SAS_INTEL_SSD910_BRANDING); |
1984 | break; | 1984 | break; |
1985 | default: | 1985 | default: |
1986 | break; | 1986 | break; |
diff --git a/drivers/scsi/mpt2sas/mpt2sas_base.h b/drivers/scsi/mpt2sas/mpt2sas_base.h index b3a1a30055d6..543d8d637479 100644 --- a/drivers/scsi/mpt2sas/mpt2sas_base.h +++ b/drivers/scsi/mpt2sas/mpt2sas_base.h | |||
@@ -3,7 +3,7 @@ | |||
3 | * for access to MPT (Message Passing Technology) firmware. | 3 | * for access to MPT (Message Passing Technology) firmware. |
4 | * | 4 | * |
5 | * This code is based on drivers/scsi/mpt2sas/mpt2_base.h | 5 | * This code is based on drivers/scsi/mpt2sas/mpt2_base.h |
6 | * Copyright (C) 2007-2010 LSI Corporation | 6 | * Copyright (C) 2007-2012 LSI Corporation |
7 | * (mailto:DL-MPTFusionLinux@lsi.com) | 7 | * (mailto:DL-MPTFusionLinux@lsi.com) |
8 | * | 8 | * |
9 | * This program is free software; you can redistribute it and/or | 9 | * This program is free software; you can redistribute it and/or |
@@ -69,8 +69,8 @@ | |||
69 | #define MPT2SAS_DRIVER_NAME "mpt2sas" | 69 | #define MPT2SAS_DRIVER_NAME "mpt2sas" |
70 | #define MPT2SAS_AUTHOR "LSI Corporation <DL-MPTFusionLinux@lsi.com>" | 70 | #define MPT2SAS_AUTHOR "LSI Corporation <DL-MPTFusionLinux@lsi.com>" |
71 | #define MPT2SAS_DESCRIPTION "LSI MPT Fusion SAS 2.0 Device Driver" | 71 | #define MPT2SAS_DESCRIPTION "LSI MPT Fusion SAS 2.0 Device Driver" |
72 | #define MPT2SAS_DRIVER_VERSION "13.100.00.00" | 72 | #define MPT2SAS_DRIVER_VERSION "14.100.00.00" |
73 | #define MPT2SAS_MAJOR_VERSION 13 | 73 | #define MPT2SAS_MAJOR_VERSION 14 |
74 | #define MPT2SAS_MINOR_VERSION 100 | 74 | #define MPT2SAS_MINOR_VERSION 100 |
75 | #define MPT2SAS_BUILD_VERSION 00 | 75 | #define MPT2SAS_BUILD_VERSION 00 |
76 | #define MPT2SAS_RELEASE_VERSION 00 | 76 | #define MPT2SAS_RELEASE_VERSION 00 |
@@ -171,8 +171,8 @@ | |||
171 | "Intel Integrated RAID Module RMS2LL040" | 171 | "Intel Integrated RAID Module RMS2LL040" |
172 | #define MPT2SAS_INTEL_RS25GB008_BRANDING \ | 172 | #define MPT2SAS_INTEL_RS25GB008_BRANDING \ |
173 | "Intel(R) RAID Controller RS25GB008" | 173 | "Intel(R) RAID Controller RS25GB008" |
174 | #define MPT2SAS_INTEL_RAMSDALE_BRANDING \ | 174 | #define MPT2SAS_INTEL_SSD910_BRANDING \ |
175 | "Intel 720 Series SSD" | 175 | "Intel(R) SSD 910 Series" |
176 | /* | 176 | /* |
177 | * Intel HBA SSDIDs | 177 | * Intel HBA SSDIDs |
178 | */ | 178 | */ |
@@ -183,7 +183,7 @@ | |||
183 | #define MPT2SAS_INTEL_RMS2LL080_SSDID 0x350E | 183 | #define MPT2SAS_INTEL_RMS2LL080_SSDID 0x350E |
184 | #define MPT2SAS_INTEL_RMS2LL040_SSDID 0x350F | 184 | #define MPT2SAS_INTEL_RMS2LL040_SSDID 0x350F |
185 | #define MPT2SAS_INTEL_RS25GB008_SSDID 0x3000 | 185 | #define MPT2SAS_INTEL_RS25GB008_SSDID 0x3000 |
186 | #define MPT2SAS_INTEL_RAMSDALE_SSDID 0x3700 | 186 | #define MPT2SAS_INTEL_SSD910_SSDID 0x3700 |
187 | 187 | ||
188 | /* | 188 | /* |
189 | * HP HBA branding | 189 | * HP HBA branding |
@@ -1096,6 +1096,8 @@ int mpt2sas_config_get_iounit_pg1(struct MPT2SAS_ADAPTER *ioc, Mpi2ConfigReply_t | |||
1096 | *mpi_reply, Mpi2IOUnitPage1_t *config_page); | 1096 | *mpi_reply, Mpi2IOUnitPage1_t *config_page); |
1097 | int mpt2sas_config_set_iounit_pg1(struct MPT2SAS_ADAPTER *ioc, Mpi2ConfigReply_t | 1097 | int mpt2sas_config_set_iounit_pg1(struct MPT2SAS_ADAPTER *ioc, Mpi2ConfigReply_t |
1098 | *mpi_reply, Mpi2IOUnitPage1_t *config_page); | 1098 | *mpi_reply, Mpi2IOUnitPage1_t *config_page); |
1099 | int mpt2sas_config_get_iounit_pg3(struct MPT2SAS_ADAPTER *ioc, | ||
1100 | Mpi2ConfigReply_t *mpi_reply, Mpi2IOUnitPage3_t *config_page, u16 sz); | ||
1099 | int mpt2sas_config_get_sas_iounit_pg1(struct MPT2SAS_ADAPTER *ioc, Mpi2ConfigReply_t | 1101 | int mpt2sas_config_get_sas_iounit_pg1(struct MPT2SAS_ADAPTER *ioc, Mpi2ConfigReply_t |
1100 | *mpi_reply, Mpi2SasIOUnitPage1_t *config_page, u16 sz); | 1102 | *mpi_reply, Mpi2SasIOUnitPage1_t *config_page, u16 sz); |
1101 | int mpt2sas_config_set_sas_iounit_pg1(struct MPT2SAS_ADAPTER *ioc, | 1103 | int mpt2sas_config_set_sas_iounit_pg1(struct MPT2SAS_ADAPTER *ioc, |
diff --git a/drivers/scsi/mpt2sas/mpt2sas_config.c b/drivers/scsi/mpt2sas/mpt2sas_config.c index 2b4d37613d32..863778071a9d 100644 --- a/drivers/scsi/mpt2sas/mpt2sas_config.c +++ b/drivers/scsi/mpt2sas/mpt2sas_config.c | |||
@@ -2,7 +2,7 @@ | |||
2 | * This module provides common API for accessing firmware configuration pages | 2 | * This module provides common API for accessing firmware configuration pages |
3 | * | 3 | * |
4 | * This code is based on drivers/scsi/mpt2sas/mpt2_base.c | 4 | * This code is based on drivers/scsi/mpt2sas/mpt2_base.c |
5 | * Copyright (C) 2007-2010 LSI Corporation | 5 | * Copyright (C) 2007-2012 LSI Corporation |
6 | * (mailto:DL-MPTFusionLinux@lsi.com) | 6 | * (mailto:DL-MPTFusionLinux@lsi.com) |
7 | * | 7 | * |
8 | * This program is free software; you can redistribute it and/or | 8 | * This program is free software; you can redistribute it and/or |
@@ -683,6 +683,42 @@ mpt2sas_config_set_iounit_pg1(struct MPT2SAS_ADAPTER *ioc, | |||
683 | } | 683 | } |
684 | 684 | ||
685 | /** | 685 | /** |
686 | * mpt2sas_config_get_iounit_pg3 - obtain iounit page 3 | ||
687 | * @ioc: per adapter object | ||
688 | * @mpi_reply: reply mf payload returned from firmware | ||
689 | * @config_page: contents of the config page | ||
690 | * @sz: size of buffer passed in config_page | ||
691 | * Context: sleep. | ||
692 | * | ||
693 | * Returns 0 for success, non-zero for failure. | ||
694 | */ | ||
695 | int | ||
696 | mpt2sas_config_get_iounit_pg3(struct MPT2SAS_ADAPTER *ioc, | ||
697 | Mpi2ConfigReply_t *mpi_reply, Mpi2IOUnitPage3_t *config_page, u16 sz) | ||
698 | { | ||
699 | Mpi2ConfigRequest_t mpi_request; | ||
700 | int r; | ||
701 | |||
702 | memset(&mpi_request, 0, sizeof(Mpi2ConfigRequest_t)); | ||
703 | mpi_request.Function = MPI2_FUNCTION_CONFIG; | ||
704 | mpi_request.Action = MPI2_CONFIG_ACTION_PAGE_HEADER; | ||
705 | mpi_request.Header.PageType = MPI2_CONFIG_PAGETYPE_IO_UNIT; | ||
706 | mpi_request.Header.PageNumber = 3; | ||
707 | mpi_request.Header.PageVersion = MPI2_IOUNITPAGE3_PAGEVERSION; | ||
708 | mpt2sas_base_build_zero_len_sge(ioc, &mpi_request.PageBufferSGE); | ||
709 | r = _config_request(ioc, &mpi_request, mpi_reply, | ||
710 | MPT2_CONFIG_PAGE_DEFAULT_TIMEOUT, NULL, 0); | ||
711 | if (r) | ||
712 | goto out; | ||
713 | |||
714 | mpi_request.Action = MPI2_CONFIG_ACTION_PAGE_READ_CURRENT; | ||
715 | r = _config_request(ioc, &mpi_request, mpi_reply, | ||
716 | MPT2_CONFIG_PAGE_DEFAULT_TIMEOUT, config_page, sz); | ||
717 | out: | ||
718 | return r; | ||
719 | } | ||
720 | |||
721 | /** | ||
686 | * mpt2sas_config_get_ioc_pg8 - obtain ioc page 8 | 722 | * mpt2sas_config_get_ioc_pg8 - obtain ioc page 8 |
687 | * @ioc: per adapter object | 723 | * @ioc: per adapter object |
688 | * @mpi_reply: reply mf payload returned from firmware | 724 | * @mpi_reply: reply mf payload returned from firmware |
diff --git a/drivers/scsi/mpt2sas/mpt2sas_ctl.c b/drivers/scsi/mpt2sas/mpt2sas_ctl.c index 49bdd2dc8452..08685c4cf231 100644 --- a/drivers/scsi/mpt2sas/mpt2sas_ctl.c +++ b/drivers/scsi/mpt2sas/mpt2sas_ctl.c | |||
@@ -3,7 +3,7 @@ | |||
3 | * controllers | 3 | * controllers |
4 | * | 4 | * |
5 | * This code is based on drivers/scsi/mpt2sas/mpt2_ctl.c | 5 | * This code is based on drivers/scsi/mpt2sas/mpt2_ctl.c |
6 | * Copyright (C) 2007-2010 LSI Corporation | 6 | * Copyright (C) 2007-2012 LSI Corporation |
7 | * (mailto:DL-MPTFusionLinux@lsi.com) | 7 | * (mailto:DL-MPTFusionLinux@lsi.com) |
8 | * | 8 | * |
9 | * This program is free software; you can redistribute it and/or | 9 | * This program is free software; you can redistribute it and/or |
@@ -2181,10 +2181,12 @@ _ctl_ioctl_main(struct file *file, unsigned int cmd, void __user *arg, | |||
2181 | return -EAGAIN; | 2181 | return -EAGAIN; |
2182 | 2182 | ||
2183 | state = (file->f_flags & O_NONBLOCK) ? NON_BLOCKING : BLOCKING; | 2183 | state = (file->f_flags & O_NONBLOCK) ? NON_BLOCKING : BLOCKING; |
2184 | if (state == NON_BLOCKING && !mutex_trylock(&ioc->ctl_cmds.mutex)) | 2184 | if (state == NON_BLOCKING) { |
2185 | return -EAGAIN; | 2185 | if (!mutex_trylock(&ioc->ctl_cmds.mutex)) |
2186 | else if (mutex_lock_interruptible(&ioc->ctl_cmds.mutex)) | 2186 | return -EAGAIN; |
2187 | } else if (mutex_lock_interruptible(&ioc->ctl_cmds.mutex)) { | ||
2187 | return -ERESTARTSYS; | 2188 | return -ERESTARTSYS; |
2189 | } | ||
2188 | 2190 | ||
2189 | switch (cmd) { | 2191 | switch (cmd) { |
2190 | case MPT2IOCINFO: | 2192 | case MPT2IOCINFO: |
@@ -2690,6 +2692,75 @@ _ctl_ioc_reply_queue_count_show(struct device *cdev, | |||
2690 | static DEVICE_ATTR(reply_queue_count, S_IRUGO, | 2692 | static DEVICE_ATTR(reply_queue_count, S_IRUGO, |
2691 | _ctl_ioc_reply_queue_count_show, NULL); | 2693 | _ctl_ioc_reply_queue_count_show, NULL); |
2692 | 2694 | ||
2695 | /** | ||
2696 | * _ctl_BRM_status_show - Backup Rail Monitor Status | ||
2697 | * @cdev - pointer to embedded class device | ||
2698 | * @buf - the buffer returned | ||
2699 | * | ||
2700 | * This is number of reply queues | ||
2701 | * | ||
2702 | * A sysfs 'read-only' shost attribute. | ||
2703 | */ | ||
2704 | static ssize_t | ||
2705 | _ctl_BRM_status_show(struct device *cdev, struct device_attribute *attr, | ||
2706 | char *buf) | ||
2707 | { | ||
2708 | struct Scsi_Host *shost = class_to_shost(cdev); | ||
2709 | struct MPT2SAS_ADAPTER *ioc = shost_priv(shost); | ||
2710 | Mpi2IOUnitPage3_t *io_unit_pg3 = NULL; | ||
2711 | Mpi2ConfigReply_t mpi_reply; | ||
2712 | u16 backup_rail_monitor_status = 0; | ||
2713 | u16 ioc_status; | ||
2714 | int sz; | ||
2715 | ssize_t rc = 0; | ||
2716 | |||
2717 | if (!ioc->is_warpdrive) { | ||
2718 | printk(MPT2SAS_ERR_FMT "%s: BRM attribute is only for"\ | ||
2719 | "warpdrive\n", ioc->name, __func__); | ||
2720 | goto out; | ||
2721 | } | ||
2722 | |||
2723 | /* allocate upto GPIOVal 36 entries */ | ||
2724 | sz = offsetof(Mpi2IOUnitPage3_t, GPIOVal) + (sizeof(u16) * 36); | ||
2725 | io_unit_pg3 = kzalloc(sz, GFP_KERNEL); | ||
2726 | if (!io_unit_pg3) { | ||
2727 | printk(MPT2SAS_ERR_FMT "%s: failed allocating memory"\ | ||
2728 | "for iounit_pg3: (%d) bytes\n", ioc->name, __func__, sz); | ||
2729 | goto out; | ||
2730 | } | ||
2731 | |||
2732 | if (mpt2sas_config_get_iounit_pg3(ioc, &mpi_reply, io_unit_pg3, sz) != | ||
2733 | 0) { | ||
2734 | printk(MPT2SAS_ERR_FMT | ||
2735 | "%s: failed reading iounit_pg3\n", ioc->name, | ||
2736 | __func__); | ||
2737 | goto out; | ||
2738 | } | ||
2739 | |||
2740 | ioc_status = le16_to_cpu(mpi_reply.IOCStatus) & MPI2_IOCSTATUS_MASK; | ||
2741 | if (ioc_status != MPI2_IOCSTATUS_SUCCESS) { | ||
2742 | printk(MPT2SAS_ERR_FMT "%s: iounit_pg3 failed with"\ | ||
2743 | "ioc_status(0x%04x)\n", ioc->name, __func__, ioc_status); | ||
2744 | goto out; | ||
2745 | } | ||
2746 | |||
2747 | if (io_unit_pg3->GPIOCount < 25) { | ||
2748 | printk(MPT2SAS_ERR_FMT "%s: iounit_pg3->GPIOCount less than"\ | ||
2749 | "25 entries, detected (%d) entries\n", ioc->name, __func__, | ||
2750 | io_unit_pg3->GPIOCount); | ||
2751 | goto out; | ||
2752 | } | ||
2753 | |||
2754 | /* BRM status is in bit zero of GPIOVal[24] */ | ||
2755 | backup_rail_monitor_status = le16_to_cpu(io_unit_pg3->GPIOVal[24]); | ||
2756 | rc = snprintf(buf, PAGE_SIZE, "%d\n", (backup_rail_monitor_status & 1)); | ||
2757 | |||
2758 | out: | ||
2759 | kfree(io_unit_pg3); | ||
2760 | return rc; | ||
2761 | } | ||
2762 | static DEVICE_ATTR(BRM_status, S_IRUGO, _ctl_BRM_status_show, NULL); | ||
2763 | |||
2693 | struct DIAG_BUFFER_START { | 2764 | struct DIAG_BUFFER_START { |
2694 | __le32 Size; | 2765 | __le32 Size; |
2695 | __le32 DiagVersion; | 2766 | __le32 DiagVersion; |
@@ -2901,6 +2972,7 @@ struct device_attribute *mpt2sas_host_attrs[] = { | |||
2901 | &dev_attr_host_trace_buffer, | 2972 | &dev_attr_host_trace_buffer, |
2902 | &dev_attr_host_trace_buffer_enable, | 2973 | &dev_attr_host_trace_buffer_enable, |
2903 | &dev_attr_reply_queue_count, | 2974 | &dev_attr_reply_queue_count, |
2975 | &dev_attr_BRM_status, | ||
2904 | NULL, | 2976 | NULL, |
2905 | }; | 2977 | }; |
2906 | 2978 | ||
diff --git a/drivers/scsi/mpt2sas/mpt2sas_ctl.h b/drivers/scsi/mpt2sas/mpt2sas_ctl.h index 11ff1d5fb8f0..b5eb0d1b8ea6 100644 --- a/drivers/scsi/mpt2sas/mpt2sas_ctl.h +++ b/drivers/scsi/mpt2sas/mpt2sas_ctl.h | |||
@@ -3,7 +3,7 @@ | |||
3 | * controllers | 3 | * controllers |
4 | * | 4 | * |
5 | * This code is based on drivers/scsi/mpt2sas/mpt2_ctl.h | 5 | * This code is based on drivers/scsi/mpt2sas/mpt2_ctl.h |
6 | * Copyright (C) 2007-2010 LSI Corporation | 6 | * Copyright (C) 2007-2012 LSI Corporation |
7 | * (mailto:DL-MPTFusionLinux@lsi.com) | 7 | * (mailto:DL-MPTFusionLinux@lsi.com) |
8 | * | 8 | * |
9 | * This program is free software; you can redistribute it and/or | 9 | * This program is free software; you can redistribute it and/or |
diff --git a/drivers/scsi/mpt2sas/mpt2sas_debug.h b/drivers/scsi/mpt2sas/mpt2sas_debug.h index 9731f8e661bf..69cc7d0c112c 100644 --- a/drivers/scsi/mpt2sas/mpt2sas_debug.h +++ b/drivers/scsi/mpt2sas/mpt2sas_debug.h | |||
@@ -2,7 +2,7 @@ | |||
2 | * Logging Support for MPT (Message Passing Technology) based controllers | 2 | * Logging Support for MPT (Message Passing Technology) based controllers |
3 | * | 3 | * |
4 | * This code is based on drivers/scsi/mpt2sas/mpt2_debug.c | 4 | * This code is based on drivers/scsi/mpt2sas/mpt2_debug.c |
5 | * Copyright (C) 2007-2010 LSI Corporation | 5 | * Copyright (C) 2007-2012 LSI Corporation |
6 | * (mailto:DL-MPTFusionLinux@lsi.com) | 6 | * (mailto:DL-MPTFusionLinux@lsi.com) |
7 | * | 7 | * |
8 | * This program is free software; you can redistribute it and/or | 8 | * This program is free software; you can redistribute it and/or |
diff --git a/drivers/scsi/mpt2sas/mpt2sas_scsih.c b/drivers/scsi/mpt2sas/mpt2sas_scsih.c index 1ccae45c5270..af4e6c451b1b 100644 --- a/drivers/scsi/mpt2sas/mpt2sas_scsih.c +++ b/drivers/scsi/mpt2sas/mpt2sas_scsih.c | |||
@@ -2,7 +2,7 @@ | |||
2 | * Scsi Host Layer for MPT (Message Passing Technology) based controllers | 2 | * Scsi Host Layer for MPT (Message Passing Technology) based controllers |
3 | * | 3 | * |
4 | * This code is based on drivers/scsi/mpt2sas/mpt2_scsih.c | 4 | * This code is based on drivers/scsi/mpt2sas/mpt2_scsih.c |
5 | * Copyright (C) 2007-2010 LSI Corporation | 5 | * Copyright (C) 2007-2012 LSI Corporation |
6 | * (mailto:DL-MPTFusionLinux@lsi.com) | 6 | * (mailto:DL-MPTFusionLinux@lsi.com) |
7 | * | 7 | * |
8 | * This program is free software; you can redistribute it and/or | 8 | * This program is free software; you can redistribute it and/or |
@@ -119,6 +119,15 @@ module_param(diag_buffer_enable, int, 0); | |||
119 | MODULE_PARM_DESC(diag_buffer_enable, " post diag buffers " | 119 | MODULE_PARM_DESC(diag_buffer_enable, " post diag buffers " |
120 | "(TRACE=1/SNAPSHOT=2/EXTENDED=4/default=0)"); | 120 | "(TRACE=1/SNAPSHOT=2/EXTENDED=4/default=0)"); |
121 | 121 | ||
122 | static int disable_discovery = -1; | ||
123 | module_param(disable_discovery, int, 0); | ||
124 | MODULE_PARM_DESC(disable_discovery, " disable discovery "); | ||
125 | |||
126 | /* permit overriding the host protection capabilities mask (EEDP/T10 PI) */ | ||
127 | static int prot_mask = 0; | ||
128 | module_param(prot_mask, int, 0); | ||
129 | MODULE_PARM_DESC(prot_mask, " host protection capabilities mask, def=7 "); | ||
130 | |||
122 | /** | 131 | /** |
123 | * struct sense_info - common structure for obtaining sense keys | 132 | * struct sense_info - common structure for obtaining sense keys |
124 | * @skey: sense key | 133 | * @skey: sense key |
@@ -3768,8 +3777,6 @@ static void | |||
3768 | _scsih_eedp_error_handling(struct scsi_cmnd *scmd, u16 ioc_status) | 3777 | _scsih_eedp_error_handling(struct scsi_cmnd *scmd, u16 ioc_status) |
3769 | { | 3778 | { |
3770 | u8 ascq; | 3779 | u8 ascq; |
3771 | u8 sk; | ||
3772 | u8 host_byte; | ||
3773 | 3780 | ||
3774 | switch (ioc_status) { | 3781 | switch (ioc_status) { |
3775 | case MPI2_IOCSTATUS_EEDP_GUARD_ERROR: | 3782 | case MPI2_IOCSTATUS_EEDP_GUARD_ERROR: |
@@ -3786,16 +3793,8 @@ _scsih_eedp_error_handling(struct scsi_cmnd *scmd, u16 ioc_status) | |||
3786 | break; | 3793 | break; |
3787 | } | 3794 | } |
3788 | 3795 | ||
3789 | if (scmd->sc_data_direction == DMA_TO_DEVICE) { | 3796 | scsi_build_sense_buffer(0, scmd->sense_buffer, ILLEGAL_REQUEST, 0x10, ascq); |
3790 | sk = ILLEGAL_REQUEST; | 3797 | scmd->result = DRIVER_SENSE << 24 | (DID_ABORT << 16) | |
3791 | host_byte = DID_ABORT; | ||
3792 | } else { | ||
3793 | sk = ABORTED_COMMAND; | ||
3794 | host_byte = DID_OK; | ||
3795 | } | ||
3796 | |||
3797 | scsi_build_sense_buffer(0, scmd->sense_buffer, sk, 0x10, ascq); | ||
3798 | scmd->result = DRIVER_SENSE << 24 | (host_byte << 16) | | ||
3799 | SAM_STAT_CHECK_CONDITION; | 3798 | SAM_STAT_CHECK_CONDITION; |
3800 | } | 3799 | } |
3801 | 3800 | ||
@@ -5973,8 +5972,14 @@ _scsih_sas_discovery_event(struct MPT2SAS_ADAPTER *ioc, | |||
5973 | #endif | 5972 | #endif |
5974 | 5973 | ||
5975 | if (event_data->ReasonCode == MPI2_EVENT_SAS_DISC_RC_STARTED && | 5974 | if (event_data->ReasonCode == MPI2_EVENT_SAS_DISC_RC_STARTED && |
5976 | !ioc->sas_hba.num_phys) | 5975 | !ioc->sas_hba.num_phys) { |
5976 | if (disable_discovery > 0 && ioc->shost_recovery) { | ||
5977 | /* Wait for the reset to complete */ | ||
5978 | while (ioc->shost_recovery) | ||
5979 | ssleep(1); | ||
5980 | } | ||
5977 | _scsih_sas_host_add(ioc); | 5981 | _scsih_sas_host_add(ioc); |
5982 | } | ||
5978 | } | 5983 | } |
5979 | 5984 | ||
5980 | /** | 5985 | /** |
@@ -7254,7 +7259,8 @@ mpt2sas_scsih_reset_handler(struct MPT2SAS_ADAPTER *ioc, int reset_phase) | |||
7254 | _scsih_search_responding_sas_devices(ioc); | 7259 | _scsih_search_responding_sas_devices(ioc); |
7255 | _scsih_search_responding_raid_devices(ioc); | 7260 | _scsih_search_responding_raid_devices(ioc); |
7256 | _scsih_search_responding_expanders(ioc); | 7261 | _scsih_search_responding_expanders(ioc); |
7257 | if (!ioc->is_driver_loading) { | 7262 | if ((!ioc->is_driver_loading) && !(disable_discovery > 0 && |
7263 | !ioc->sas_hba.num_phys)) { | ||
7258 | _scsih_prep_device_scan(ioc); | 7264 | _scsih_prep_device_scan(ioc); |
7259 | _scsih_search_responding_sas_devices(ioc); | 7265 | _scsih_search_responding_sas_devices(ioc); |
7260 | _scsih_search_responding_raid_devices(ioc); | 7266 | _scsih_search_responding_raid_devices(ioc); |
@@ -7929,6 +7935,9 @@ _scsih_scan_start(struct Scsi_Host *shost) | |||
7929 | if (diag_buffer_enable != -1 && diag_buffer_enable != 0) | 7935 | if (diag_buffer_enable != -1 && diag_buffer_enable != 0) |
7930 | mpt2sas_enable_diag_buffer(ioc, diag_buffer_enable); | 7936 | mpt2sas_enable_diag_buffer(ioc, diag_buffer_enable); |
7931 | 7937 | ||
7938 | if (disable_discovery > 0) | ||
7939 | return; | ||
7940 | |||
7932 | ioc->start_scan = 1; | 7941 | ioc->start_scan = 1; |
7933 | rc = mpt2sas_port_enable(ioc); | 7942 | rc = mpt2sas_port_enable(ioc); |
7934 | 7943 | ||
@@ -7950,6 +7959,12 @@ _scsih_scan_finished(struct Scsi_Host *shost, unsigned long time) | |||
7950 | { | 7959 | { |
7951 | struct MPT2SAS_ADAPTER *ioc = shost_priv(shost); | 7960 | struct MPT2SAS_ADAPTER *ioc = shost_priv(shost); |
7952 | 7961 | ||
7962 | if (disable_discovery > 0) { | ||
7963 | ioc->is_driver_loading = 0; | ||
7964 | ioc->wait_for_discovery_to_complete = 0; | ||
7965 | return 1; | ||
7966 | } | ||
7967 | |||
7953 | if (time >= (300 * HZ)) { | 7968 | if (time >= (300 * HZ)) { |
7954 | ioc->base_cmds.status = MPT2_CMD_NOT_USED; | 7969 | ioc->base_cmds.status = MPT2_CMD_NOT_USED; |
7955 | printk(MPT2SAS_INFO_FMT "port enable: FAILED with timeout " | 7970 | printk(MPT2SAS_INFO_FMT "port enable: FAILED with timeout " |
@@ -8055,8 +8070,8 @@ _scsih_probe(struct pci_dev *pdev, const struct pci_device_id *id) | |||
8055 | if (max_sectors != 0xFFFF) { | 8070 | if (max_sectors != 0xFFFF) { |
8056 | if (max_sectors < 64) { | 8071 | if (max_sectors < 64) { |
8057 | shost->max_sectors = 64; | 8072 | shost->max_sectors = 64; |
8058 | printk(MPT2SAS_WARN_FMT "Invalid value %d passed " | 8073 | printk(MPT2SAS_WARN_FMT "Invalid value %d passed "\ |
8059 | "for max_sectors, range is 64 to 8192. Assigning " | 8074 | "for max_sectors, range is 64 to 32767. Assigning "\ |
8060 | "value of 64.\n", ioc->name, max_sectors); | 8075 | "value of 64.\n", ioc->name, max_sectors); |
8061 | } else if (max_sectors > 32767) { | 8076 | } else if (max_sectors > 32767) { |
8062 | shost->max_sectors = 32767; | 8077 | shost->max_sectors = 32767; |
@@ -8078,8 +8093,14 @@ _scsih_probe(struct pci_dev *pdev, const struct pci_device_id *id) | |||
8078 | goto out_add_shost_fail; | 8093 | goto out_add_shost_fail; |
8079 | } | 8094 | } |
8080 | 8095 | ||
8081 | scsi_host_set_prot(shost, SHOST_DIF_TYPE1_PROTECTION | 8096 | /* register EEDP capabilities with SCSI layer */ |
8082 | | SHOST_DIF_TYPE2_PROTECTION | SHOST_DIF_TYPE3_PROTECTION); | 8097 | if (prot_mask) |
8098 | scsi_host_set_prot(shost, prot_mask); | ||
8099 | else | ||
8100 | scsi_host_set_prot(shost, SHOST_DIF_TYPE1_PROTECTION | ||
8101 | | SHOST_DIF_TYPE2_PROTECTION | ||
8102 | | SHOST_DIF_TYPE3_PROTECTION); | ||
8103 | |||
8083 | scsi_host_set_guard(shost, SHOST_DIX_GUARD_CRC); | 8104 | scsi_host_set_guard(shost, SHOST_DIX_GUARD_CRC); |
8084 | 8105 | ||
8085 | /* event thread */ | 8106 | /* event thread */ |
diff --git a/drivers/scsi/mpt2sas/mpt2sas_transport.c b/drivers/scsi/mpt2sas/mpt2sas_transport.c index c6cf20f60720..8c2ffbe6af0f 100644 --- a/drivers/scsi/mpt2sas/mpt2sas_transport.c +++ b/drivers/scsi/mpt2sas/mpt2sas_transport.c | |||
@@ -2,7 +2,7 @@ | |||
2 | * SAS Transport Layer for MPT (Message Passing Technology) based controllers | 2 | * SAS Transport Layer for MPT (Message Passing Technology) based controllers |
3 | * | 3 | * |
4 | * This code is based on drivers/scsi/mpt2sas/mpt2_transport.c | 4 | * This code is based on drivers/scsi/mpt2sas/mpt2_transport.c |
5 | * Copyright (C) 2007-2010 LSI Corporation | 5 | * Copyright (C) 2007-2012 LSI Corporation |
6 | * (mailto:DL-MPTFusionLinux@lsi.com) | 6 | * (mailto:DL-MPTFusionLinux@lsi.com) |
7 | * | 7 | * |
8 | * This program is free software; you can redistribute it and/or | 8 | * This program is free software; you can redistribute it and/or |