Merge "soc: qcom: service-notifier: Use high priority wq for PDR"
diff --git a/drivers/soc/qcom/service-notifier.c b/drivers/soc/qcom/service-notifier.c
index 1e84001..c1cb843 100644
--- a/drivers/soc/qcom/service-notifier.c
+++ b/drivers/soc/qcom/service-notifier.c
@@ -106,6 +106,7 @@
static LIST_HEAD(qmi_client_list);
static DEFINE_MUTEX(qmi_list_lock);
static DEFINE_MUTEX(notif_add_lock);
+static struct workqueue_struct *pdr_wq;
static struct service_notif_info *_find_service_info(const char *service_path)
{
@@ -226,7 +227,7 @@
snprintf(qmi_data->ind_msg.service_path,
ARRAY_SIZE(qmi_data->ind_msg.service_path), "%s",
ind_msg.service_name);
- schedule_work(&qmi_data->ind_ack);
+ queue_work(pdr_wq, &qmi_data->ind_ack);
}
static int send_notif_listener_msg_req(struct service_notif_info *service_notif,
@@ -700,3 +701,14 @@
&service_notif->service_notif_rcvr_list, nb);
}
EXPORT_SYMBOL(service_notif_unregister_notifier);
+
+static int __init service_notif_init(void)
+{
+
+ pdr_wq = alloc_workqueue("pdr_wq", WQ_CPU_INTENSIVE | WQ_UNBOUND |
+ WQ_HIGHPRI, 0);
+ BUG_ON(!pdr_wq);
+
+ return 0;
+}
+arch_initcall(service_notif_init);