Thread (42 messages) 42 messages, 8 authors, 2017-09-12
STALE3207d

[PATCH 1/9] i2c: designware: Fix system suspend

From: rafael@kernel.org (Rafael J. Wysocki)
Date: 2017-06-26 21:11:34
Also in: linux-acpi, linux-i2c, linux-pm

On Mon, Jun 26, 2017 at 9:39 PM, Grygorii Strashko
[off-list ref] wrote:
On 06/26/2017 11:49 AM, Ulf Hansson wrote:
[cut]
quoted
quoted
quoted
This makes it worse in that sense, that then you don't even need an
i2c slave to trigger the problem.
In that case your changelog is a bit misleading.
Yeah, it is! I didn't realize that until I fully investigated the revert option.
quoted
It looks like the commit in question attempted to fix exactly this
issue, but it failed, so it should be replaced with something else
which is what your patch is effectively doing.

IMO you should describe the original problem, explain why that commit
is not sufficient to fix it and then describe the final fix.

Anyway, after reading the changelog it should be clear that things
were broken before the commit in question.

And BTW I'm not really sure how the rest of the series is related to this?
Going back in history, I realize the system sleep support in this
driver has been broken even before the commit $subject patch intends
to fix.
However it has been working fine for the ACPI case, because of how the
ACPI PM domain manages its devices during system sleep.

The commit in question, adds an improvement to the driver, because it
enables the direct_complete path. For ACPI, that was already working,
but not for the other cases. So to be able to support the similar
improvement as the direct_complete path offers, as that isn't working
for this driver, I tried out using the runtime PM centric path
instead. That is what the rest of the changes in this series takes
care of.

Now, as the system sleep support is broken I wanted to make a simple
fix for that first, via $subject patch. I guess what makes this a bit
confusing is that I shouldn't point to a certain commit, but rather
just add a stable tag and update the changelog accordingly.
I agree, modulo the below.
Wouldn't it fix suspend for this driver if you will just replace
dw_i2c_plat_suspend() with pm_runtime_force_suspend() in SET_SYSTEM_SLEEP_PM_OPS() as
you've done in patch 9?

And, I think, direct_complete path should still work after this also.
That's a good point and I was about to mention that.

In any case, even if the pm_runtime_resume() added by the $subject
patch is necessary to start with, it could be added to the ->suspend
callback of the driver instead of the ->complete one, in which case
the ACPI path would not be affected by this change.

Thanks,
Rafael
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help