diff options
author | Ralph Wuerthner <rwuerthn@de.ibm.com> | 2006-10-27 12:39:26 +0200 |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2006-10-27 12:39:26 +0200 |
commit | f3b017d8c9915cbaa8bab178dde1bd9dbbf5012c (patch) | |
tree | 97348db9749f39fea22c85135a221f0fd2132d0e /drivers/s390 | |
parent | [S390] uaccess error handling. (diff) | |
download | linux-f3b017d8c9915cbaa8bab178dde1bd9dbbf5012c.tar.xz linux-f3b017d8c9915cbaa8bab178dde1bd9dbbf5012c.zip |
[S390] Improve AP bus device removal.
Added a call to device_unregister() in ap_scan_bus() to actively
remove unavailable AP bus devices with every bus scan. Previously
devices were only removed in ap_queue_message() or __ap_poll_all().
Signed-off-by: Ralph Wuerthner <rwuerthn@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'drivers/s390')
-rw-r--r-- | drivers/s390/crypto/ap_bus.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/s390/crypto/ap_bus.c b/drivers/s390/crypto/ap_bus.c index c5ccd20b110c..79d89c368919 100644 --- a/drivers/s390/crypto/ap_bus.c +++ b/drivers/s390/crypto/ap_bus.c @@ -739,11 +739,16 @@ static void ap_scan_bus(void *data) dev = bus_find_device(&ap_bus_type, NULL, (void *)(unsigned long)qid, __ap_scan_bus); + rc = ap_query_queue(qid, &queue_depth, &device_type); + if (dev && rc) { + put_device(dev); + device_unregister(dev); + continue; + } if (dev) { put_device(dev); continue; } - rc = ap_query_queue(qid, &queue_depth, &device_type); if (rc) continue; rc = ap_init_queue(qid); |