summaryrefslogtreecommitdiff
path: root/drivers/s390/crypto/ap_bus.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@woody.osdl.org>2006-12-15 10:22:22 -0800
committerLinus Torvalds <torvalds@woody.osdl.org>2006-12-15 10:22:22 -0800
commit701dfbe71903413d10caf2790259bccbabbedcf5 (patch)
tree6d87a6d1ad2bc4672684197aa1788890bead0d1e /drivers/s390/crypto/ap_bus.c
parentd1526e2cda64d5a1de56aef50bad9e5df14245c2 (diff)
parente42734e270b9e5ada83188d73b733533ce11ee4a (diff)
Merge branch 'for-linus' of git://git390.osdl.marist.edu/pub/scm/linux-2.6
* 'for-linus' of git://git390.osdl.marist.edu/pub/scm/linux-2.6: [S390] cio: css_register_subchannel race. [S390] Save prefix register for dump on panic [S390] Fix reboot hang [S390] Fix reboot hang on LPARs [S390] sclp_cpi module license. [S390] zcrypt: module unload fixes. [S390] Hipersocket multicast queue: make sure outbound handler is called [S390] hypfs fixes [S390] update default configuration
Diffstat (limited to 'drivers/s390/crypto/ap_bus.c')
-rw-r--r--drivers/s390/crypto/ap_bus.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/drivers/s390/crypto/ap_bus.c b/drivers/s390/crypto/ap_bus.c
index ad60afe5dd11..81b5899f4010 100644
--- a/drivers/s390/crypto/ap_bus.c
+++ b/drivers/s390/crypto/ap_bus.c
@@ -1129,7 +1129,15 @@ static void ap_poll_thread_stop(void)
mutex_unlock(&ap_poll_thread_mutex);
}
-static void ap_reset(void)
+static void ap_reset_domain(void)
+{
+ int i;
+
+ for (i = 0; i < AP_DEVICES; i++)
+ ap_reset_queue(AP_MKQID(i, ap_domain_index));
+}
+
+static void ap_reset_all(void)
{
int i, j;
@@ -1139,7 +1147,7 @@ static void ap_reset(void)
}
static struct reset_call ap_reset_call = {
- .fn = ap_reset,
+ .fn = ap_reset_all,
};
/**
@@ -1229,10 +1237,12 @@ void ap_module_exit(void)
int i;
struct device *dev;
+ ap_reset_domain();
ap_poll_thread_stop();
del_timer_sync(&ap_config_timer);
del_timer_sync(&ap_poll_timer);
destroy_workqueue(ap_work_queue);
+ tasklet_kill(&ap_tasklet);
s390_root_dev_unregister(ap_root_device);
while ((dev = bus_find_device(&ap_bus_type, NULL, NULL,
__ap_match_all)))