|
@@ -1218,11 +1218,10 @@ static struct bus_attribute *const ap_bus_attrs[] = {
|
|
|
};
|
|
|
|
|
|
/**
|
|
|
- * ap_select_domain(): Select an AP domain.
|
|
|
- *
|
|
|
- * Pick one of the 16 AP domains.
|
|
|
+ * ap_select_domain(): Select an AP domain if possible and we haven't
|
|
|
+ * already done so before.
|
|
|
*/
|
|
|
-static int ap_select_domain(void)
|
|
|
+static void ap_select_domain(void)
|
|
|
{
|
|
|
int count, max_count, best_domain;
|
|
|
struct ap_queue_status status;
|
|
@@ -1237,7 +1236,7 @@ static int ap_select_domain(void)
|
|
|
if (ap_domain_index >= 0) {
|
|
|
/* Domain has already been selected. */
|
|
|
spin_unlock_bh(&ap_domain_lock);
|
|
|
- return 0;
|
|
|
+ return;
|
|
|
}
|
|
|
best_domain = -1;
|
|
|
max_count = 0;
|
|
@@ -1264,11 +1263,8 @@ static int ap_select_domain(void)
|
|
|
if (best_domain >= 0) {
|
|
|
ap_domain_index = best_domain;
|
|
|
AP_DBF(DBF_DEBUG, "new ap_domain_index=%d\n", ap_domain_index);
|
|
|
- spin_unlock_bh(&ap_domain_lock);
|
|
|
- return 0;
|
|
|
}
|
|
|
spin_unlock_bh(&ap_domain_lock);
|
|
|
- return -ENODEV;
|
|
|
}
|
|
|
|
|
|
/*
|
|
@@ -1346,8 +1342,7 @@ static void ap_scan_bus(struct work_struct *unused)
|
|
|
AP_DBF(DBF_DEBUG, "%s running\n", __func__);
|
|
|
|
|
|
ap_query_configuration(ap_configuration);
|
|
|
- if (ap_select_domain() != 0)
|
|
|
- goto out;
|
|
|
+ ap_select_domain();
|
|
|
|
|
|
for (id = 0; id < AP_DEVICES; id++) {
|
|
|
/* check if device is registered */
|
|
@@ -1467,12 +1462,11 @@ static void ap_scan_bus(struct work_struct *unused)
|
|
|
}
|
|
|
} /* end device loop */
|
|
|
|
|
|
- if (defdomdevs < 1)
|
|
|
+ if (ap_domain_index >= 0 && defdomdevs < 1)
|
|
|
AP_DBF(DBF_INFO,
|
|
|
"no queue device with default domain %d available\n",
|
|
|
ap_domain_index);
|
|
|
|
|
|
-out:
|
|
|
mod_timer(&ap_config_timer, jiffies + ap_config_time * HZ);
|
|
|
}
|
|
|
|