All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Zheng, Lv" <lv.zheng@intel.com>
To: Lennart Poettering <mzxreary@0pointer.de>,
	Bastien Nocera <hadess@hadess.net>
Cc: "Brown, Len" <len.brown@intel.com>,
	"systemd-devel@lists.freedesktop.org"
	<systemd-devel@lists.freedesktop.org>,
	"linux-acpi@vger.kernel.org" <linux-acpi@vger.kernel.org>,
	"Wysocki, Rafael J" <rafael.j.wysocki@intel.com>,
	"Rafael J . Wysocki" <rjw@rjwysocki.net>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	Lv Zheng <zetalog@gmail.com>,
	Benjamin Tissoires <benjamin.tissoires@redhat.com>,
	"linux-input@vger.kernel.org" <linux-input@vger.kernel.org>
Subject: RE: [systemd-devel] [WIP PATCH 0/4] Rework the unreliable LID switch exported by ACPI
Date: Mon, 19 Jun 2017 02:16:50 +0000	[thread overview]
Message-ID: <1AE640813FDE7649BE1B193DEA596E886CED142E@SHSMSX101.ccr.corp.intel.com> (raw)
In-Reply-To: <20170616163255.GA3461@gardel-login>

Hi, Lennart

> From: Lennart Poettering [mailto:mzxreary@0pointer.de]
> Subject: Re: [systemd-devel] [WIP PATCH 0/4] Rework the unreliable LID switch exported by ACPI
> 
> On Fri, 16.06.17 11:06, Bastien Nocera (hadess@hadess.net) wrote:
> 
> > > Let's consider this case with delay:
> > > After resume, gnome-setting-daemon queries SW_LID and got "close".
> > > Then it lights up the wrong monitors.
> > > Then I believe "open" will be delivered to it several seconds later.
> > > Should gnome-setting-daemon light-up correct monitors this time?
> > > So it just looks like user programs behave with a delay accordingly because of the "platform
> turnaround" delay.
> >
> > If you implement it in such a way that GNOME settings daemon behaves weirdly, you'll get my revert
> request in the mail. Do. Not. Ever. Lie.
> 
> Just to mention this:
> 
> the reason logind applies the timeout and doesn't immediately react to
> lid changes is to be friendly to users, if they quickly close and
> reopen the lid. It's not supposed to be a work-around around broken
> input drivers.

I see, it's same reason for button driver to prepare "lid_report_interval".

I think all old user reports are meaningless to us.
At that time, we found 2 problems in systemd (version below 229):
1. If no "open" event received after resume, systemd suspends the platform.
2. If an "open" event received after a "close" event, the suspend cannot be
   cancelled, systemd still suspends the platform.
It looks the 2 problems are 1 single issue that has already been fixed in
recent systemd (I confirmed that this has been fixed in 233).
It's hard for a kernel driver to work these 2 problems around.

> 
> I am very sure that input drivers shouldn't lie to userspace. If you
> don't know the state of the switch, then you don#t know it, and should
> clarify that to userspace somehow.

Without considering "Surface Pro 1" case which requires a quirk anyway.

For my version 2 solution, for all other platforms, there is no "lie".
There is only a delay, and it's likely there is only 1 platform suffering
from such a delay.

Considering a platform that suffers from such a delay:
Before the platform sends the "open" event, the old cached state is "close".
And input layer automatically filters redundant "close".
Thus systemd won't see any event after resume.
     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Then after several seconds, (can be configured by HoldoffTimeoutSec),
The lid status is turned into correct and systemd can see an "open".
So there won't be a problem.
I can tell you that I tested systemd 229/233, no problem can be seen with
version 2 solution on all those platforms.

Since everything works, I mean why we need to change the ACPI driven
SW_LID into a "fade-in/out" input node.

On the contrary:
1. I feel the delay is common:
If an HID device is built on top of USBIP, there is always delays
(several seconds as network turnaround) for its SW_xxx keys if any.
So do we need to change all HID device drivers to export SW keys into
fade-in/out style just because the underlying transport layer may change?
For the case we are discussing, it's just the underlying transport layer
is the platform hardware/firmware and some of them have a huge delay.
2. I feel the delay is inevitable:
If kernel must ensure to resume userspace after determining the wakeup
reason and after the related wakeup source hardware or firmware driver
has synchronized the states. It then will be a long-time-consuming
suspend/resume cycle and cannot meet the fast-idle-entry/exit
requirements of the modern idle platforms. And even worse thing is,
for most of the hardware/firmware drivers, they don't even know that
the hardware/firmware driven by them are the waking the platform up.

I feel it's too early to say that we need such a big change.
We can wait and see if there are any further use cases requiring us to
handle before making such a big change.

Cheers,
Lv

  reply	other threads:[~2017-06-19  2:16 UTC|newest]

