linux-stable/drivers/acpi
Benjamin Tissoires 878d8db039 Revert "ACPI / button: Change default behavior to lid_init_state=open"
Revert commit 77e9a4aa9d (ACPI / button: Change default behavior to
lid_init_state=open) which changed the kernel's behavior on laptops
that boot with closed lids and expect the lid switch state to be
reported accurately by the kernel.

If you boot or resume your laptop with the lid closed on a docking
station while using an external monitor connected to it, both internal
and external displays will light on, while only the external should.

There is a design choice in gdm to only provide the greeter on the
internal display when lit on, so users only see a gray area on the
external monitor. Also, the cursor will not show up as it's by
default on the internal display too.

To "fix" that, users have to open the laptop once and close it once
again to sync the state of the switch with the hardware state.

Even if the "method" operation mode implementation can be buggy on
some platforms, the "open" choice is worse.  It breaks docking
stations basically and there is no way to have a user-space hwdb to
fix that.

On the contrary, it's rather easy in user-space to have a hwdb
with the problematic platforms. Then,  libinput (1.7.0+) can fix
the state of the lid switch for us: you need to set the udev
property LIBINPUT_ATTR_LID_SWITCH_RELIABILITY to 'write_open'.

When libinput detects internal keyboard events, it will overwrite the
state of the switch to open, making it reliable again.  Given that
logind only checks the lid switch value after a timeout, we can
assume the user will use the internal keyboard before this timeout
expires.

For example, such a hwdb entry is:

libinput:name:*Lid Switch*:dmi:*svnMicrosoftCorporation:pnSurface3:*
 LIBINPUT_ATTR_LID_SWITCH_RELIABILITY=write_open

