On Tue, Jul 30, 2019 at 07:57:46AM -0500, Pierre-Louis Bossart wrote:
On 7/30/19 6:21 AM, Andy Shevchenko wrote:
On Mon, Jul 29, 2019 at 05:07:39PM -0500, Pierre-Louis Bossart wrote:
On 7/26/19 2:08 PM, Andy Shevchenko wrote:
On Fri, Jul 26, 2019 at 01:08:57PM -0500, Pierre-Louis Bossart wrote:
- if (ret < 0)
- if (ret < 0 && ret != -EACCES)
...and here, the pm_runtime_put_noidle() call is missed.
yes but in the example you provided, they actually do more work than just decrement the device usage counter:
In their case they would like to do that. You decide what is appropriate call in your case.
My point is, that reference counter in case of error handling should be returned back to its value.
Agree on the reference count. I am however not clear on the next step and 'what is appropriate'.
If pm_runtime_get_sync() failed, then technically the device was not resumed
Not so straight. It depends on reference count. It might be true (most cases I think), or not true, if device had been resumed previously by other call.
so marking it as last_busy+autosuspend, or using a plain vanilla put() will not result in any action. I must be missing something here.
put_noidle(). Because if it failed on the first call and was resumed, put() will try to shut it down (since reference count goes to no-user base).