[S390] cio: css_probe_device() must be called enabled.
authorCornelia Huck <cornelia.huck@de.ibm.com>
Fri, 27 Oct 2006 10:39:17 +0000 (12:39 +0200)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Fri, 27 Oct 2006 10:39:17 +0000 (12:39 +0200)
Move css_probe_device() behind giving up the lock for the old subchannel
in css_evaluate_known_subchannel() so we aren't disabled when we call it.

Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
drivers/s390/cio/css.c

index a2dee5bf5a17aa03b878bd91cffff090f2e27450..ad7f7e1c01631608e3ce529352b9ce4de74d3832 100644 (file)
@@ -271,10 +271,6 @@ static int css_evaluate_known_subchannel(struct subchannel *sch, int slow)
                /* Reset intparm to zeroes. */
                sch->schib.pmcw.intparm = 0;
                cio_modify(sch);
-
-               /* Probe if necessary. */
-               if (action == UNREGISTER_PROBE)
-                       ret = css_probe_device(sch->schid);
                break;
        case REPROBE:
                device_trigger_reprobe(sch);
@@ -283,6 +279,9 @@ static int css_evaluate_known_subchannel(struct subchannel *sch, int slow)
                break;
        }
        spin_unlock_irqrestore(&sch->lock, flags);
+       /* Probe if necessary. */
+       if (action == UNREGISTER_PROBE)
+               ret = css_probe_device(sch->schid);
 
        return ret;
 }