diff options
| author | Cornelia Huck <cornelia.huck@de.ibm.com> | 2006-10-27 06:39:17 -0400 |
|---|---|---|
| committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2006-10-27 06:39:17 -0400 |
| commit | c2b1449bd1fd73103ed5ff1a28d8f7cbc8a01b52 (patch) | |
| tree | d3008cd4f9fb674fbf764823bc5e20263c5d3322 | |
| parent | 95425f19beed99cb9b0a79f69731eda907d9db99 (diff) | |
[S390] cio: css_probe_device() must be called enabled.
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>
| -rw-r--r-- | drivers/s390/cio/css.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/drivers/s390/cio/css.c b/drivers/s390/cio/css.c index a2dee5bf5a17..ad7f7e1c0163 100644 --- a/drivers/s390/cio/css.c +++ b/drivers/s390/cio/css.c | |||
| @@ -271,10 +271,6 @@ static int css_evaluate_known_subchannel(struct subchannel *sch, int slow) | |||
| 271 | /* Reset intparm to zeroes. */ | 271 | /* Reset intparm to zeroes. */ |
| 272 | sch->schib.pmcw.intparm = 0; | 272 | sch->schib.pmcw.intparm = 0; |
| 273 | cio_modify(sch); | 273 | cio_modify(sch); |
| 274 | |||
| 275 | /* Probe if necessary. */ | ||
| 276 | if (action == UNREGISTER_PROBE) | ||
| 277 | ret = css_probe_device(sch->schid); | ||
| 278 | break; | 274 | break; |
| 279 | case REPROBE: | 275 | case REPROBE: |
| 280 | device_trigger_reprobe(sch); | 276 | device_trigger_reprobe(sch); |
| @@ -283,6 +279,9 @@ static int css_evaluate_known_subchannel(struct subchannel *sch, int slow) | |||
| 283 | break; | 279 | break; |
| 284 | } | 280 | } |
| 285 | spin_unlock_irqrestore(&sch->lock, flags); | 281 | spin_unlock_irqrestore(&sch->lock, flags); |
| 282 | /* Probe if necessary. */ | ||
| 283 | if (action == UNREGISTER_PROBE) | ||
| 284 | ret = css_probe_device(sch->schid); | ||
| 286 | 285 | ||
| 287 | return ret; | 286 | return ret; |
| 288 | } | 287 | } |
