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 ? >>> > Still since my patch is regressing things for you I will try to > take a look at this and see if I can reproduce and come up with > a fix. But this is not going to be a high priority thing for me to > work on. > > In the mean time I've gone ahead and submitted my version of the > fix for the problem Kai-Heng was seeing, since that does not seem > to make your problem worse; and it will be good to get that problem > fixed. > > Regards, > > Hans > 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. With the above now working I've also experimented with my systemd hibernate script and at least in limited testing I only need to remove the brcmfmac and hci_uart drivers before hibernate. I no longer need to remove sound drivers or the other ones shown in my earlier script. Without more testing I'm not sure at what point in kernel development those other driver removals stopped being necessary. Let me know if I can do any other tests to help. Bob Howell --- diff -uprN linux_original/drivers/i2c/busses/i2c-designware-platdrv.c linux/drivers/i2c/busses/i2c-designware-platdrv.c --- linux_original/drivers/i2c/busses/i2c-designware-platdrv.c 2019-04-14 16:17:41.000000000 -0600 +++ linux/drivers/i2c/busses/i2c-designware-platdrv.c 2019-04-18 22:45:58.836246889 -0600 @@ -367,7 +367,6 @@ static int dw_i2c_plat_probe(struct plat dev_pm_set_driver_flags(&pdev->dev, DPM_FLAG_SMART_PREPARE | - DPM_FLAG_SMART_SUSPEND | DPM_FLAG_LEAVE_SUSPENDED); /* The code below assumes runtime PM to be disabled. */ ---