linux/include/acpi
Rafael J. Wysocki 1d6c932068 ACPI: sleep: Avoid breaking S3 wakeup due to might_sleep()
commit 22db06337f upstream.

The addition of might_sleep() to down_timeout() caused the latter to
enable interrupts unconditionally in some cases, which in turn broke
the ACPI S3 wakeup path in acpi_suspend_enter(), where down_timeout()
is called by acpi_disable_all_gpes() via acpi_ut_acquire_mutex().

Namely, if CONFIG_DEBUG_ATOMIC_SLEEP is set, might_sleep() causes
might_resched() to be used and if CONFIG_PREEMPT_VOLUNTARY is set,
this triggers __cond_resched() which may call preempt_schedule_common(),
so __schedule() gets invoked and it ends up with enabled interrupts (in
the prev == next case).

Now, enabling interrupts early in the S3 wakeup path causes the kernel
to crash.

Address this by modifying acpi_suspend_enter() to disable GPEs without
attempting to acquire the sleeping lock which is not needed in that code
path anyway.

Fixes: 99409b935c ("locking/semaphore: Add might_sleep() to down_*() family")
Reported-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Cc: 5.15+ <stable@vger.kernel.org> # 5.15+
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
History 2023-06-28 10:29:42 +02:00
..
platform ACPI: tools: fix compilation error 2021-10-07 19:18:19 +02:00
acbuffer.h ACPICA: Add _PLD panel positions 2021-06-07 14:04:43 +02:00
acconfig.h ACPICA: Add support for PlatformRtMechanism OperationRegion handler 2021-06-07 14:04:43 +02:00
acexcep.h ACPICA: Updated all copyrights to 2021 2021-01-22 15:51:53 +01:00
acnames.h ACPICA: Add method name "_DIS" For use with aslmethod.c 2021-08-16 16:47:02 +02:00
acoutput.h ACPICA: Macros should not use a trailing semicolon 2021-08-16 16:47:02 +02:00
acpi.h ACPICA: Updated all copyrights to 2021 2021-01-22 15:51:53 +01:00
acpi_bus.h ACPI: Change acpi_device_always_present() into acpi_device_override_status() 2022-01-27 11:04:33 +01:00
acpi_drivers.h Merge branches 'acpi-pci' and 'acpi-processor' 2021-04-26 17:03:05 +02:00
acpi_io.h Revert "ACPI: Add memory semantics to acpi_os_map_memory()" 2021-09-23 20:39:36 +02:00
acpi_lpat.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 174 2019-05-30 11:26:41 -07:00
acpi_numa.h ACPI: NUMA: fix typo in a comment 2021-06-07 16:41:10 +02:00
acpiosxf.h ACPICA: Updated all copyrights to 2021 2021-01-22 15:51:53 +01:00
acpixf.h ACPI: sleep: Avoid breaking S3 wakeup due to might_sleep() 2023-06-28 10:29:42 +02:00
acrestyp.h ACPICA: ACPI 6.4: add CSI2Bus resource template 2021-04-07 19:09:01 +02:00
actbl.h ACPICA: Updated all copyrights to 2021 2021-01-22 15:51:53 +01:00
actbl1.h ACPICA: Headers: Add new DBG2 Serial Port Subtypes 2021-08-16 16:47:02 +02:00
actbl2.h ACPICA: iASL: Add support for the AEST table (data compiler) 2021-08-16 16:47:01 +02:00
actbl3.h ACPICA: iASL: Fix for WPBT table with no command-line arguments 2021-08-16 16:47:02 +02:00
actypes.h ACPICA: actypes.h: Expand the ACPI_ACCESS_ definitions 2022-01-27 11:04:49 +01:00
acuuid.h ACPICA: ACPI 6.4: add USB4 capabilities UUID 2021-04-07 19:09:00 +02:00
apei.h ACPI: APEI: explicit init of HEST and GHES in apci_init() 2022-08-17 14:23:11 +02:00
battery.h ACPI: battery: include linux/power_supply.h 2020-09-25 18:31:19 +02:00
button.h ACPI: button: move HIDs to acpi/button.h 2020-02-13 23:36:23 +01:00
cppc_acpi.h ACPI: CPPC: Do not prevent CPPC from working in the future 2022-08-17 14:24:25 +02:00
ghes.h ACPI: APEI: Fix integer overflow in ghes_estatus_pool_init() 2022-11-10 18:15:34 +01:00
hed.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 428 2019-06-05 17:37:16 +02:00
nfit.h acpi, nfit: Add function to look up nvdimm device and provide SMBIOS handle 2018-03-14 12:43:50 +01:00
pcc.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 441 2019-06-05 17:37:17 +02:00
pdc_intel.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
processor.h x86: ACPI: fix CPU hotplug deadlock 2020-04-04 16:28:24 +02:00
reboot.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
video.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00