Re: acpi: broken suspend to RAM with v4.7-rc1

From: Rafael J. Wysocki
Date: Fri Jun 10 2016 - 17:20:47 EST


On Friday, June 10, 2016 11:32:10 PM Andrey Skvortsov wrote:
>
> --IS0zKkzwUGydFO0o
> Content-Type: text/plain; charset=utf-8
> Content-Disposition: inline
> Content-Transfer-Encoding: quoted-printable
>
> Hi,
>
> On my laptop (DELL Vostro 1500) in v4.7-rc1 is broken suspend to RAM.
> Laptop doesn't finish suspend to RAM process (disks are off, but WiFi
> and Power LEDs are still on). The only way to get it out of this
> state, is to turn the power off.
>
> I've bisected the issue to commit 66b1ed5aa8dd25
> [ACPICA: ACPI 2.0, Hardware: Add access_width/bit_offset support for acpi_h=
> w_write()].
>
> If I revert this commit in v4.7-rc1 (or v4.7-rc2), suspend to RAM is
> working again.
>
> The cause of this problem is that after this commit write to PM1A Control B=
> lock
> (16-bit register) is done using two 8-bit writes. If I force this write
> to be 16-bit, then all is working as before.
>
> To get it working 'access_width' for PM1A Control Block needs to be 2 (16-b=
> it), but it's=20
> 1 (8-bit).
>
> The root of the problem seems to be not the commit 66b1ed5aa8dd25 itself, b=
> ut the ACPI
> tables in BIOS where wrong access_width comes from. I fixed problem in FACP=
> table,
> put it in initrd to override FACP table from BIOS. This fixed the issue,
> suspend to RAM is working now again.
>
> But I'm not sure whether is this proper fix for this problem.
> Is there any place in the kernel, where such ACPI quirks are placed?

Well, if the commit in question caused a problem to happen for you, it also
might cause similar problems to happen elsewhere.

It looks like we'll need to revert that commit.

Thanks,
Rafael