Revert "isci: fix reset timeout handling"
authorBen Hutchings <ben@decadent.org.uk>
Wed, 30 Apr 2014 12:22:22 +0000 (13:22 +0100)
committerBen Hutchings <ben@decadent.org.uk>
Wed, 30 Apr 2014 15:23:27 +0000 (16:23 +0100)
This reverts commit 584ec12265192bf49dfa270d517380f6723a6956, which
was commit ddfadd7736b677de2d4ca2cd5b4b655368c85a7a upstream.  It
causes boot failure on 3.2 although no such problem occurs upstream.

Reported-by: Ondrej Zary <linux@rainbow-software.org>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Acked-by: Dan Williams <dan.j.williams@intel.com>
drivers/scsi/isci/port_config.c
drivers/scsi/isci/task.c

index 21a6769..38a99d2 100644 (file)
@@ -610,6 +610,13 @@ static void sci_apc_agent_link_up(struct isci_host *ihost,
                sci_apc_agent_configure_ports(ihost, port_agent, iphy, true);
        } else {
                /* the phy is already the part of the port */
+               u32 port_state = iport->sm.current_state_id;
+
+               /* if the PORT'S state is resetting then the link up is from
+                * port hard reset in this case, we need to tell the port
+                * that link up is recieved
+                */
+               BUG_ON(port_state != SCI_PORT_RESETTING);
                port_agent->phy_ready_mask |= 1 << phy_index;
                sci_port_link_up(iport, iphy);
        }
index 60a530f..e294d11 100644 (file)
@@ -1390,7 +1390,7 @@ int isci_task_I_T_nexus_reset(struct domain_device *dev)
        spin_unlock_irqrestore(&ihost->scic_lock, flags);
 
        if (!idev || !test_bit(IDEV_EH, &idev->flags)) {
-               ret = -ENODEV;
+               ret = TMF_RESP_FUNC_COMPLETE;
                goto out;
        }