linux-input.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Benjamin Tissoires <benjamin.tissoires@redhat.com>
To: "Zheng, Lv" <lv.zheng@intel.com>
Cc: Peter Hutterer <peter.hutterer@who-t.net>,
	Lennart Poettering <mzxreary@0pointer.de>,
	"Wysocki, Rafael J" <rafael.j.wysocki@intel.com>,
	"Rafael J . Wysocki" <rjw@rjwysocki.net>,
	"Brown, Len" <len.brown@intel.com>, Lv Zheng <zetalog@gmail.com>,
	"linux-acpi@vger.kernel.org" <linux-acpi@vger.kernel.org>,
	"systemd-devel@lists.freedesktop.org"
	<systemd-devel@lists.freedesktop.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"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: Fri, 16 Jun 2017 09:23:22 +0200	[thread overview]
Message-ID: <20170616072322.GL5085@mail.corp.redhat.com> (raw)
In-Reply-To: <1AE640813FDE7649BE1B193DEA596E886CED0A03@SHSMSX101.ccr.corp.intel.com>

On Jun 16 2017 or thereabouts, Zheng, Lv wrote:
> Hi,
> 
> > From: linux-acpi-owner@vger.kernel.org [mailto:linux-acpi-owner@vger.kernel.org] On Behalf Of Peter
> > Hutterer
> > Subject: Re: [systemd-devel] [WIP PATCH 0/4] Rework the unreliable LID switch exported by ACPI
> > 
> > On Thu, Jun 15, 2017 at 07:33:58AM +0000, Zheng, Lv wrote:
> > > Hi, Peter
> > >
> > > > From: Peter Hutterer [mailto:peter.hutterer@who-t.net]
> > > > Subject: Re: [systemd-devel] [WIP PATCH 0/4] Rework the unreliable LID switch exported by ACPI
> > > >
> > > > On Thu, Jun 15, 2017 at 02:52:57AM +0000, Zheng, Lv wrote:
> > > > > Hi, Benjamin
> > > > >
> > > > > > From: Benjamin Tissoires [mailto:benjamin.tissoires@redhat.com]
> > > > > > Subject: Re: [systemd-devel] [WIP PATCH 0/4] Rework the unreliable LID switch exported by ACPI
> > > > > >
> > > > > > Hi,
> > > > > >
> > > > > > [Sorry for the delay, I have been sidetracked from this]
> > > > > >
> > > > > > On Jun 07 2017 or thereabouts, Lennart Poettering wrote:
> > > > > > > On Thu, 01.06.17 20:46, Benjamin Tissoires (benjamin.tissoires@redhat.com) wrote:
> > > > > > >
> > > > > > > > Hi,
> > > > > > > >
> > > > > > > > Sending this as a WIP as it still need a few changes, but it mostly works as
> > > > > > > > expected (still not fully compliant yet).
> > > > > > > >
> > > > > > > > So this is based on Lennart's comment in [1]: if the LID state is not reliable,
> > > > > > > > the kernel should not export the LID switch device as long as we are not sure
> > > > > > > > about its state.
> > > > > > >
> > > > > > > Ah nice! I (obviously) like this approach.
> > > > > >
> > > > > > Heh. Now I just need to convince Lv that it's the right approach.
> > > > >
> > > > > I feel we don't have big conflicts.
> > > > > And I already took part of your idea into this patchset:
> > > > > https://patchwork.kernel.org/patch/9771121/
> > > > > https://patchwork.kernel.org/patch/9771119/
> > > > > I tested my surface pros with Ubuntu, they are working as expected.
> > > > >
> > > > > > > > Note that systemd currently doesn't sync the state when the input node just
> > > > > > > > appears. This is a systemd bug, and it should not be handled by the kernel
> > > > > > > > community.
> > > > > > >
> > > > > > > Uh if this is borked, we should indeed fix this in systemd. Is there
> > > > > > > already a systemd github bug about this? If not, please create one,
> > > > > > > and we'll look into it!
> > > > > >
> > > > > > I don't think there is. I haven't raised it yet because I am not so sure
> > > > > > this will not break again those worthless unreliable LID, and if we play
> > > > > > whack a mole between the kernel and user space, things are going to be
> > > > > > nasty. So I'd rather have this fixed in systemd along with the
> > > > > > unreliable LID switch knowledge, so we are sure that the kernel behaves
> > > > > > the way we expect it to be.
> > > > >
> > > > > This is my feeling:
> > > > > We needn't go that far.
> > > > > We can interpret "input node appears" into "default input node state".
> > > >
> > > > Sorry, can you clarify this bit please? I'm not sure what you mean here.
> > > > Note that there's an unknown amount of time between "device node appearing
> > > > in the system" and when a userspace process actually opens it and looks at
> > > > its state. By then, the node may have changed state again.
> > >
> > > We can see:
> > > "logind" has already implemented a timeout, and will not respond lid state
> > > unless it can be stable within this timeout period.
> > > I'm not an expert of logind, maybe this is because of "HoldOffTimeoutSec"?
> > >
> > > I feel "removing the input node for a period where its state is not trustful"
> > > is technically identical to this mechanism.
> > 
> > but you'd be making kernel policy based on one userspace implementation.
> > e.g. libinput doesn't have a timeout period, it assumes the state is
> > correct when an input node is present.
> 
> Do you see practical issues?

