diff options
author | Nitin Kumbhar <nkumbhar@nvidia.com> | 2011-01-28 13:39:17 +0530 |
---|---|---|
committer | Nitin Kumbhar <nkumbhar@nvidia.com> | 2011-01-28 13:39:17 +0530 |
commit | 8197cb15eaf0640d13c816926f65972ca6cbba84 (patch) | |
tree | 17b034f1f03a3d1b7776001cb63bdfd186415130 /drivers/base/power/main.c | |
parent | 7cc7de288765bc634a0374e660de01a3fd4e8e39 (diff) | |
parent | 22b3c9ca22924cf7015ecadf7ce111cf402a707b (diff) |
merging android-tegra-2.6.36 into git-master/linux-2.6/android-tegra-2.6.36
Conflicts:
arch/arm/mach-tegra/tegra2_dvfs.c
Change-Id: I3853d668107c191c94f731256a8d0b63149e8279
Diffstat (limited to 'drivers/base/power/main.c')
-rw-r--r-- | drivers/base/power/main.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/drivers/base/power/main.c b/drivers/base/power/main.c index 4a57ecc4ead9..33f9aafb47fb 100644 --- a/drivers/base/power/main.c +++ b/drivers/base/power/main.c @@ -48,6 +48,10 @@ static pm_message_t pm_transition; static void dpm_drv_timeout(unsigned long data); static DEFINE_TIMER(dpm_drv_wd, dpm_drv_timeout, 0, 0); +static struct { + struct device *dev; + struct task_struct *tsk; +} dpm_drv_wd_data; /* * Set once the preparation of devices for a PM transition has started, reset @@ -601,10 +605,15 @@ static bool is_async(struct device *dev) */ static void dpm_drv_timeout(unsigned long data) { - struct device *dev = (struct device *) data; + struct device *dev = dpm_drv_wd_data.dev; + struct task_struct *tsk = dpm_drv_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(); } @@ -615,7 +624,9 @@ static void dpm_drv_timeout(unsigned long data) */ static void dpm_drv_wdset(struct device *dev) { - dpm_drv_wd.data = (unsigned long) dev; + dpm_drv_wd_data.dev = dev; + dpm_drv_wd_data.tsk = get_current(); + dpm_drv_wd.data = (unsigned long) &dpm_drv_wd_data; mod_timer(&dpm_drv_wd, jiffies + (HZ * 3)); } |