Skip to content

Commit ef8057b

Browse files
committed
PM: runtime: Wrapper macros for ACQUIRE()/ACQUIRE_ERR()
Add wrapper macros for ACQUIRE()/ACQUIRE_ERR() and runtime PM usage counter guards introduced recently: pm_runtime_active_try, pm_runtime_active_auto_try, pm_runtime_active_try_enabled, and pm_runtime_active_auto_try_enabled. The new macros should be more straightforward to use. For example, they can be used for rewriting a piece of code like below: ACQUIRE(pm_runtime_active_try, pm)(dev); if ((ret = ACQUIRE_ERR(pm_runtime_active_try, &pm))) return ret; in the following way: PM_RUNTIME_ACQUIRE(dev, pm); if ((ret = PM_RUNTIME_ACQUIRE_ERR(&pm))) return ret; If the original code does not care about the specific error code returned when attepmting to resume the device: ACQUIRE(pm_runtime_active_try, pm)(dev); if (ACQUIRE_ERR(pm_runtime_active_try, &pm)) return -ENXIO; it may be changed like this: PM_RUNTIME_ACQUIRE(dev, pm); if (PM_RUNTIME_ACQUIRE_ERR(&pm)) return -ENXIO; Link: https://lore.kernel.org/linux-pm/5068916.31r3eYUQgx@rafael.j.wysocki/ Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> Reviewed-by: Dan Williams <dan.j.williams@intel.com> Reviewed-by: Dhruva Gole <d-gole@ti.com> Reviewed-by: Jonathan Cameron <jonathan.cameron@huawei.com> Reviewed-by: Frank Li <Frank.Li@nxp.com> Link: https://patch.msgid.link/3400866.aeNJFYEL58@rafael.j.wysocki
1 parent bdfacf4 commit ef8057b

1 file changed

Lines changed: 24 additions & 0 deletions

File tree

include/linux/pm_runtime.h

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -637,6 +637,30 @@ DEFINE_GUARD_COND(pm_runtime_active_auto, _try,
637637
DEFINE_GUARD_COND(pm_runtime_active_auto, _try_enabled,
638638
pm_runtime_resume_and_get(_T), _RET == 0)
639639

640+
/* ACQUIRE() wrapper macros for the guards defined above. */
641+
642+
#define PM_RUNTIME_ACQUIRE(_dev, _var) \
643+
ACQUIRE(pm_runtime_active_try, _var)(_dev)
644+
645+
#define PM_RUNTIME_ACQUIRE_AUTOSUSPEND(_dev, _var) \
646+
ACQUIRE(pm_runtime_active_auto_try, _var)(_dev)
647+
648+
#define PM_RUNTIME_ACQUIRE_IF_ENABLED(_dev, _var) \
649+
ACQUIRE(pm_runtime_active_try_enabled, _var)(_dev)
650+
651+
#define PM_RUNTIME_ACQUIRE_IF_ENABLED_AUTOSUSPEND(_dev, _var) \
652+
ACQUIRE(pm_runtime_active_auto_try_enabled, _var)(_dev)
653+
654+
/*
655+
* ACQUIRE_ERR() wrapper macro for guard pm_runtime_active.
656+
*
657+
* Always check PM_RUNTIME_ACQUIRE_ERR() after using one of the
658+
* PM_RUNTIME_ACQUIRE*() macros defined above (yes, it can be used with
659+
* any of them) and if it is nonzero, avoid accessing the given device.
660+
*/
661+
#define PM_RUNTIME_ACQUIRE_ERR(_var_ptr) \
662+
ACQUIRE_ERR(pm_runtime_active, _var_ptr)
663+
640664
/**
641665
* pm_runtime_put_sync - Drop device usage counter and run "idle check" if 0.
642666
* @dev: Target device.

0 commit comments

Comments
 (0)