mirror-linux/drivers/base/power
Rafael J. Wysocki 359afc8eb0 PM: runtime: Do not clear needs_force_resume with enabled runtime PM
Commit 89d9cec3b1 ("PM: runtime: Clear power.needs_force_resume in
pm_runtime_reinit()") added provisional clearing of power.needs_force_resume
to pm_runtime_reinit(), but it is done unconditionally which is a
mistake because pm_runtime_reinit() may race with driver probing
and removal [1].

To address this, notice that power.needs_force_resume should never
be set when runtime PM is enabled and so it only needs to be cleared
when runtime PM is disabled, and update pm_runtime_init() to only
clear that flag when runtime PM is disabled.

Fixes: 89d9cec3b1 ("PM: runtime: Clear power.needs_force_resume in pm_runtime_reinit()")
Reported-by: Ed Tsai <ed.tsai@mediatek.com>
Closes: https://lore.kernel.org/linux-pm/20251215122154.3180001-1-ed.tsai@mediatek.com/ [1]
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Cc: 6.17+ <stable@vger.kernel.org> # 6.17+
Reviewed-by: Ulf Hansson <ulf.hansson@linaro.org>
Link: https://patch.msgid.link/12807571.O9o76ZdvQC@rafael.j.wysocki
2025-12-16 12:58:57 +01:00
..
Makefile PM: runtime: Add basic kunit tests for API contracts 2025-09-27 13:41:47 +02:00
clock_ops.c PM: clk: Remove unused pm_clk_remove() 2025-03-12 21:28:48 +01:00
common.c PM: domains: Detach on device_unbind_cleanup() 2025-07-07 20:41:21 +02:00
generic_ops.c PM: sleep: Introduce CALL_PM_OP() macro to simplify code 2025-10-20 19:54:25 +02:00
main.c pmdomain core: 2025-12-04 13:50:39 -08:00
power.h PM: sleep: wakeirq: fix wake irq arming 2023-07-24 09:51:51 +02:00
qos-test.c
qos.c PM: QoS: Export dev_pm_qos_read_value 2024-10-25 10:17:37 -05:00
runtime-test.c PM: runtime: Stop checking pm_runtime_barrier() return code 2025-12-04 20:38:13 +01:00
runtime.c PM: runtime: Do not clear needs_force_resume with enabled runtime PM 2025-12-16 12:58:57 +01:00
sysfs.c PM: sysfs: Move debug runtime PM attributes to runtime_attrs[] 2025-05-09 15:59:27 +02:00
trace.c PM: sleep: Replace snprintf() with scnprintf() in show_trace_dev_match() 2025-10-13 21:19:12 +02:00
wakeirq.c PM: sleep: wakeirq: Introduce device-managed variant of dev_pm_set_wake_irq() 2025-01-17 20:27:46 +01:00
wakeup.c PM: wakeup: Update after recent wakeup source removal ordering change 2025-11-12 20:56:25 +01:00
wakeup_stats.c PM: wakeup: Add missing wakeup source attribute relax_count 2025-05-09 15:41:34 +02:00