projects
/
powerpc.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'for-linus' of ssh://master.kernel.org/pub/scm/linux/kernel/git/ieee1394...
[powerpc.git]
/
drivers
/
s390
/
crypto
/
ap_bus.c
diff --git
a/drivers/s390/crypto/ap_bus.c
b/drivers/s390/crypto/ap_bus.c
index
ad60afe
..
c7d1355
100644
(file)
--- a/
drivers/s390/crypto/ap_bus.c
+++ b/
drivers/s390/crypto/ap_bus.c
@@
-465,7
+465,7
@@
static int ap_device_probe(struct device *dev)
* Flush all requests from the request/pending queue of an AP device.
* @ap_dev: pointer to the AP device.
*/
* Flush all requests from the request/pending queue of an AP device.
* @ap_dev: pointer to the AP device.
*/
-static
inline
void __ap_flush_queue(struct ap_device *ap_dev)
+static void __ap_flush_queue(struct ap_device *ap_dev)
{
struct ap_message *ap_msg, *next;
{
struct ap_message *ap_msg, *next;
@@
-587,7
+587,7
@@
static struct bus_attribute *const ap_bus_attrs[] = {
/**
* Pick one of the 16 ap domains.
*/
/**
* Pick one of the 16 ap domains.
*/
-static in
line in
t ap_select_domain(void)
+static int ap_select_domain(void)
{
int queue_depth, device_type, count, max_count, best_domain;
int rc, i, j;
{
int queue_depth, device_type, count, max_count, best_domain;
int rc, i, j;
@@
-825,7
+825,7
@@
static inline void ap_schedule_poll_timer(void)
* required, bit 2^1 is set if the poll timer needs to get armed
* Returns 0 if the device is still present, -ENODEV if not.
*/
* required, bit 2^1 is set if the poll timer needs to get armed
* Returns 0 if the device is still present, -ENODEV if not.
*/
-static in
line in
t ap_poll_read(struct ap_device *ap_dev, unsigned long *flags)
+static int ap_poll_read(struct ap_device *ap_dev, unsigned long *flags)
{
struct ap_queue_status status;
struct ap_message *ap_msg;
{
struct ap_queue_status status;
struct ap_message *ap_msg;
@@
-872,7
+872,7
@@
static inline int ap_poll_read(struct ap_device *ap_dev, unsigned long *flags)
* required, bit 2^1 is set if the poll timer needs to get armed
* Returns 0 if the device is still present, -ENODEV if not.
*/
* required, bit 2^1 is set if the poll timer needs to get armed
* Returns 0 if the device is still present, -ENODEV if not.
*/
-static in
line in
t ap_poll_write(struct ap_device *ap_dev, unsigned long *flags)
+static int ap_poll_write(struct ap_device *ap_dev, unsigned long *flags)
{
struct ap_queue_status status;
struct ap_message *ap_msg;
{
struct ap_queue_status status;
struct ap_message *ap_msg;
@@
-1129,7
+1129,15
@@
static void ap_poll_thread_stop(void)
mutex_unlock(&ap_poll_thread_mutex);
}
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;
{
int i, j;
@@
-1139,7
+1147,7
@@
static void ap_reset(void)
}
static struct reset_call ap_reset_call = {
}
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;
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);
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)))
s390_root_dev_unregister(ap_root_device);
while ((dev = bus_find_device(&ap_bus_type, NULL, NULL,
__ap_match_all)))