diff options
author | Linus Torvalds <torvalds@woody.osdl.org> | 2006-12-08 14:21:55 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.osdl.org> | 2006-12-08 14:21:55 -0500 |
commit | 88032b322a38b37335c8cb2e3473a45c81d280eb (patch) | |
tree | cd722ab15b18a10f6b1aa50656b8da713ee8b799 /drivers/s390/crypto/ap_bus.c | |
parent | 63f3861d2fbf8ccbad1386ac9ac8b822c036ea00 (diff) | |
parent | 028d9b3cc62cb9dd31f1b5929edb3c23612cfccc (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] Poison init section before freeing it.
[S390] Use add_active_range() and free_area_init_nodes().
[S390] Virtual memmap for s390.
[S390] Update documentation for dynamic subchannel mapping.
[S390] Use dev->groups for adding/removing the subchannel attribute group.
[S390] Support for disconnected devices reappearing on another subchannel.
[S390] subchannel lock conversion.
[S390] Some preparations for the dynamic subchannel mapping patch.
[S390] runtime switch for qdio performance statistics
[S390] New DASD feature for ERP related logging
[S390] add reset call handler to the ap bus.
[S390] more workqueue fixes.
[S390] workqueue fixes.
[S390] uaccess_pt: add missing down_read() and convert to is_init().
Diffstat (limited to 'drivers/s390/crypto/ap_bus.c')
-rw-r--r-- | drivers/s390/crypto/ap_bus.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/drivers/s390/crypto/ap_bus.c b/drivers/s390/crypto/ap_bus.c index e4dc947e74e9..ad60afe5dd11 100644 --- a/drivers/s390/crypto/ap_bus.c +++ b/drivers/s390/crypto/ap_bus.c | |||
@@ -33,6 +33,7 @@ | |||
33 | #include <linux/kthread.h> | 33 | #include <linux/kthread.h> |
34 | #include <linux/mutex.h> | 34 | #include <linux/mutex.h> |
35 | #include <asm/s390_rdev.h> | 35 | #include <asm/s390_rdev.h> |
36 | #include <asm/reset.h> | ||
36 | 37 | ||
37 | #include "ap_bus.h" | 38 | #include "ap_bus.h" |
38 | 39 | ||
@@ -1128,6 +1129,19 @@ static void ap_poll_thread_stop(void) | |||
1128 | mutex_unlock(&ap_poll_thread_mutex); | 1129 | mutex_unlock(&ap_poll_thread_mutex); |
1129 | } | 1130 | } |
1130 | 1131 | ||
1132 | static void ap_reset(void) | ||
1133 | { | ||
1134 | int i, j; | ||
1135 | |||
1136 | for (i = 0; i < AP_DOMAINS; i++) | ||
1137 | for (j = 0; j < AP_DEVICES; j++) | ||
1138 | ap_reset_queue(AP_MKQID(j, i)); | ||
1139 | } | ||
1140 | |||
1141 | static struct reset_call ap_reset_call = { | ||
1142 | .fn = ap_reset, | ||
1143 | }; | ||
1144 | |||
1131 | /** | 1145 | /** |
1132 | * The module initialization code. | 1146 | * The module initialization code. |
1133 | */ | 1147 | */ |
@@ -1144,6 +1158,7 @@ int __init ap_module_init(void) | |||
1144 | printk(KERN_WARNING "AP instructions not installed.\n"); | 1158 | printk(KERN_WARNING "AP instructions not installed.\n"); |
1145 | return -ENODEV; | 1159 | return -ENODEV; |
1146 | } | 1160 | } |
1161 | register_reset_call(&ap_reset_call); | ||
1147 | 1162 | ||
1148 | /* Create /sys/bus/ap. */ | 1163 | /* Create /sys/bus/ap. */ |
1149 | rc = bus_register(&ap_bus_type); | 1164 | rc = bus_register(&ap_bus_type); |
@@ -1197,6 +1212,7 @@ out_bus: | |||
1197 | bus_remove_file(&ap_bus_type, ap_bus_attrs[i]); | 1212 | bus_remove_file(&ap_bus_type, ap_bus_attrs[i]); |
1198 | bus_unregister(&ap_bus_type); | 1213 | bus_unregister(&ap_bus_type); |
1199 | out: | 1214 | out: |
1215 | unregister_reset_call(&ap_reset_call); | ||
1200 | return rc; | 1216 | return rc; |
1201 | } | 1217 | } |
1202 | 1218 | ||
@@ -1227,6 +1243,7 @@ void ap_module_exit(void) | |||
1227 | for (i = 0; ap_bus_attrs[i]; i++) | 1243 | for (i = 0; ap_bus_attrs[i]; i++) |
1228 | bus_remove_file(&ap_bus_type, ap_bus_attrs[i]); | 1244 | bus_remove_file(&ap_bus_type, ap_bus_attrs[i]); |
1229 | bus_unregister(&ap_bus_type); | 1245 | bus_unregister(&ap_bus_type); |
1246 | unregister_reset_call(&ap_reset_call); | ||
1230 | } | 1247 | } |
1231 | 1248 | ||
1232 | #ifndef CONFIG_ZCRYPT_MONOLITHIC | 1249 | #ifndef CONFIG_ZCRYPT_MONOLITHIC |