linux/drivers/scsi/isci
Dan Williams 2193b1b16c [SCSI] isci: fix needless ata reset escalations
isci is needlessly tying libata's hands by returning
SAM_STAT_CHECK_CONDITION to some ata errors.  Instead, prefer
SAS_PROTO_RESPONSE to let libata (via sas_ata_task_done()) disposition
the device-to-host fis.

For example isci is triggering an HSM Violation where AHCI is showing a
simple media error for the same bus condition:

isci:
ata7.00: failed command: READ VERIFY SECTOR(S)
ata7.00: cmd 40/00:01:00:00:00/00:00:00:00:00/e0 tag 0
         res 01/04:00:00:00:00/00:00:00:00:00/e0 Emask 0x3 (HSM violation)

ahci:
ata6.00: failed command: READ VERIFY SECTOR(S)
ata6.00: cmd 40/00:01:00:00:00/00:00:00:00:00/e0 tag 0
         res 51/40:01:00:00:00/00:00:00:00:00/e0 Emask 0x9 (media error)

Note that the isci response matches this from sas_ata_task_done():
	/* We saw a SAS error. Send a vague error. */
	[..]
	dev->sata_dev.fis[3] = 0x04; /* status err */
	dev->sata_dev.fis[2] = ATA_ERR;

The end effect is that isci is needlessly triggering hard resets when
they are not necessary.

Reported-by: Xun Ni <xun.ni@intel.com>
Tested-by: Nelson Cheng <nelson.cheng@intel.com>
Acked-by: Lukasz Dorau <lukasz.dorau@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
2014-03-15 10:18:53 -07:00
..
host.c
host.h [SCSI] isci: correct erroneous for_each_isci_host macro 2014-03-10 12:49:39 +04:00
init.c [SCSI] isci: add CONFIG_PM_SLEEP to suspend/resume functions 2013-04-11 16:01:53 -07:00
isci.h
Makefile
phy.c
phy.h
port.c
port.h
port_config.c [SCSI] isci: fix reset timeout handling 2014-03-10 12:48:16 +04:00
probe_roms.c
probe_roms.h
registers.h
remote_device.c [SCSI] sas: unify the pointlessly separated enums sas_dev_type and sas_device_type 2013-05-10 07:47:52 -07:00
remote_device.h [SCSI] sas: unify the pointlessly separated enums sas_dev_type and sas_device_type 2013-05-10 07:47:52 -07:00
remote_node_context.c
remote_node_context.h
remote_node_table.c
remote_node_table.h
request.c [SCSI] isci: fix needless ata reset escalations 2014-03-15 10:18:53 -07:00
request.h
sas.h
scu_completion_codes.h
scu_event_codes.h
scu_remote_node_context.h
scu_task_context.h
task.c [SCSI] isci: fix reset timeout handling 2014-03-10 12:48:16 +04:00
task.h
unsolicited_frame_control.c
unsolicited_frame_control.h