Thread overview: 71+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-06-01 18:46 [WIP PATCH 0/4] Rework the unreliable LID switch exported by ACPI Benjamin Tissoires
2017-06-01 18:46 ` Benjamin Tissoires
2017-06-01 18:46 ` [WIP PATCH 1/4] ACPI: button: extract input creation/destruction helpers Benjamin Tissoires
2017-06-01 18:46   ` Benjamin Tissoires
2017-06-01 18:46 ` [WIP PATCH 2/4] ACPI: button: remove the LID input node when the state is unknown Benjamin Tissoires
2017-06-01 18:46   ` Benjamin Tissoires
2017-06-05  3:19   ` Zheng, Lv
2017-06-05  3:19     ` Zheng, Lv
2017-06-06 10:22     ` Benjamin Tissoires
2017-06-06 10:22       ` Benjamin Tissoires
2017-06-07  1:27       ` Peter Hutterer
2017-06-07  1:27         ` Peter Hutterer
2017-06-07  9:56       ` Zheng, Lv
2017-06-07  9:56         ` Zheng, Lv
2017-06-01 18:46 ` [WIP PATCH 3/4] ACPI: button: Let input filter out the LID events Benjamin Tissoires
2017-06-05  4:28   ` Zheng, Lv
2017-06-05  4:28     ` Zheng, Lv
2017-06-06 10:31     ` Benjamin Tissoires
2017-06-06 10:31       ` Benjamin Tissoires
2017-06-01 18:46 ` [WIP PATCH 4/4] ACPI: button: Fix lid notification locks Benjamin Tissoires
2017-06-05  3:33   ` Zheng, Lv
2017-06-05  3:33     ` Zheng, Lv
2017-06-06 10:29     ` Benjamin Tissoires
2017-06-06 10:29       ` Benjamin Tissoires
2017-06-07  9:47       ` Zheng, Lv
2017-06-07  9:47         ` Zheng, Lv
2017-06-01 21:43 ` [WIP PATCH 0/4] Rework the unreliable LID switch exported by ACPI Bastien Nocera
2017-06-02  7:24   ` Benjamin Tissoires
2017-06-05  2:25 ` Zheng, Lv
2017-06-05  2:25   ` Zheng, Lv
2017-06-07  7:48 ` Lennart Poettering
2017-06-07  7:48   ` [systemd-devel] " Lennart Poettering
2017-06-13 10:06   ` Benjamin Tissoires
2017-06-13 10:06     ` [systemd-devel] " Benjamin Tissoires
2017-06-15  2:52     ` Zheng, Lv
2017-06-15  2:52       ` Zheng, Lv
2017-06-15  6:47       ` Peter Hutterer
2017-06-15  6:47         ` Peter Hutterer
2017-06-15  7:33         ` Zheng, Lv
2017-06-15  7:33           ` Zheng, Lv
2017-06-15  7:57           ` Peter Hutterer
2017-06-15  7:57             ` Peter Hutterer
2017-06-16  5:37             ` Zheng, Lv
2017-06-16  5:37               ` Zheng, Lv
2017-06-16  7:23               ` Benjamin Tissoires
2017-06-16  7:23                 ` Benjamin Tissoires
2017-06-16  7:45                 ` Zheng, Lv
2017-06-16  7:45                   ` Zheng, Lv
2017-06-16  8:09                   ` Benjamin Tissoires
2017-06-16  8:09                     ` [systemd-devel] " Benjamin Tissoires
2017-06-16  8:53                     ` Zheng, Lv
2017-06-16  8:53                       ` Zheng, Lv
2017-06-16  9:06                       ` Bastien Nocera
2017-06-16  9:06                         ` Bastien Nocera
2017-06-16  9:06                         ` Bastien Nocera
2017-06-16 16:32                         ` Lennart Poettering
2017-06-16 16:32                           ` Lennart Poettering
2017-06-19  2:16                           ` Zheng, Lv [this message]
2017-06-19  2:16                             ` Zheng, Lv
2017-06-19  1:43                         ` Zheng, Lv
2017-06-19  1:43                           ` Zheng, Lv
2017-06-19 22:08                           ` Bastien Nocera
2017-06-19 22:08                             ` [systemd-devel] " Bastien Nocera
2017-06-20  2:45                             ` Zheng, Lv
2017-06-20  2:45                               ` Zheng, Lv
2017-06-21 10:23                               ` Bastien Nocera
2017-06-21 10:23                                 ` Bastien Nocera
2017-06-22  3:16                                 ` Zheng, Lv
2017-06-22  3:16                                   ` Zheng, Lv
2017-06-14 23:50   ` Zheng, Lv
2017-06-14 23:50     ` Zheng, Lv

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1AE640813FDE7649BE1B193DEA596E886CED142E@SHSMSX101.ccr.corp.intel.com \
    --to=lv.zheng@intel.com \
    --cc=benjamin.tissoires@redhat.com \
    --cc=hadess@hadess.net \
    --cc=len.brown@intel.com \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-input@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mzxreary@0pointer.de \
    --cc=rafael.j.wysocki@intel.com \
    --cc=rjw@rjwysocki.net \
    --cc=systemd-devel@lists.freedesktop.org \
    --cc=zetalog@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.