Re: [PATCH] ACPI / LPSS: Don't skip late system PM ops for hibernate on BYT/CHT

From: Hans de Goede
Date: Thu May 09 2019 - 04:51:25 EST


Hi,

On 09-05-19 06:24, Robert R. Howell wrote:
On 4/30/19 8:39 AM, Hans de Goede wrote:

Hi,

On 4/25/19 6:38 PM, Robert R. Howell wrote:
On 4/24/19 1:20 AM, Rafael J. Wysocki wrote:

On Tue, Apr 23, 2019 at 10:03 PM Robert R. Howell <RHowell@xxxxxxxx> wrote:

On 4/23/19 2:07 AM, Rafael J. Wysocki wrote:

On Sat, Apr 20, 2019 at 12:44 AM Robert R. Howell <RHowell@xxxxxxxx> wrote:

On 4/18/19 5:42 AM, Hans de Goede wrote:

On 4/8/19 2:16 AM, Hans de Goede wrote:>

Hmm, interesting so you have hibernation working on a T100TA
(with 5.0 + 02e45646d53b reverted), right ?



I've managed to find a way around the i2c_designware timeout issues
on the T100TA's. The key is to NOT set DPM_FLAG_SMART_SUSPEND,
which was added in the 02e45646d53b commit.

To test that I've started with a 5.1-rc5 kernel, applied your recent patch
to acpi_lpss.c, then apply the following patch of mine, removing
DPM_FLAG_SMART_SUSPEND. (For the T100 hardware I need to apply some
other patches as well but those are not related to the i2c-designware or
acpi issues addressed here.)

On a resume from hibernation I still see one error:
ÂÂ "i2c_designware 80860F41:00: Error i2c_dw_xfer called while suspended"
but I no longer get the i2c_designware timeouts, and audio does now work
after the resume.

Removing DPM_FLAG_SMART_SUSPEND may not be what you want for other
hardware, but perhaps this will give you a clue as to what is going
wrong with hibernate/resume on the T100TA's.

What if you drop DPM_FLAG_LEAVE_SUSPENDED alone instead?


I did try dropping just DPM_FLAG_LEAVE_SUSPENDED, dropping just
DPM_FLAG_SMART_SUSPEND, and dropping both flags. When I just drop
DPM_FLAG_LEAVE_SUSPENDED I still get the i2c_designware timeouts
after the resume. If I drop just DPM_FLAG_SMART_SUSPEND or drop both,
then the timeouts go away.

OK, thanks!

Is non-hibernation system suspend affected too?

I just ran some tests on a T100TA, using the 5.1-rc5 code with Hans' patch applied
but without any changes to i2c-designware-platdrv.c, so the
DPM_FLAG_SMART_PREPARE, DPM_FLAG_SMART_SUSPEND, and DPM_FLAG_LEAVE_SUSPENDED flags
are all set.

Suspend does work OK, and after resume I do NOT get any of the crippling
i2c_designware timeout errors which cause sound to fail after hibernate. I DO see one
ÂÂ "i2c_designware 80860F41:00: Error i2c_dw_xfer call while suspended"
error on resume, just as I do on hibernate. I've attached a portion of dmesg below.
The "asus_wmi:Â Unknown key 79 pressed" error is a glitch which occurs
intermittently on these machines, but doesn't seem related to the other issues.
I had one test run when it was absent but the rest of the messages were the
same -- but then kept getting that unknown key error on all my later tries.

I've just tried to reproduce the "Error i2c_dw_xfer call while suspended" error
on suspend/resume on my own T100TA and I could not reproduce this.

Can you try without the BT keyboard paired and waking up from suspend using the
tablet part's power-button ?

Also do you still have the scripts to rmmod some modules before suspend ?


The T100TA keyboard is actually a hardwired connection rather than Bluetooth but I
did physically disconnect the keyboard, and also unpaired all the actual Bluetooth
devices (such as the mouse) and then powered down the T100TA bluetooth adapter.
When I suspend, then resume using the tablet power button, I still get the
i2c_dw_xfererror error during the resume. But whatever causes this error isn't fatal,
in the sense that after resume the sound and other i2c functions do still work OK.

While I always get this i2c_dw_xfer error on resume from suspend or hibernation on the T100TA,
I also have a T100TAM and curiously, it NEVER shows that error -- although all the
other suspend and hibernate behavior seems similar. I'm not sure if the following could
be the difference, but the T100TA uses an i2c connected ATML1000 touchscreen controller
while the T100TAM uses an i2c connected SIS0817 touchscreen controller. Other than that
the hardware seems almost identical.

I've been testing on an actual T100TA, with the ATML1000 touchscreen controller.

Maybe it is a difference in BIOS version, my T100TA is running the latest BIOS, what
is the output of:

cat /sys/class/dmi/id/bios_version /sys/class/dmi/id/bios_date

?

Also do you perhaps have a microsd card inserted? (I'm trying to figure out the
different between our setups so that I can hopefully reproduce the issue myself).


Regarding scripts, while I do still need a systemd hibernate script which removes the
brcmfmac and the hci_uart (bluetooth related) drivers, I've found that I no longer need
any script for suspend.

Ok, so you are not doing any rmmod-s on suspend, right?

Regards,

Hans