SILI - Increase hard -> soft PM target delay to 5 seconds
authorMatthew Dillon <dillon@apollo.backplane.com>
Fri, 26 Jun 2009 23:16:58 +0000 (16:16 -0700)
committerMatthew Dillon <dillon@apollo.backplane.com>
Fri, 26 Jun 2009 23:16:58 +0000 (16:16 -0700)
* Unfortunately it looks like we have to seriously increase the delay
  between doing a hard reset via the PM to a target and initiating
  the softreset.

  The Silicon Image chip appears to brick the port if its softreset
  collides with the target device.  There is no way to fix it other
  then hard-resetting the port (which causes the PM to reset as well).

sys/dev/disk/sili/sili_pm.c

index 5c85b42..bf01278 100644 (file)
@@ -360,12 +360,16 @@ sili_pm_hardreset(struct sili_port *ap, int target, int hard)
         * Some devices may need longer and we handle those cases in the
         * pm softreset code.
         *
+        * XXX Looks like we have to wait a lot longer.  If the Sili chip's
+        *     softreset fails due to a collision with the D2H FIS or the
+        *     unbusying it bricks the port.
+        *
         * XXX how do we poll that particular target's BSY status via the
         *     PM?
         */
        kprintf("%s.%d: PM Device detected ssts=%08x\n",
                PORTNAME(ap), target, data);
-       sili_os_sleep(200);
+       sili_os_sleep(5000);
 
        error = 0;
 err: