Merge "soc: qcom: Free qmi handle in a worker thread"
This commit is contained in:
commit
405c831196
1 changed files with 7 additions and 6 deletions
|
@ -99,6 +99,7 @@ struct ind_req_resp {
|
||||||
*/
|
*/
|
||||||
struct qmi_client_info {
|
struct qmi_client_info {
|
||||||
int instance_id;
|
int instance_id;
|
||||||
|
int subsys_state;
|
||||||
struct work_struct svc_arrive;
|
struct work_struct svc_arrive;
|
||||||
struct work_struct svc_exit;
|
struct work_struct svc_exit;
|
||||||
struct work_struct svc_rcv_msg;
|
struct work_struct svc_rcv_msg;
|
||||||
|
@ -436,7 +437,7 @@ static void root_service_exit_work(struct work_struct *work)
|
||||||
{
|
{
|
||||||
struct qmi_client_info *data = container_of(work,
|
struct qmi_client_info *data = container_of(work,
|
||||||
struct qmi_client_info, svc_exit);
|
struct qmi_client_info, svc_exit);
|
||||||
root_service_service_exit(data, ROOT_PD_DOWN);
|
root_service_service_exit(data, data->subsys_state);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int service_event_notify(struct notifier_block *this,
|
static int service_event_notify(struct notifier_block *this,
|
||||||
|
@ -453,6 +454,7 @@ static int service_event_notify(struct notifier_block *this,
|
||||||
break;
|
break;
|
||||||
case QMI_SERVER_EXIT:
|
case QMI_SERVER_EXIT:
|
||||||
pr_debug("Root PD service DOWN\n");
|
pr_debug("Root PD service DOWN\n");
|
||||||
|
data->subsys_state = ROOT_PD_DOWN;
|
||||||
queue_work(data->svc_event_wq, &data->svc_exit);
|
queue_work(data->svc_event_wq, &data->svc_exit);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -468,7 +470,6 @@ static int ssr_event_notify(struct notifier_block *this,
|
||||||
struct qmi_client_info *info = container_of(this,
|
struct qmi_client_info *info = container_of(this,
|
||||||
struct qmi_client_info, ssr_notifier);
|
struct qmi_client_info, ssr_notifier);
|
||||||
struct notif_data *notif = data;
|
struct notif_data *notif = data;
|
||||||
enum pd_subsys_state state;
|
|
||||||
|
|
||||||
switch (code) {
|
switch (code) {
|
||||||
case SUBSYS_BEFORE_SHUTDOWN:
|
case SUBSYS_BEFORE_SHUTDOWN:
|
||||||
|
@ -476,16 +477,16 @@ static int ssr_event_notify(struct notifier_block *this,
|
||||||
notif->crashed);
|
notif->crashed);
|
||||||
switch (notif->crashed) {
|
switch (notif->crashed) {
|
||||||
case CRASH_STATUS_ERR_FATAL:
|
case CRASH_STATUS_ERR_FATAL:
|
||||||
state = ROOT_PD_ERR_FATAL;
|
info->subsys_state = ROOT_PD_ERR_FATAL;
|
||||||
break;
|
break;
|
||||||
case CRASH_STATUS_WDOG_BITE:
|
case CRASH_STATUS_WDOG_BITE:
|
||||||
state = ROOT_PD_WDOG_BITE;
|
info->subsys_state = ROOT_PD_WDOG_BITE;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
state = ROOT_PD_SHUTDOWN;
|
info->subsys_state = ROOT_PD_SHUTDOWN;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
root_service_service_exit(info, state);
|
queue_work(info->svc_event_wq, &info->svc_exit);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Add table
Reference in a new issue