mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-21 16:29:59 +00:00
PM-runtime: Optimize pm_runtime_autosuspend_expiration()
pm_runtime_autosuspend_expiration calls ktime_get_mono_fast_ns() even when its returned value may be unused. Therefore get the current time later and remove gotos while there. Signed-off-by: Ladislav Michl <ladis@linux-mips.org> Acked-by: Tony Lindgren <tony@atomide.com> Acked-by: Vincent Guittot <vincent.guittot@linaro.org> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:
parent
1cc9c59569
commit
f800ea320c
1 changed files with 8 additions and 11 deletions
|
@ -145,24 +145,21 @@ static void pm_runtime_cancel_pending(struct device *dev)
|
|||
u64 pm_runtime_autosuspend_expiration(struct device *dev)
|
||||
{
|
||||
int autosuspend_delay;
|
||||
u64 last_busy, expires = 0;
|
||||
u64 now = ktime_get_mono_fast_ns();
|
||||
u64 expires;
|
||||
|
||||
if (!dev->power.use_autosuspend)
|
||||
goto out;
|
||||
return 0;
|
||||
|
||||
autosuspend_delay = READ_ONCE(dev->power.autosuspend_delay);
|
||||
if (autosuspend_delay < 0)
|
||||
goto out;
|
||||
return 0;
|
||||
|
||||
last_busy = READ_ONCE(dev->power.last_busy);
|
||||
expires = READ_ONCE(dev->power.last_busy);
|
||||
expires += (u64)autosuspend_delay * NSEC_PER_MSEC;
|
||||
if (expires > ktime_get_mono_fast_ns())
|
||||
return expires; /* Expires in the future */
|
||||
|
||||
expires = last_busy + (u64)autosuspend_delay * NSEC_PER_MSEC;
|
||||
if (expires <= now)
|
||||
expires = 0; /* Already expired. */
|
||||
|
||||
out:
|
||||
return expires;
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(pm_runtime_autosuspend_expiration);
|
||||
|
||||
|
|
Loading…
Reference in a new issue