diff options
author | venu byravarasu <vbyravarasu@nvidia.com> | 2011-10-25 11:34:18 +0530 |
---|---|---|
committer | Dan Willemsen <dwillemsen@nvidia.com> | 2011-11-30 21:49:33 -0800 |
commit | 9c235136fb8513f8f5033bfbf25e061a703fedf6 (patch) | |
tree | a0780f211e3c126429897ae49452d8fffb79d155 /drivers/base/power/runtime.c | |
parent | a4f6c55fc4d7cb10d563a965ae9cabb6a5369081 (diff) |
PM: fix calculation mistake in roll-over cases
In case of jiffies roll over, delta is made zero.
Hence fixing it, after taking roll over into consideration.
Change-Id: I7dacaa12deafbd2bd20705948c0e18292b718aa4
Reviewed-on: http://git-master/r/60147
Reviewed-by: Varun Colbert <vcolbert@nvidia.com>
Tested-by: Varun Colbert <vcolbert@nvidia.com>
Rebase-Id: R0fa2027be53f95c16e11e8ea46c833c86182a3a9
Diffstat (limited to 'drivers/base/power/runtime.c')
-rw-r--r-- | drivers/base/power/runtime.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/drivers/base/power/runtime.c b/drivers/base/power/runtime.c index 6a7f7b06968f..535e6e63b9df 100644 --- a/drivers/base/power/runtime.c +++ b/drivers/base/power/runtime.c @@ -28,12 +28,13 @@ static int rpm_suspend(struct device *dev, int rpmflags); void update_pm_runtime_accounting(struct device *dev) { unsigned long now = jiffies; - int delta; + unsigned long delta; + unsigned long max_num = ~0; delta = now - dev->power.accounting_timestamp; - if (delta < 0) - delta = 0; + if (now < dev->power.accounting_timestamp) + delta = max_num - dev->power.accounting_timestamp + now; dev->power.accounting_timestamp = now; |