Revert "drivers: power: Add watchdog timer to catch drivers which lockup during suspend."
authorLianwei Wang <lianwei.wang@gmail.com>
Fri, 6 May 2016 07:17:57 +0000 (00:17 -0700)
committerAmit Pundir <amit.pundir@linaro.org>
Thu, 19 May 2016 07:05:13 +0000 (12:35 +0530)
This reverts commit ad86cc8ad63229eeeba0628e99f2f59df55a25fd.

Commit 70fea60d888d ("PM / Sleep: Detect device suspend/resume lockup...")
added a suspend/resume watchdog timer to catch the lockup. Let's revert the
duplicate one.

Change-Id: Ic72a87432e27844155467817600adc6cf0c2209c
Signed-off-by: Lianwei Wang <lianwei.wang@gmail.com>
Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
drivers/base/power/main.c

index 6ed8b932662967f37f3826a1da56cf621c6eddbb..2f7a6e1b568c0b658b39aa693d40b980aa8da906 100644 (file)
@@ -62,12 +62,6 @@ struct suspend_stats suspend_stats;
 static DEFINE_MUTEX(dpm_list_mtx);
 static pm_message_t pm_transition;
 
-static void dpm_drv_timeout(unsigned long data);
-struct dpm_drv_wd_data {
-       struct device *dev;
-       struct task_struct *tsk;
-};
-
 static int async_error;
 
 static char *pm_verb(int event)
@@ -838,30 +832,6 @@ static void async_resume(void *data, async_cookie_t cookie)
        put_device(dev);
 }
 
-/**
- *     dpm_drv_timeout - Driver suspend / resume watchdog handler
- *     @data: struct device which timed out
- *
- *     Called when a driver has timed out suspending or resuming.
- *     There's not much we can do here to recover so
- *     BUG() out for a crash-dump
- *
- */
-static void dpm_drv_timeout(unsigned long data)
-{
-       struct dpm_drv_wd_data *wd_data = (void *)data;
-       struct device *dev = wd_data->dev;
-       struct task_struct *tsk = wd_data->tsk;
-
-       printk(KERN_EMERG "**** DPM device timeout: %s (%s)\n", dev_name(dev),
-              (dev->driver ? dev->driver->name : "no driver"));
-
-       printk(KERN_EMERG "dpm suspend stack:\n");
-       show_stack(tsk, NULL);
-
-       BUG();
-}
-
 /**
  * dpm_resume - Execute "resume" callbacks for non-sysdev devices.
  * @state: PM transition of the system being carried out.
@@ -1380,8 +1350,6 @@ static int __device_suspend(struct device *dev, pm_message_t state, bool async)
        pm_callback_t callback = NULL;
        char *info = NULL;
        int error = 0;
-       struct timer_list timer;
-       struct dpm_drv_wd_data data;
        char suspend_abort[MAX_SUSPEND_ABORT_LEN];
        DECLARE_DPM_WATCHDOG_ON_STACK(wd);
 
@@ -1412,14 +1380,6 @@ static int __device_suspend(struct device *dev, pm_message_t state, bool async)
 
        if (dev->power.syscore)
                goto Complete;
-       
-       data.dev = dev;
-       data.tsk = current;
-       init_timer_on_stack(&timer);
-       timer.expires = jiffies + HZ * 12;
-       timer.function = dpm_drv_timeout;
-       timer.data = (unsigned long)&data;
-       add_timer(&timer);
 
        if (dev->power.direct_complete) {
                if (pm_runtime_status_suspended(dev)) {
@@ -1500,9 +1460,6 @@ static int __device_suspend(struct device *dev, pm_message_t state, bool async)
        device_unlock(dev);
        dpm_watchdog_clear(&wd);
 
-       del_timer_sync(&timer);
-       destroy_timer_on_stack(&timer);
-
  Complete:
        complete_all(&dev->power.completion);
        if (error)