[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAJZ5v0gX1gx1_zTZg=M+xEOqxPEaq8ZU-N3hwk7OGcGdzrdBTg@mail.gmail.com>
Date: Wed, 6 May 2020 12:19:39 +0200
From: "Rafael J. Wysocki" <rafael@...nel.org>
To: Chris Chiu <chiu@...lessm.com>
Cc: "Rafael J. Wysocki" <rjw@...ysocki.net>,
seth.forshee@...onical.com, Len Brown <lenb@...nel.org>,
ACPI Devel Maling List <linux-acpi@...r.kernel.org>,
Linux Kernel <linux-kernel@...r.kernel.org>,
Linux Upstreaming Team <linux@...lessm.com>
Subject: Re: System fails to exit s2idle by a keystroke on my laptop
On Wed, May 6, 2020 at 11:32 AM Rafael J. Wysocki <rafael@...nel.org> wrote:
>
> On Mon, May 4, 2020 at 7:09 PM Chris Chiu <chiu@...lessm.com> wrote:
> >
> > Hi,
> > I have an Intel X5-Z8350 laptop which used to work fine on s2idle
> > enter/exit with kernel 5.3. After upgrading to kernel 5.4 and later,
> > the system can still exit s2idle by power button. However, if I try to
> > wake it up from a keystroke, the system will freeze and then no longer
> > respond even to the power button. I can only shut it down and power on
> > again.
> >
> > I tried to 'git bisect' to find out which commit causes the
> > difference, it shows me the commit "ACPI: PM: s2idle: Prevent spurious
> > SCIs from waking up the system". My laptop can work as usual to exit
> > s2idle by a keystroke with reverting it on kernel 5.4.
> >
> > Then I tried to check whether I can reproduce it on the latest
> > mainline kernel, the same problem still there. But I can not fix it by
> > simply reverting. I found the acpi_s2idle_wake() has been refined on
> > the latest mainline kernel, and I have to make modifications as
> > follows to make my laptop work.
>
> Thanks for the report, the issue evidently is EC-related.
>
> > @@ -1024,7 +1024,7 @@ static bool acpi_s2idle_wake(void)
> > * regarded as a spurious one.
> > */
> > if (!acpi_ec_dispatch_gpe())
> > - return false;
> > + return true;
>
> Have you tried commenting out simply removing the if () check and the
> following return statement?
Scratch that.
Instead, please try doing
acpi_ec_dispatch_gpe()
instead of the if () and the following return statement.
Powered by blists - more mailing lists