mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 02:32:09 -04:00
SCSI for-linus on 20121002
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 <[email protected]> -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.19 (GNU/Linux) iQEcBAABAgAGBQJQaqCFAAoJEDeqqVYsXL0MKJ4IALg/Obnk0/fNvBUNIrh5zRmj r9UlXFJnlEDT03qRGdn8okgWMChbgaD1ZrwDTQnjNsabVQoTXI6oO6/uL2c8crpY BFBwJvkNJS99nbcZv10CpJ3K7ykmRnKlkYon12iknhGwdtU+XJ14Z4PUcZkI9jmg sBQQ6uNVWyosaONNE+k6o+dw6OTttJkzRX8e9in3thstxNTcG+h9iB1zZ/ETkSEj tD4MyOgDiPf8kPV2awQThQGpni9Tu3SQr5dEn/iUUktUjiYsDNQuyaAk+QzyhUU7 D35iIJnIHlXTSTMQkrG4qpJHBvqPkWlYJzaOmheQryQ3vzp2C5Ly/hS9il45uIQ= =49u9 -----END PGP SIGNATURE----- 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 <[email protected]>" 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 ...
This commit is contained in:
commit
3151367f87
179 changed files with 13464 additions and 4430 deletions
|
|
@ -79,7 +79,8 @@ enum phy_event {
|
|||
PHYE_OOB_DONE = 1,
|
||||
PHYE_OOB_ERROR = 2,
|
||||
PHYE_SPINUP_HOLD = 3, /* hot plug SATA, no COMWAKE sent */
|
||||
PHY_NUM_EVENTS = 4,
|
||||
PHYE_RESUME_TIMEOUT = 4,
|
||||
PHY_NUM_EVENTS = 5,
|
||||
};
|
||||
|
||||
enum discover_event {
|
||||
|
|
@ -87,8 +88,10 @@ enum discover_event {
|
|||
DISCE_REVALIDATE_DOMAIN = 1,
|
||||
DISCE_PORT_GONE = 2,
|
||||
DISCE_PROBE = 3,
|
||||
DISCE_DESTRUCT = 4,
|
||||
DISC_NUM_EVENTS = 5,
|
||||
DISCE_SUSPEND = 4,
|
||||
DISCE_RESUME = 5,
|
||||
DISCE_DESTRUCT = 6,
|
||||
DISC_NUM_EVENTS = 7,
|
||||
};
|
||||
|
||||
/* ---------- Expander Devices ---------- */
|
||||
|
|
@ -128,7 +131,7 @@ struct ex_phy {
|
|||
u8 attached_sas_addr[SAS_ADDR_SIZE];
|
||||
u8 attached_phy_id;
|
||||
|
||||
u8 phy_change_count;
|
||||
int phy_change_count;
|
||||
enum routing_attribute routing_attr;
|
||||
u8 virtual:1;
|
||||
|
||||
|
|
@ -141,7 +144,7 @@ struct ex_phy {
|
|||
struct expander_device {
|
||||
struct list_head children;
|
||||
|
||||
u16 ex_change_count;
|
||||
int ex_change_count;
|
||||
u16 max_route_indexes;
|
||||
u8 num_phys;
|
||||
|
||||
|
|
@ -169,6 +172,7 @@ struct sata_device {
|
|||
enum ata_command_set command_set;
|
||||
struct smp_resp rps_resp; /* report_phy_sata_resp */
|
||||
u8 port_no; /* port number, if this is a PM (Port) */
|
||||
int pm_result;
|
||||
|
||||
struct ata_port *ap;
|
||||
struct ata_host ata_host;
|
||||
|
|
@ -182,6 +186,7 @@ struct ssp_device {
|
|||
|
||||
enum {
|
||||
SAS_DEV_GONE,
|
||||
SAS_DEV_FOUND, /* device notified to lldd */
|
||||
SAS_DEV_DESTROY,
|
||||
SAS_DEV_EH_PENDING,
|
||||
SAS_DEV_LU_RESET,
|
||||
|
|
@ -273,6 +278,7 @@ struct asd_sas_port {
|
|||
enum sas_linkrate linkrate;
|
||||
|
||||
struct sas_work work;
|
||||
int suspended;
|
||||
|
||||
/* public: */
|
||||
int id;
|
||||
|
|
@ -321,6 +327,7 @@ struct asd_sas_phy {
|
|||
unsigned long phy_events_pending;
|
||||
|
||||
int error;
|
||||
int suspended;
|
||||
|
||||
struct sas_phy *phy;
|
||||
|
||||
|
|
@ -687,6 +694,9 @@ struct sas_domain_function_template {
|
|||
|
||||
extern int sas_register_ha(struct sas_ha_struct *);
|
||||
extern int sas_unregister_ha(struct sas_ha_struct *);
|
||||
extern void sas_prep_resume_ha(struct sas_ha_struct *sas_ha);
|
||||
extern void sas_resume_ha(struct sas_ha_struct *sas_ha);
|
||||
extern void sas_suspend_ha(struct sas_ha_struct *sas_ha);
|
||||
|
||||
int sas_set_phy_speed(struct sas_phy *phy,
|
||||
struct sas_phy_linkrates *rates);
|
||||
|
|
|
|||
|
|
@ -45,6 +45,8 @@ void sas_ata_eh(struct Scsi_Host *shost, struct list_head *work_q,
|
|||
void sas_ata_schedule_reset(struct domain_device *dev);
|
||||
void sas_ata_wait_eh(struct domain_device *dev);
|
||||
void sas_probe_sata(struct asd_sas_port *port);
|
||||
void sas_suspend_sata(struct asd_sas_port *port);
|
||||
void sas_resume_sata(struct asd_sas_port *port);
|
||||
void sas_ata_end_eh(struct ata_port *ap);
|
||||
#else
|
||||
|
||||
|
|
@ -82,6 +84,14 @@ static inline void sas_probe_sata(struct asd_sas_port *port)
|
|||
{
|
||||
}
|
||||
|
||||
static inline void sas_suspend_sata(struct asd_sas_port *port)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void sas_resume_sata(struct asd_sas_port *port)
|
||||
{
|
||||
}
|
||||
|
||||
static inline int sas_get_ata_info(struct domain_device *dev, struct ex_phy *phy)
|
||||
{
|
||||
return 0;
|
||||
|
|
|
|||
|
|
@ -26,8 +26,6 @@
|
|||
* This file intended to be included by both kernel and user space
|
||||
*/
|
||||
|
||||
#include <scsi/scsi.h>
|
||||
|
||||
/*
|
||||
* FC Transport SGIO v4 BSG Message Support
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -156,6 +156,7 @@ struct scsi_device {
|
|||
unsigned is_visible:1; /* is the device visible in sysfs */
|
||||
unsigned can_power_off:1; /* Device supports runtime power off */
|
||||
unsigned wce_default_on:1; /* Cache is ON by default */
|
||||
unsigned no_dif:1; /* T10 PI (DIF) should be disabled */
|
||||
|
||||
DECLARE_BITMAP(supported_events, SDEV_EVT_MAXBITS); /* supported events */
|
||||
struct list_head event_list; /* asserted events */
|
||||
|
|
@ -476,6 +477,9 @@ static inline int scsi_device_enclosure(struct scsi_device *sdev)
|
|||
|
||||
static inline int scsi_device_protection(struct scsi_device *sdev)
|
||||
{
|
||||
if (sdev->no_dif)
|
||||
return 0;
|
||||
|
||||
return sdev->scsi_level > SCSI_2 && sdev->inquiry[5] & (1<<0);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -30,4 +30,5 @@
|
|||
#define BLIST_RETRY_HWERROR 0x400000 /* retry HARDWARE_ERROR */
|
||||
#define BLIST_MAX_512 0x800000 /* maximum 512 sector cdb length */
|
||||
#define BLIST_ATTACH_PQ3 0x1000000 /* Scan: Attach to PQ3 devices */
|
||||
#define BLIST_NO_DIF 0x2000000 /* Disable T10 PI (DIF) */
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -873,6 +873,9 @@ static inline unsigned int scsi_host_dif_capable(struct Scsi_Host *shost, unsign
|
|||
SHOST_DIF_TYPE2_PROTECTION,
|
||||
SHOST_DIF_TYPE3_PROTECTION };
|
||||
|
||||
if (target_type > SHOST_DIF_TYPE3_PROTECTION)
|
||||
return 0;
|
||||
|
||||
return shost->prot_capabilities & cap[target_type] ? target_type : 0;
|
||||
}
|
||||
|
||||
|
|
@ -884,6 +887,9 @@ static inline unsigned int scsi_host_dix_capable(struct Scsi_Host *shost, unsign
|
|||
SHOST_DIX_TYPE2_PROTECTION,
|
||||
SHOST_DIX_TYPE3_PROTECTION };
|
||||
|
||||
if (target_type > SHOST_DIX_TYPE3_PROTECTION)
|
||||
return 0;
|
||||
|
||||
return shost->prot_capabilities & cap[target_type];
|
||||
#endif
|
||||
return 0;
|
||||
|
|
|
|||
Loading…
Reference in a new issue