[PATCH net-next 0/5] net: ipa: kill off ipa_clock_get()

From: Alex Elder
Date: Thu Aug 19 2021 - 18:19:36 EST


This series replaces the remaining uses of ipa_clock_get() with
calls to pm_runtime_get_sync() instead. It replaces all calls to
ipa_clock_put() with calls to pm_runtime_put().

This completes the preparation for enabling automated suspend under
the control of the power management core code. The next patch (in
an upcoming series) enables that. Then the "ipa_clock" files and
symbols will switch to using an "ipa_power" naming convention instead.

Additional info

It is possible for pm_runtime_get_sync() to return an error. There
are really three cases, identified by return value:
- 1, meaning power was already active
- 0, meaning power was not previously active, but is now
- EACCES, meaning runtime PM is disabled
One additional case is EINVAL, meaning a previous suspend or resume
(or idle) call returned an error. But we have always assumed this
won't happen (we previously didn't even check for an error).

But because we use pm_runtime_force_suspend() to implement system
suspend, there's a chance we'd get an EACCES error (the first thing
that function does is disable runtime suspend). Individual patches
explain what happens in that case, but generally we just accept that
it could be an unlikely problem (occurring only at startup time).

Similarly, pm_runtime_put() could return an error. There too, we
ignore EINVAL, assuming the IPA suspend and resume operations won't
produce an error. EBUSY and EPERM are not applicable, EAGAIN is not
expected (and harmless). We should never get EACCES (runtime
suspend disabled), because pm_runtime_put() calls match prior
pm_runtime_get_sync() calls, and a system suspend will not be
started while a runtime suspend or resume is underway. In summary,
the value returned from pm_runtime_put() is not meaningful, so we
explicitly ignore it.

-Alex

Alex Elder (5):
net: ipa: don't use ipa_clock_get() in "ipa_main.c"
net: ipa: don't use ipa_clock_get() in "ipa_smp2p.c"
net: ipa: don't use ipa_clock_get() in "ipa_uc.c"
net: ipa: don't use ipa_clock_get() in "ipa_modem.c"
net: ipa: kill ipa_clock_get()

drivers/net/ipa/ipa_clock.c | 17 --------------
drivers/net/ipa/ipa_clock.h | 24 --------------------
drivers/net/ipa/ipa_interrupt.c | 14 ++++++------
drivers/net/ipa/ipa_main.c | 21 ++++++++---------
drivers/net/ipa/ipa_modem.c | 40 +++++++++++++++++++--------------
drivers/net/ipa/ipa_smp2p.c | 19 +++++++++-------
drivers/net/ipa/ipa_uc.c | 22 ++++++++++--------
7 files changed, 65 insertions(+), 92 deletions(-)

--
2.27.0