summaryrefslogtreecommitdiff
path: root/drivers/s390/crypto/ap_bus.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/s390/crypto/ap_bus.c')
-rw-r--r--drivers/s390/crypto/ap_bus.c27
1 files changed, 20 insertions, 7 deletions
diff --git a/drivers/s390/crypto/ap_bus.c b/drivers/s390/crypto/ap_bus.c
index e04369a12d45..2027baec995c 100644
--- a/drivers/s390/crypto/ap_bus.c
+++ b/drivers/s390/crypto/ap_bus.c
@@ -104,8 +104,8 @@ debug_info_t *ap_dbf_info;
static atomic64_t ap_scan_bus_count; /* counter ap_scan_bus() invocations */
static int ap_scan_bus_time = AP_CONFIG_TIME;
static struct timer_list ap_scan_bus_timer;
-static void ap_scan_bus(struct work_struct *);
-static DECLARE_WORK(ap_scan_bus_work, ap_scan_bus);
+static void ap_scan_bus_wq_callback(struct work_struct *);
+static DECLARE_WORK(ap_scan_bus_work, ap_scan_bus_wq_callback);
/*
* Tasklet & timer for AP request polling and interrupts
@@ -2179,12 +2179,13 @@ static bool ap_config_has_new_doms(void)
/**
* ap_scan_bus(): Scan the AP bus for new devices
- * Runs periodically, workqueue timer (ap_scan_bus_time)
- * @unused: Unused pointer.
+ * Returns true if any config change has been detected
+ * otherwise false.
*/
-static void ap_scan_bus(struct work_struct *unused)
+static bool ap_scan_bus(void)
{
- int ap, config_changed = 0;
+ bool config_changed;
+ int ap;
pr_debug(">%s\n", __func__);
@@ -2235,11 +2236,14 @@ static void ap_scan_bus(struct work_struct *unused)
mod_timer(&ap_scan_bus_timer, jiffies + ap_scan_bus_time * HZ);
- pr_debug("<%s\n", __func__);
+ pr_debug("<%s config_changed=%d\n", __func__, config_changed);
+
+ return config_changed;
}
/*
* Callback for the ap_scan_bus_timer
+ * Runs periodically, workqueue timer (ap_scan_bus_time)
*/
static void ap_scan_bus_timer_callback(struct timer_list *unused)
{
@@ -2250,6 +2254,15 @@ static void ap_scan_bus_timer_callback(struct timer_list *unused)
queue_work(system_long_wq, &ap_scan_bus_work);
}
+/*
+ * Callback for the ap_scan_bus_work
+ */
+static void ap_scan_bus_wq_callback(struct work_struct *unused)
+{
+ /* now finally do the AP bus scan */
+ ap_scan_bus();
+}
+
static int __init ap_debug_init(void)
{
ap_dbf_info = debug_register("ap", 2, 1,