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 /include/scsi | |
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 'include/scsi')
-rw-r--r-- | include/scsi/libsas.h | 20 | ||||
-rw-r--r-- | include/scsi/sas_ata.h | 10 | ||||
-rw-r--r-- | include/scsi/scsi_bsg_fc.h | 2 | ||||
-rw-r--r-- | include/scsi/scsi_device.h | 4 | ||||
-rw-r--r-- | include/scsi/scsi_devinfo.h | 1 | ||||
-rw-r--r-- | include/scsi/scsi_host.h | 6 |
6 files changed, 36 insertions, 7 deletions
diff --git a/include/scsi/libsas.h b/include/scsi/libsas.h index ae33706afeb0..ef937b56f9b5 100644 --- a/include/scsi/libsas.h +++ b/include/scsi/libsas.h | |||
@@ -79,7 +79,8 @@ enum phy_event { | |||
79 | PHYE_OOB_DONE = 1, | 79 | PHYE_OOB_DONE = 1, |
80 | PHYE_OOB_ERROR = 2, | 80 | PHYE_OOB_ERROR = 2, |
81 | PHYE_SPINUP_HOLD = 3, /* hot plug SATA, no COMWAKE sent */ | 81 | PHYE_SPINUP_HOLD = 3, /* hot plug SATA, no COMWAKE sent */ |
82 | PHY_NUM_EVENTS = 4, | 82 | PHYE_RESUME_TIMEOUT = 4, |
83 | PHY_NUM_EVENTS = 5, | ||
83 | }; | 84 | }; |
84 | 85 | ||
85 | enum discover_event { | 86 | enum discover_event { |
@@ -87,8 +88,10 @@ enum discover_event { | |||
87 | DISCE_REVALIDATE_DOMAIN = 1, | 88 | DISCE_REVALIDATE_DOMAIN = 1, |
88 | DISCE_PORT_GONE = 2, | 89 | DISCE_PORT_GONE = 2, |
89 | DISCE_PROBE = 3, | 90 | DISCE_PROBE = 3, |
90 | DISCE_DESTRUCT = 4, | 91 | DISCE_SUSPEND = 4, |
91 | DISC_NUM_EVENTS = 5, | 92 | DISCE_RESUME = 5, |
93 | DISCE_DESTRUCT = 6, | ||
94 | DISC_NUM_EVENTS = 7, | ||
92 | }; | 95 | }; |
93 | 96 | ||
94 | /* ---------- Expander Devices ---------- */ | 97 | /* ---------- Expander Devices ---------- */ |
@@ -128,7 +131,7 @@ struct ex_phy { | |||
128 | u8 attached_sas_addr[SAS_ADDR_SIZE]; | 131 | u8 attached_sas_addr[SAS_ADDR_SIZE]; |
129 | u8 attached_phy_id; | 132 | u8 attached_phy_id; |
130 | 133 | ||
131 | u8 phy_change_count; | 134 | int phy_change_count; |
132 | enum routing_attribute routing_attr; | 135 | enum routing_attribute routing_attr; |
133 | u8 virtual:1; | 136 | u8 virtual:1; |
134 | 137 | ||
@@ -141,7 +144,7 @@ struct ex_phy { | |||
141 | struct expander_device { | 144 | struct expander_device { |
142 | struct list_head children; | 145 | struct list_head children; |
143 | 146 | ||
144 | u16 ex_change_count; | 147 | int ex_change_count; |
145 | u16 max_route_indexes; | 148 | u16 max_route_indexes; |
146 | u8 num_phys; | 149 | u8 num_phys; |
147 | 150 | ||
@@ -169,6 +172,7 @@ struct sata_device { | |||
169 | enum ata_command_set command_set; | 172 | enum ata_command_set command_set; |
170 | struct smp_resp rps_resp; /* report_phy_sata_resp */ | 173 | struct smp_resp rps_resp; /* report_phy_sata_resp */ |
171 | u8 port_no; /* port number, if this is a PM (Port) */ | 174 | u8 port_no; /* port number, if this is a PM (Port) */ |
175 | int pm_result; | ||
172 | 176 | ||
173 | struct ata_port *ap; | 177 | struct ata_port *ap; |
174 | struct ata_host ata_host; | 178 | struct ata_host ata_host; |
@@ -182,6 +186,7 @@ struct ssp_device { | |||
182 | 186 | ||
183 | enum { | 187 | enum { |
184 | SAS_DEV_GONE, | 188 | SAS_DEV_GONE, |
189 | SAS_DEV_FOUND, /* device notified to lldd */ | ||
185 | SAS_DEV_DESTROY, | 190 | SAS_DEV_DESTROY, |
186 | SAS_DEV_EH_PENDING, | 191 | SAS_DEV_EH_PENDING, |
187 | SAS_DEV_LU_RESET, | 192 | SAS_DEV_LU_RESET, |
@@ -273,6 +278,7 @@ struct asd_sas_port { | |||
273 | enum sas_linkrate linkrate; | 278 | enum sas_linkrate linkrate; |
274 | 279 | ||
275 | struct sas_work work; | 280 | struct sas_work work; |
281 | int suspended; | ||
276 | 282 | ||
277 | /* public: */ | 283 | /* public: */ |
278 | int id; | 284 | int id; |
@@ -321,6 +327,7 @@ struct asd_sas_phy { | |||
321 | unsigned long phy_events_pending; | 327 | unsigned long phy_events_pending; |
322 | 328 | ||
323 | int error; | 329 | int error; |
330 | int suspended; | ||
324 | 331 | ||
325 | struct sas_phy *phy; | 332 | struct sas_phy *phy; |
326 | 333 | ||
@@ -687,6 +694,9 @@ struct sas_domain_function_template { | |||
687 | 694 | ||
688 | extern int sas_register_ha(struct sas_ha_struct *); | 695 | extern int sas_register_ha(struct sas_ha_struct *); |
689 | extern int sas_unregister_ha(struct sas_ha_struct *); | 696 | extern int sas_unregister_ha(struct sas_ha_struct *); |
697 | extern void sas_prep_resume_ha(struct sas_ha_struct *sas_ha); | ||
698 | extern void sas_resume_ha(struct sas_ha_struct *sas_ha); | ||
699 | extern void sas_suspend_ha(struct sas_ha_struct *sas_ha); | ||
690 | 700 | ||
691 | int sas_set_phy_speed(struct sas_phy *phy, | 701 | int sas_set_phy_speed(struct sas_phy *phy, |
692 | struct sas_phy_linkrates *rates); | 702 | struct sas_phy_linkrates *rates); |
diff --git a/include/scsi/sas_ata.h b/include/scsi/sas_ata.h index 2dfbdaa0b34a..ff71a5654684 100644 --- a/include/scsi/sas_ata.h +++ b/include/scsi/sas_ata.h | |||
@@ -45,6 +45,8 @@ void sas_ata_eh(struct Scsi_Host *shost, struct list_head *work_q, | |||
45 | void sas_ata_schedule_reset(struct domain_device *dev); | 45 | void sas_ata_schedule_reset(struct domain_device *dev); |
46 | void sas_ata_wait_eh(struct domain_device *dev); | 46 | void sas_ata_wait_eh(struct domain_device *dev); |
47 | void sas_probe_sata(struct asd_sas_port *port); | 47 | void sas_probe_sata(struct asd_sas_port *port); |
48 | void sas_suspend_sata(struct asd_sas_port *port); | ||
49 | void sas_resume_sata(struct asd_sas_port *port); | ||
48 | void sas_ata_end_eh(struct ata_port *ap); | 50 | void sas_ata_end_eh(struct ata_port *ap); |
49 | #else | 51 | #else |
50 | 52 | ||
@@ -82,6 +84,14 @@ static inline void sas_probe_sata(struct asd_sas_port *port) | |||
82 | { | 84 | { |
83 | } | 85 | } |
84 | 86 | ||
87 | static inline void sas_suspend_sata(struct asd_sas_port *port) | ||
88 | { | ||
89 | } | ||
90 | |||
91 | static inline void sas_resume_sata(struct asd_sas_port *port) | ||
92 | { | ||
93 | } | ||
94 | |||
85 | static inline int sas_get_ata_info(struct domain_device *dev, struct ex_phy *phy) | 95 | static inline int sas_get_ata_info(struct domain_device *dev, struct ex_phy *phy) |
86 | { | 96 | { |
87 | return 0; | 97 | return 0; |
diff --git a/include/scsi/scsi_bsg_fc.h b/include/scsi/scsi_bsg_fc.h index 91a4e4ff9a9b..3031b900b087 100644 --- a/include/scsi/scsi_bsg_fc.h +++ b/include/scsi/scsi_bsg_fc.h | |||
@@ -26,8 +26,6 @@ | |||
26 | * This file intended to be included by both kernel and user space | 26 | * This file intended to be included by both kernel and user space |
27 | */ | 27 | */ |
28 | 28 | ||
29 | #include <scsi/scsi.h> | ||
30 | |||
31 | /* | 29 | /* |
32 | * FC Transport SGIO v4 BSG Message Support | 30 | * FC Transport SGIO v4 BSG Message Support |
33 | */ | 31 | */ |
diff --git a/include/scsi/scsi_device.h b/include/scsi/scsi_device.h index 9895f69294fc..88fae8d20154 100644 --- a/include/scsi/scsi_device.h +++ b/include/scsi/scsi_device.h | |||
@@ -156,6 +156,7 @@ struct scsi_device { | |||
156 | unsigned is_visible:1; /* is the device visible in sysfs */ | 156 | unsigned is_visible:1; /* is the device visible in sysfs */ |
157 | unsigned can_power_off:1; /* Device supports runtime power off */ | 157 | unsigned can_power_off:1; /* Device supports runtime power off */ |
158 | unsigned wce_default_on:1; /* Cache is ON by default */ | 158 | unsigned wce_default_on:1; /* Cache is ON by default */ |
159 | unsigned no_dif:1; /* T10 PI (DIF) should be disabled */ | ||
159 | 160 | ||
160 | DECLARE_BITMAP(supported_events, SDEV_EVT_MAXBITS); /* supported events */ | 161 | DECLARE_BITMAP(supported_events, SDEV_EVT_MAXBITS); /* supported events */ |
161 | struct list_head event_list; /* asserted events */ | 162 | struct list_head event_list; /* asserted events */ |
@@ -476,6 +477,9 @@ static inline int scsi_device_enclosure(struct scsi_device *sdev) | |||
476 | 477 | ||
477 | static inline int scsi_device_protection(struct scsi_device *sdev) | 478 | static inline int scsi_device_protection(struct scsi_device *sdev) |
478 | { | 479 | { |
480 | if (sdev->no_dif) | ||
481 | return 0; | ||
482 | |||
479 | return sdev->scsi_level > SCSI_2 && sdev->inquiry[5] & (1<<0); | 483 | return sdev->scsi_level > SCSI_2 && sdev->inquiry[5] & (1<<0); |
480 | } | 484 | } |
481 | 485 | ||
diff --git a/include/scsi/scsi_devinfo.h b/include/scsi/scsi_devinfo.h index b4ddd3b18b4c..cc1f3e786ad7 100644 --- a/include/scsi/scsi_devinfo.h +++ b/include/scsi/scsi_devinfo.h | |||
@@ -30,4 +30,5 @@ | |||
30 | #define BLIST_RETRY_HWERROR 0x400000 /* retry HARDWARE_ERROR */ | 30 | #define BLIST_RETRY_HWERROR 0x400000 /* retry HARDWARE_ERROR */ |
31 | #define BLIST_MAX_512 0x800000 /* maximum 512 sector cdb length */ | 31 | #define BLIST_MAX_512 0x800000 /* maximum 512 sector cdb length */ |
32 | #define BLIST_ATTACH_PQ3 0x1000000 /* Scan: Attach to PQ3 devices */ | 32 | #define BLIST_ATTACH_PQ3 0x1000000 /* Scan: Attach to PQ3 devices */ |
33 | #define BLIST_NO_DIF 0x2000000 /* Disable T10 PI (DIF) */ | ||
33 | #endif | 34 | #endif |
diff --git a/include/scsi/scsi_host.h b/include/scsi/scsi_host.h index 5f7d5b3b1c6e..49084807eb6b 100644 --- a/include/scsi/scsi_host.h +++ b/include/scsi/scsi_host.h | |||
@@ -873,6 +873,9 @@ static inline unsigned int scsi_host_dif_capable(struct Scsi_Host *shost, unsign | |||
873 | SHOST_DIF_TYPE2_PROTECTION, | 873 | SHOST_DIF_TYPE2_PROTECTION, |
874 | SHOST_DIF_TYPE3_PROTECTION }; | 874 | SHOST_DIF_TYPE3_PROTECTION }; |
875 | 875 | ||
876 | if (target_type > SHOST_DIF_TYPE3_PROTECTION) | ||
877 | return 0; | ||
878 | |||
876 | return shost->prot_capabilities & cap[target_type] ? target_type : 0; | 879 | return shost->prot_capabilities & cap[target_type] ? target_type : 0; |
877 | } | 880 | } |
878 | 881 | ||
@@ -884,6 +887,9 @@ static inline unsigned int scsi_host_dix_capable(struct Scsi_Host *shost, unsign | |||
884 | SHOST_DIX_TYPE2_PROTECTION, | 887 | SHOST_DIX_TYPE2_PROTECTION, |
885 | SHOST_DIX_TYPE3_PROTECTION }; | 888 | SHOST_DIX_TYPE3_PROTECTION }; |
886 | 889 | ||
890 | if (target_type > SHOST_DIX_TYPE3_PROTECTION) | ||
891 | return 0; | ||
892 | |||
887 | return shost->prot_capabilities & cap[target_type]; | 893 | return shost->prot_capabilities & cap[target_type]; |
888 | #endif | 894 | #endif |
889 | return 0; | 895 | return 0; |