Skip to content

Commit

Permalink
[SCSI] isci: Fix IO fails when pull cable from phy in x4 wideport in …
Browse files Browse the repository at this point in the history
…MPC mode.

Failure seen pulling a cable from a x4 port configured in manual port
configuration (MPC) mode (MPC mode is set by the the OEM paramaters
provided by the platform or isci_firmware.bin).  While IO running to
devices behind and expander, plugging out the cable from phy is causing
IO failures and IO drops on disks and never recover.

It happens because during link up/down the phy were being taken out of
the port.

Fix: during link down the phy is kept in the same logical port.

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>
  • Loading branch information
Marcin Tomczak authored and James Bottomley committed Jan 16, 2012
1 parent d3fd2e2 commit d4ec1cf
Showing 1 changed file with 7 additions and 3 deletions.
10 changes: 7 additions & 3 deletions drivers/scsi/isci/port.c
Original file line number Diff line number Diff line change
Expand Up @@ -674,9 +674,13 @@ void sci_port_deactivate_phy(struct isci_port *iport, struct isci_phy *iphy,

iphy->max_negotiated_speed = SAS_LINK_RATE_UNKNOWN;

/* Re-assign the phy back to the LP as if it were a narrow port */
writel(iphy->phy_index,
&iport->port_pe_configuration_register[iphy->phy_index]);
/* Re-assign the phy back to the LP as if it were a narrow port for APC
* mode. For MPC mode, the phy will remain in the port.
*/
if (iport->owning_controller->oem_parameters.controller.mode_type ==
SCIC_PORT_AUTOMATIC_CONFIGURATION_MODE)
writel(iphy->phy_index,
&iport->port_pe_configuration_register[iphy->phy_index]);

if (do_notify_user == true)
isci_port_link_down(ihost, iphy, iport);
Expand Down

0 comments on commit d4ec1cf

Please sign in to comment.