linux-stable/include/acpi
Rafael J. Wysocki 33e4f80ee6 ACPI / PM: Ignore spurious SCI wakeups from suspend-to-idle
The ACPI SCI (System Control Interrupt) is set up as a wakeup IRQ
during suspend-to-idle transitions and, consequently, any events
signaled through it wake up the system from that state.  However,
on some systems some of the events signaled via the ACPI SCI while
suspended to idle should not cause the system to wake up.  In fact,
quite often they should just be discarded.

Arguably, systems should not resume entirely on such events, but in
order to decide which events really should cause the system to resume
and which are spurious, it is necessary to resume up to the point
when ACPI SCIs are actually handled and processed, which is after
executing dpm_resume_noirq() in the system resume path.

For this reasons, add a loop around freeze_enter() in which the
platforms can process events signaled via multiplexed IRQ lines
like the ACPI SCI and add suspend-to-idle hooks that can be
used for this purpose to struct platform_freeze_ops.

In the ACPI case, the ->wake hook is used for checking if the SCI
has triggered while suspended and deferring the interrupt-induced
system wakeup until the events signaled through it are actually
processed sufficiently to decide whether or not the system should
resume.  In turn, the ->sync hook allows all of the relevant event
queues to be flushed so as to prevent events from being missed due
to race conditions.

In addition to that, some ACPI code processing wakeup events needs
to be modified to use the "hard" version of wakeup triggers, so that
it will cause a system resume to happen on device-induced wakeup
events even if the "soft" mechanism to prevent the system from
suspending is not enabled.  However, to preserve the existing
behavior with respect to suspend-to-RAM, this only is done in
the suspend-to-idle case and only if an SCI has occurred while
suspended.

Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2017-06-15 00:55:44 +02:00
..
platform ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
acbuffer.h ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
acconfig.h ACPICA: iasl: add ASL conversion tool 2017-04-28 21:56:10 +02:00
acexcep.h ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
acnames.h ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
acoutput.h ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
acpi.h ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
acpi_bus.h ACPI / PM: Ignore spurious SCI wakeups from suspend-to-idle 2017-06-15 00:55:44 +02:00
acpi_drivers.h Revert "ACPI, PCI, IRQ: remove redundant code in acpi_irq_penalty_init()" 2016-07-02 01:38:34 +02:00
acpi_io.h ACPI / osl: Remove deprecated acpi_get_table_with_size()/early_acpi_os_unmap_memory() 2016-12-21 02:36:38 +01:00
acpi_lpat.h ACPI / LPAT: Common table processing functions 2015-01-29 21:02:10 +08:00
acpi_numa.h ACPI / NUMA: move bad_srat() and srat_disabled() to drivers/acpi/numa.c 2016-05-30 14:27:08 +02:00
acpiosxf.h ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
acpixf.h ACPICA: Update version to 20170303 2017-04-28 21:57:32 +02:00
acrestyp.h ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
actbl.h ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
actbl1.h ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
actbl2.h More ACPI updates for v4.12-rc1 2017-05-10 09:35:42 -07:00
actbl3.h ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
actypes.h ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
acuuid.h ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
apei.h acpi, apei, ghes: Factor out ioremap virtual memory for IRQ and NMI context. 2014-07-22 15:05:06 -07:00
button.h ACPI: Eliminate CONFIG_.*{, _MODULE} #ifdef in favor of IS_ENABLED() 2015-09-15 03:05:45 +02:00
cppc_acpi.h ACPI / CPPC: add sysfs entries for CPPC perf capabilities 2017-04-18 23:37:50 +02:00
ghes.h ACPICA: Restore error table definitions to reduce code differences between Linux and ACPICA upstream. 2014-06-16 22:33:50 +02:00
hed.h ACPI Hardware Error Device (PNP0C33) support 2010-05-19 22:40:24 -04:00
pcc.h mailbox: PCC: Fix return value of pcc_mbox_request_channel() 2016-10-17 14:26:49 +02:00
pdc_intel.h ACPI: Enable bit 11 in _PDC to advertise hw coord 2009-02-07 00:41:14 -05:00
processor.h ACPI / processor: Make acpi_processor_ppc_has_changed() void 2016-11-21 14:35:42 +01:00
reboot.h
video.h ACPI / video: Move ACPI_VIDEO_NOTIFY_* defines to acpi/video.h 2016-11-16 23:07:43 +01:00