Yes, libinput can't rely on the LID switch information to disable
touchpads/touchscreens that are potentially sending false positive.

> If not, should we avoid over-engineering at this moment?

It's not over-engineering. You are changing the specification of the
input node EV_SW event. And if systemd-whatever-version works currently
with your current patch, as long as you do not stick to the protocol
specification, systemd-whatever-version+N can break this. They will
be legitimate to do so because the kernel is not following the protocol.

> 
> After resume, SW_LID state could remain unreliable "close" for a while.

This is not an option. It is not part of the protocol, having an
unreliable state.

> But that's just a kind of delay happens in all computing programs.
> I suppose all power managing programs have already handled that.
> I confirmed no breakage for systemd 233.
> For systemd 229, it cannot handle it well due to bugs.
> But my latest patch series has worked the bug around.
> So I don't see any breakage related to post-resume incorrect state period.
> Do you see problems that my tests haven't covered?

The problems are that you are not following the protocol. And if systemd
233 works around it, that's good, but systemd is not the only listener
of the LID switch input node, and you are still breaking those by
refusing to follow the specification of the evdev protocol.

> 
> So I wonder if you mean:
> After boot, button driver should create input node right before sending first input report.
> Is this exactly what you want me to improve?

No, Peter doesn't want you to improve anything (neither do I). The
series I sent here as a WIP already does that: when the state is
unknown, the input node disappears (or is not presented to user-space at
all).

The good point of that is that *all* user space clients know how to
behave when there is no LID switch input node (that's a pretty common
use case, the desktop workstation).
But none but maybe systemd 233 can handle some transient state where the
LID switch reports garbage.

So really, there is nothing to add there, let me finish both the kernel
part and raise the appropriate bugs in systemd (or send PR) to have a
fully finished future proof solution.

Cheers,
Benjamin

> If so, please also let me know if you have seen real issues related to this?
> 
> Cheers,
> Lv

  reply	other threads:[~2017-06-16  7:23 UTC|newest]

Thread overview: 37+ 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 ` [WIP PATCH 1/4] ACPI: button: extract input creation/destruction helpers 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-05  3:19   ` Zheng, Lv
2017-06-06 10:22     ` Benjamin Tissoires
2017-06-07  1:27       ` Peter Hutterer
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-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-06 10:29     ` Benjamin Tissoires
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-07  7:48 ` Lennart Poettering
2017-06-13 10:06   ` Benjamin Tissoires
2017-06-15  2:52     ` [systemd-devel] " Zheng, Lv
2017-06-15  6:47       ` Peter Hutterer
2017-06-15  7:33         ` Zheng, Lv
2017-06-15  7:57           ` Peter Hutterer
2017-06-16  5:37             ` Zheng, Lv
2017-06-16  7:23               ` Benjamin Tissoires [this message]
2017-06-16  7:45                 ` Zheng, Lv
2017-06-16  8:09                   ` Benjamin Tissoires
2017-06-16  8:53                     ` [systemd-devel] " Zheng, Lv
2017-06-16  9:06                       ` Bastien Nocera
2017-06-16 16:32                         ` Lennart Poettering
2017-06-19  2:16                           ` Zheng, Lv
2017-06-19  1:43                         ` Zheng, Lv
2017-06-19 22:08                           ` Bastien Nocera
2017-06-20  2:45                             ` [systemd-devel] " Zheng, Lv
2017-06-21 10:23                               ` Bastien Nocera
2017-06-22  3:16                                 ` 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=20170616072322.GL5085@mail.corp.redhat.com \
    --to=benjamin.tissoires@redhat.com \
    --cc=len.brown@intel.com \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-input@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lv.zheng@intel.com \
    --cc=mzxreary@0pointer.de \
    --cc=peter.hutterer@who-t.net \
    --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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).