Link: https://bugzilla.gnome.org/show_bug.cgi?id=782380
Cc: 4.11+ <stable@vger.kernel.org> # 4.11+
Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2017-05-29 23:42:18 +02:00
..
acpica Revert "ACPICA: Resources: Not a valid resource if buffer length too long" 2017-04-13 18:23:46 +02:00
apei ACPI / APEI: Add missing synchronize_rcu() on NOTIFY_SCI removal 2017-03-28 23:43:42 +02:00
arm64 arm64 updates for 4.11: 2017-02-22 10:46:44 -08:00
dptf ACPI / platform: Add support for build-in properties 2016-11-10 00:30:29 +01:00
nfit acpi, nfit, libnvdimm: fix interleave set cookie calculation (64-bit comparison) 2017-03-27 21:53:38 -07:00
pmic ACPI / PMIC: remove modular references from non-modular code 2016-07-16 03:03:14 +02:00
ac.c ACPI: Remove FSF mailing addresses 2015-07-08 02:27:32 +02:00
acpi_amba.c ACPI / amba: Remove CLK_IS_ROOT 2016-04-27 23:42:57 +02:00
acpi_apd.c Merge branches 'acpi-soc', 'acpi-battery', 'acpi-video', 'acpi-cppc' and 'acpi-apei' 2016-12-12 20:48:01 +01:00
acpi_cmos_rtc.c char/genrtc: x86: remove remnants of asm/rtc.h 2016-06-04 00:20:07 +02:00
acpi_configfs.c ACPI: Rename configfs.c to acpi_configfs.c to prevent link error 2016-07-11 15:13:36 +02:00
acpi_dbg.c ACPI / debugger: Fix regression introduced by IS_ERR_VALUE() removal 2016-07-05 23:02:34 +02:00
acpi_extlog.c x86/ras, EDAC, acpi: Assign MCE notifier handlers a priority 2017-01-24 09:14:57 +01:00
acpi_ipmi.c acpi:ipmi: Make IPMI user handler const 2017-02-09 09:10:05 -06:00
acpi_lpat.c ACPI / lpat: make it explicitly non-modular 2016-07-16 03:08:10 +02:00
acpi_lpss.c pwm: Changes for v4.11-rc1 2017-03-01 09:46:02 -08:00
acpi_memhotplug.c ACPI: Remove FSF mailing addresses 2015-07-08 02:27:32 +02:00
acpi_pad.c sched/headers: Prepare for new header dependencies before moving code to <uapi/linux/sched/types.h> 2017-03-02 08:42:27 +01:00
acpi_platform.c ACPI: Do not create a platform_device for IOAPIC/IOxAPIC 2017-03-28 23:37:19 +02:00
acpi_pnp.c ACPI / PNP: constify device IDs 2016-01-04 22:10:30 +01:00
acpi_processor.c acpi/processor: Check for duplicate processor ids at hotplug time 2017-03-11 14:41:20 +01:00
acpi_video.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
acpi_watchdog.c ACPI / watchdog: Print out error number when device creation fails 2016-12-26 23:21:56 +01:00
battery.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
battery.h
bgrt.c efi/x86: Move the EFI BGRT init code to early init code 2017-02-01 08:45:46 +01:00
blacklist.c ACPI / blacklist: Make Dell Latitude 3350 ethernet work 2016-11-16 23:01:29 +01:00
bus.c Revert "x86/acpi: Set persistent cpuid <-> nodeid mapping when booting" 2017-03-11 14:41:18 +01:00
button.c Revert "ACPI / button: Change default behavior to lid_init_state=open" 2017-05-29 23:42:18 +02:00
cm_sbs.c ACPI: Remove FSF mailing addresses 2015-07-08 02:27:32 +02:00
container.c ACPI: Remove FSF mailing addresses 2015-07-08 02:27:32 +02:00
cppc_acpi.c ACPI / CPPC: Fix per-CPU pointer management in acpi_cppc_processor_probe() 2016-12-12 23:52:34 +01:00
custom_method.c
debugfs.c ACPI: fix acpi_debugfs_init prototype 2015-08-07 02:55:18 +02:00
device_pm.c ACPI / PM: Export acpi_device_fix_up_power() 2016-05-20 15:54:01 +02:00
device_sysfs.c ACPI / property: Hierarchical properties support update 2016-11-24 02:43:47 +01:00
dock.c ACPI / dock: make dock explicitly non-modular 2016-07-16 03:08:08 +02:00
ec.c ACPI / EC: Use busy polling mode when GPE is not enabled 2017-01-30 12:12:52 +01:00
ec_sys.c ACPI / EC: Deny write access unless requested by module param 2016-03-09 23:26:15 +01:00
event.c genetlink: mark families as __ro_after_init 2016-10-27 16:16:09 -04:00
evged.c ACPI / GED: make evged.c explicitly non-modular 2016-05-09 22:59:25 +02:00
fan.c ACPI / fan: Fix error reading cur_state 2016-10-10 02:20:43 +02:00
glue.c ACPI / scan: Prefer devices without _HID for _ADR matching 2017-04-01 00:55:22 +02:00
hed.c ACPI: Remove FSF mailing addresses 2015-07-08 02:27:32 +02:00
internal.h x86/ioapic: Split IOAPIC hot-removal into two steps 2017-03-01 10:51:41 +01:00
ioapic.c ACPI: ioapic: Clear on-stack resource before using it 2017-03-28 23:31:45 +02:00
irq.c ACPI: Add support for ResourceSource/IRQ domain mapping 2017-02-03 15:03:48 +00:00
Kconfig Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2016-12-14 11:12:25 -08:00
Makefile ACPI: Fix incompatibility with mcount-based function graph tracing 2017-03-28 23:54:43 +02:00
numa.c ACPI/NUMA: Do not map pxm to node when NUMA is turned off 2016-12-15 11:32:32 +01:00
nvs.c
osi.c ACPI / osi: Collect _OSI handling into one single file 2016-05-05 00:13:53 +02:00
osl.c ACPICA: Hardware: Add sleep register hooks 2017-01-02 23:18:41 +01:00
pci_irq.c ACPI / PCI: fix GIC irq model default PCI IRQ polarity 2016-09-10 02:50:50 +02:00
pci_link.c ACPI/PCI: pci_link: Include PIRQ_PENALTY_PCI_USING for ISA IRQs 2016-10-24 14:18:14 +02:00
pci_mcfg.c PCI/ACPI: Fix bus range comparison in pci_mcfg_lookup() 2017-01-12 14:32:09 -06:00
pci_root.c x86/ioapic: Split IOAPIC hot-removal into two steps 2017-03-01 10:51:41 +01:00
pci_slot.c ACPI / PCI: make pci_slot explicitly non-modular 2016-07-16 03:05:29 +02:00
power.c ACPI / power: Avoid maybe-uninitialized warning 2017-04-19 22:46:10 +02:00
proc.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
processor_core.c Revert"x86/acpi: Enable MADT APIs to return disabled apicids" 2017-03-11 14:41:18 +01:00
processor_driver.c Merge branch 'smp-hotplug-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2016-10-03 19:43:08 -07:00
processor_idle.c x86/amd: Simplify AMD E400 aware idle routine 2016-12-09 21:23:21 +01:00
processor_pdc.c
processor_perflib.c ACPI: processor_perflib: Simplify code and stop using CPUFREQ_START 2017-02-04 00:05:29 +01:00
processor_thermal.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
processor_throttling.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
property.c ACPI / property: Hierarchical properties support update 2016-11-24 02:43:47 +01:00
reboot.c
resource.c scripts/spelling.txt: add "overrided" pattern and fix typo instances 2017-02-27 18:43:47 -08:00
sbs.c ACPI / SBS: fix inconsistent indenting inside if statement 2016-01-04 22:14:27 +01:00
sbshc.c Revert "ACPI / SBS: Add 5 us delay to fix SBS hangs on MacBook" 2015-11-16 23:26:45 +01:00
sbshc.h
scan.c ACPI / scan: Set the visited flag for all enumerated devices 2017-04-13 04:42:18 +02:00
sleep.c ACPI: save NVS memory for Lenovo G50-45 2017-01-31 22:46:59 +01:00
sleep.h ACPICA: Drop Linux-specific waking vector functions 2016-01-04 22:05:20 +01:00
spcr.c tty: acpi/spcr: QDF2400 E44 checks for wrong OEM revision 2017-03-14 10:48:54 +08:00
sysfs.c ACPI / sysfs: Provide quirk mechanism to prevent GPE flooding 2016-12-26 23:16:39 +01:00
tables.c ACPI / osl: Remove acpi_get_table_with_size()/early_acpi_os_unmap_memory() users 2016-12-21 02:36:38 +01:00
thermal.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
utils.c nfit: make DIMM DSMs optional 2016-07-19 12:32:39 -07:00
video_detect.c Revert "ACPI / video: Add force_native quirk for HP Pavilion dv6" 2017-01-25 14:04:13 +01:00
wakeup.c