Message ID | 20210608090250.85256-1-ulf.hansson@linaro.org |
---|---|
Headers | show |
Series | PM: runtime: Update behaviour for no callbacks | expand |
On Tue, Jun 08, 2021 at 11:02:47AM +0200, Ulf Hansson wrote: > While reviewing a patch on the mmc-list, I ended up inspecting the behaviour of > how we deal with the no callback case for runtime PM. > > A couple of observations: > > *) When pm_runtime_no_callbacks() have been called, it allows the PM core to > takes a quicker path, but at the same time, consumer/supplier device links are > being skipped in rpm_resume|suspend(). > > **) Calling pm_runtime_no_callbacks() to avoid boiler plate code (assigning > empty functions to ->runtime_suspend|resume()), doesn't work if there could be > consumer/supplier device link being used or a platform dependent PM domain that > could get attached to the device. > > Therefore, this series suggests to change the behaviour in the PM core, to > allow the ->runtime_suspend|resume() callbacks to be unassigned. This is already > supported for ->runtime_idle() callbacks, so it would also move things into a > more consistent behaviour. > > I have looked at various error paths, in the kernel of callers of > pm_runtime_get_sync(). I couldn't find anyone that made sense, that looked for > the special error code, -ENOSYS, which is the error code getting returned when a > callback is missing. Whether that is sufficient proof that these changes are > 100% safe, I can't guarantee, but I think it would be worth a try as the > benefits of avoiding boilerplate code and the corresponding additional code > paths are quite nice, if you ask me. In principle I have no objection to these changes. It's likely that if any problems do crop up, we'll be able to fix them pretty easily. For patches 1 and 2: Acked-by: Alan Stern <stern@rowland.harvard.edu> Alan Stern