linux/drivers/scsi/isci
Marcin Tomczak 05b080fc93 [SCSI] isci: fix, prevent port from getting stuck in the 'configuring' state
When expander connected in x2 or x4 mode and with IO runnning, if
a cable from wideport is plugged out from the phy, IO's start failing
on all the targets.

Observed that when cable is pulled with IO running, cominit is
happening on all the links and IO's start dropping to 0 and eventually
the whole IO fails. Second observation, target is trying to open and
SCU is responding with "Open reject no destination".

A cause of the problem is when the port went from the "ready
configuring substate" back to "ready configuring substate" as a result
of phy being pulled off, scic suspended the port task scheduler
register. As a result no IO was allowed and in the "substate
configuring enter" routine the IO never goes back to 0. As a result
the port never comes out of "ready substate configuring".

The patch adds a mechanism of activate and deactivate phy when a port
link up, which fixes the problem.

Signed-off-by: Bartek Nowakowski <bartek.nowakowski@intel.com>
Signed-off-by: Maciej Trela <maciej.trela@intel.com>
Signed-off-by: Marcin Tomczak <marcin.tomczak@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
2012-01-16 11:48:02 +04:00
..
host.c [SCSI] isci: fix io failures while wide port links are coming up 2012-01-16 11:46:59 +04:00
host.h [SCSI] isci: oem parameter format v1.3 (cable select) 2012-01-16 11:43:04 +04:00
init.c [SCSI] isci: update version to 1.1 2012-01-16 11:44:54 +04:00
isci.h [SCSI] isci: oem parameter format v1.3 (cable select) 2012-01-16 11:43:04 +04:00
Makefile isci: merge sata.[ch] into request.c 2011-07-03 04:04:52 -07:00
phy.c [SCSI] isci: fix start OOB 2012-01-16 11:47:27 +04:00
phy.h isci: kill 'get/set' macros 2011-07-03 04:04:52 -07:00
port_config.c [SCSI] isci: fix io failures while wide port links are coming up 2012-01-16 11:46:59 +04:00
port.c [SCSI] isci: fix, prevent port from getting stuck in the 'configuring' state 2012-01-16 11:48:02 +04:00
port.h [SCSI] isci: fix, prevent port from getting stuck in the 'configuring' state 2012-01-16 11:48:02 +04:00
probe_roms.c [SCSI] isci: update afe (analog-front-end) recipe for C1 2012-01-16 11:40:29 +04:00
probe_roms.h [SCSI] isci: oem parameter format v1.3 (cable select) 2012-01-16 11:43:04 +04:00
registers.h [SCSI] isci: fix sgpio register definitions 2011-09-22 15:00:56 +04:00
remote_device.c [SCSI] isci: enable wide port targets 2012-01-16 11:45:43 +04:00
remote_device.h [SCSI] isci: No need to manage the pending reset bit on pending requests. 2011-10-31 13:20:28 +04:00
remote_node_context.c isci: kill 'get/set' macros 2011-07-03 04:04:52 -07:00
remote_node_context.h isci: kill 'get/set' macros 2011-07-03 04:04:52 -07:00
remote_node_table.c isci: retire scic_sds_ and scic_ prefixes 2011-07-03 04:04:52 -07:00
remote_node_table.h isci: retire scic_sds_ and scic_ prefixes 2011-07-03 04:04:52 -07:00
request.c [SCSI] isci: Remove redundant isci_request.ttype field. 2011-10-31 13:19:47 +04:00
request.h [SCSI] isci: Remove redundant isci_request.ttype field. 2011-10-31 13:19:47 +04:00
sas.h [SCSI] isci: fix support for large smp requests 2011-10-02 13:07:17 -05:00
scu_completion_codes.h
scu_event_codes.h
scu_remote_node_context.h
scu_task_context.h
task.c [SCSI] isci: remove unused 'isci_tmf->device' field 2012-01-16 11:44:15 +04:00
task.h [SCSI] isci: remove unused 'isci_tmf->device' field 2012-01-16 11:44:15 +04:00
unsolicited_frame_control.c [SCSI] isci: fix 32-bit operation when CONFIG_HIGHMEM64G=n 2011-08-23 19:50:27 -07:00
unsolicited_frame_control.h [SCSI] isci: fix 32-bit operation when CONFIG_HIGHMEM64G=n 2011-08-23 19:50:27 -07:00