PM/runtime: Do not needlessly call ktime_get
Subsystems (4)
PATCH 1/1 PM/runtime: Do not needlessly call ktime_get
pm_runtime_autosuspend_expiration calls ktime_get even when its returned value may be unused. Therefore get current time later and remove gotos while there.
---
NOTE: Depends on Vincent's "[PATCH v2] PM/runtime: Fix autosuspend_delay
on 32bits arch"!
drivers/base/power/runtime.c | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-)
drivers/base/power/runtime.c +8 -11
@@ -129,24 +129,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_to_ns (ktime_get ()); +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; - - last_busy =READ_ONCE (dev->power.last_busy); +return 0 ; - expires = last_busy + (u64 )autosuspend_delay *NSEC_PER_MSEC ; -if (expires <= now) - expires =0 ;/* Already expired. */ + expires =READ_ONCE (dev->power.last_busy); + expires += (u64 )autosuspend_delay *NSEC_PER_MSEC ; +if (expires >ktime_to_ns (ktime_get ())) +return expires;/* Expires in the future */ - out: -return expires; +return 0 ; }EXPORT_SYMBOL_GPL (pm_runtime_autosuspend_expiration);
Signature · 1 line
2.20.1
Quoted 3 lines · Ladislav Michl
pm_runtime_autosuspend_expirationcallsktime_geteven when its returned value may be unused. Therefore get current time later and remove gotos while there.
Quoted 6 lines · Ladislav Michl
pm_runtime_autosuspend_expirationcallsktime_geteven when its returned value may be unused. Therefore get current time later and remove gotos while there.Signed-off-by Ladislav Michl <[email protected]>
Quoted 47 lines
---
NOTE: Depends on Vincent's "[PATCH v2] PM/runtime: Fixautosuspend_delay
on 32bits arch"!drivers/base/power/runtime.c | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-)drivers/base/power/runtime.c +8
-12@@ -129,24 +129,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_to_ns (ktime_get ()); +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; - - last_busy =READ_ONCE (dev->power.last_busy); +return 0 ; - expires = last_busy + (u64 )autosuspend_delay *NSEC_PER_MSEC ; -if (expires <= now) - expires =0 ;/* Already expired. */ + expires =READ_ONCE (dev->power.last_busy); + expires += (u64 )autosuspend_delay *NSEC_PER_MSEC ; +if (expires >ktime_to_ns (ktime_get ())) +return expires;/* Expires in the future */ - out: -return expires; +return 0 ; }EXPORT_SYMBOL_GPL (pm_runtime_autosuspend_expiration); --2.20.1
Quoted 9 lines · CET Vincent Guittot
Quoted 6 lines · Ladislav Michl
pm_runtime_autosuspend_expirationcallsktime_geteven when its returned value may be unused. Therefore get current time later and remove gotos while there.Signed-off-by Ladislav Michl <[email protected]>Acked-by Vincent Guittot <[email protected]>
Patch applied, thanks!