|
@@ -214,9 +214,6 @@ static void initcall_debug_report(struct device *dev, ktime_t calltime,
|
|
|
pr_info("call %s+ returned %d after %Ld usecs\n", dev_name(dev),
|
|
|
error, (unsigned long long)nsecs >> 10);
|
|
|
}
|
|
|
-
|
|
|
- trace_device_pm_report_time(dev, info, nsecs, pm_verb(state.event),
|
|
|
- error);
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -387,7 +384,9 @@ static int dpm_run_callback(pm_callback_t cb, struct device *dev,
|
|
|
calltime = initcall_debug_start(dev);
|
|
|
|
|
|
pm_dev_dbg(dev, state, info);
|
|
|
+ trace_device_pm_callback_start(dev, info, state.event);
|
|
|
error = cb(dev);
|
|
|
+ trace_device_pm_callback_end(dev, error);
|
|
|
suspend_report_result(cb, error);
|
|
|
|
|
|
initcall_debug_report(dev, calltime, error, state, info);
|
|
@@ -545,6 +544,7 @@ static void dpm_resume_noirq(pm_message_t state)
|
|
|
struct device *dev;
|
|
|
ktime_t starttime = ktime_get();
|
|
|
|
|
|
+ trace_suspend_resume(TPS("dpm_resume_noirq"), state.event, true);
|
|
|
mutex_lock(&dpm_list_mtx);
|
|
|
pm_transition = state;
|
|
|
|
|
@@ -587,6 +587,7 @@ static void dpm_resume_noirq(pm_message_t state)
|
|
|
dpm_show_time(starttime, state, "noirq");
|
|
|
resume_device_irqs();
|
|
|
cpuidle_resume();
|
|
|
+ trace_suspend_resume(TPS("dpm_resume_noirq"), state.event, false);
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -664,6 +665,7 @@ static void dpm_resume_early(pm_message_t state)
|
|
|
struct device *dev;
|
|
|
ktime_t starttime = ktime_get();
|
|
|
|
|
|
+ trace_suspend_resume(TPS("dpm_resume_early"), state.event, true);
|
|
|
mutex_lock(&dpm_list_mtx);
|
|
|
pm_transition = state;
|
|
|
|
|
@@ -703,6 +705,7 @@ static void dpm_resume_early(pm_message_t state)
|
|
|
mutex_unlock(&dpm_list_mtx);
|
|
|
async_synchronize_full();
|
|
|
dpm_show_time(starttime, state, "early");
|
|
|
+ trace_suspend_resume(TPS("dpm_resume_early"), state.event, false);
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -834,6 +837,7 @@ void dpm_resume(pm_message_t state)
|
|
|
struct device *dev;
|
|
|
ktime_t starttime = ktime_get();
|
|
|
|
|
|
+ trace_suspend_resume(TPS("dpm_resume"), state.event, true);
|
|
|
might_sleep();
|
|
|
|
|
|
mutex_lock(&dpm_list_mtx);
|
|
@@ -875,6 +879,7 @@ void dpm_resume(pm_message_t state)
|
|
|
dpm_show_time(starttime, state, NULL);
|
|
|
|
|
|
cpufreq_resume();
|
|
|
+ trace_suspend_resume(TPS("dpm_resume"), state.event, false);
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -913,7 +918,9 @@ static void device_complete(struct device *dev, pm_message_t state)
|
|
|
|
|
|
if (callback) {
|
|
|
pm_dev_dbg(dev, state, info);
|
|
|
+ trace_device_pm_callback_start(dev, info, state.event);
|
|
|
callback(dev);
|
|
|
+ trace_device_pm_callback_end(dev, 0);
|
|
|
}
|
|
|
|
|
|
device_unlock(dev);
|
|
@@ -932,6 +939,7 @@ void dpm_complete(pm_message_t state)
|
|
|
{
|
|
|
struct list_head list;
|
|
|
|
|
|
+ trace_suspend_resume(TPS("dpm_complete"), state.event, true);
|
|
|
might_sleep();
|
|
|
|
|
|
INIT_LIST_HEAD(&list);
|
|
@@ -951,6 +959,7 @@ void dpm_complete(pm_message_t state)
|
|
|
}
|
|
|
list_splice(&list, &dpm_list);
|
|
|
mutex_unlock(&dpm_list_mtx);
|
|
|
+ trace_suspend_resume(TPS("dpm_complete"), state.event, false);
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -1086,6 +1095,7 @@ static int dpm_suspend_noirq(pm_message_t state)
|
|
|
ktime_t starttime = ktime_get();
|
|
|
int error = 0;
|
|
|
|
|
|
+ trace_suspend_resume(TPS("dpm_suspend_noirq"), state.event, true);
|
|
|
cpuidle_pause();
|
|
|
suspend_device_irqs();
|
|
|
mutex_lock(&dpm_list_mtx);
|
|
@@ -1126,6 +1136,7 @@ static int dpm_suspend_noirq(pm_message_t state)
|
|
|
} else {
|
|
|
dpm_show_time(starttime, state, "noirq");
|
|
|
}
|
|
|
+ trace_suspend_resume(TPS("dpm_suspend_noirq"), state.event, false);
|
|
|
return error;
|
|
|
}
|
|
|
|
|
@@ -1222,6 +1233,7 @@ static int dpm_suspend_late(pm_message_t state)
|
|
|
ktime_t starttime = ktime_get();
|
|
|
int error = 0;
|
|
|
|
|
|
+ trace_suspend_resume(TPS("dpm_suspend_late"), state.event, true);
|
|
|
mutex_lock(&dpm_list_mtx);
|
|
|
pm_transition = state;
|
|
|
async_error = 0;
|
|
@@ -1257,6 +1269,7 @@ static int dpm_suspend_late(pm_message_t state)
|
|
|
} else {
|
|
|
dpm_show_time(starttime, state, "late");
|
|
|
}
|
|
|
+ trace_suspend_resume(TPS("dpm_suspend_late"), state.event, false);
|
|
|
return error;
|
|
|
}
|
|
|
|
|
@@ -1295,7 +1308,9 @@ static int legacy_suspend(struct device *dev, pm_message_t state,
|
|
|
|
|
|
calltime = initcall_debug_start(dev);
|
|
|
|
|
|
+ trace_device_pm_callback_start(dev, info, state.event);
|
|
|
error = cb(dev, state);
|
|
|
+ trace_device_pm_callback_end(dev, error);
|
|
|
suspend_report_result(cb, error);
|
|
|
|
|
|
initcall_debug_report(dev, calltime, error, state, info);
|
|
@@ -1461,6 +1476,7 @@ int dpm_suspend(pm_message_t state)
|
|
|
ktime_t starttime = ktime_get();
|
|
|
int error = 0;
|
|
|
|
|
|
+ trace_suspend_resume(TPS("dpm_suspend"), state.event, true);
|
|
|
might_sleep();
|
|
|
|
|
|
cpufreq_suspend();
|
|
@@ -1498,6 +1514,7 @@ int dpm_suspend(pm_message_t state)
|
|
|
dpm_save_failed_step(SUSPEND_SUSPEND);
|
|
|
} else
|
|
|
dpm_show_time(starttime, state, NULL);
|
|
|
+ trace_suspend_resume(TPS("dpm_suspend"), state.event, false);
|
|
|
return error;
|
|
|
}
|
|
|
|
|
@@ -1549,8 +1566,11 @@ static int device_prepare(struct device *dev, pm_message_t state)
|
|
|
callback = dev->driver->pm->prepare;
|
|
|
}
|
|
|
|
|
|
- if (callback)
|
|
|
+ if (callback) {
|
|
|
+ trace_device_pm_callback_start(dev, info, state.event);
|
|
|
ret = callback(dev);
|
|
|
+ trace_device_pm_callback_end(dev, ret);
|
|
|
+ }
|
|
|
|
|
|
device_unlock(dev);
|
|
|
|
|
@@ -1582,6 +1602,7 @@ int dpm_prepare(pm_message_t state)
|
|
|
{
|
|
|
int error = 0;
|
|
|
|
|
|
+ trace_suspend_resume(TPS("dpm_prepare"), state.event, true);
|
|
|
might_sleep();
|
|
|
|
|
|
mutex_lock(&dpm_list_mtx);
|
|
@@ -1612,6 +1633,7 @@ int dpm_prepare(pm_message_t state)
|
|
|
put_device(dev);
|
|
|
}
|
|
|
mutex_unlock(&dpm_list_mtx);
|
|
|
+ trace_suspend_resume(TPS("dpm_prepare"), state.event, false);
|
|
|
return error;
|
|
|
}
|
|
|
|