linux/drivers/platform
Maciej S. Szmigiero 5cc621085e platform/x86/amd/pmc: Only disable IRQ1 wakeup where i8042 actually enabled it
[ Upstream commit dd410d7844 ]

Wakeup for IRQ1 should be disabled only in cases where i8042 had
actually enabled it, otherwise "wake_depth" for this IRQ will try to
drop below zero and there will be an unpleasant WARN() logged:

kernel: atkbd serio0: Disabling IRQ1 wakeup source to avoid platform firmware bug
kernel: ------------[ cut here ]------------
kernel: Unbalanced IRQ 1 wake disable
kernel: WARNING: CPU: 10 PID: 6431 at kernel/irq/manage.c:920 irq_set_irq_wake+0x147/0x1a0

The PMC driver uses DEFINE_SIMPLE_DEV_PM_OPS() to define its dev_pm_ops
which sets amd_pmc_suspend_handler() to the .suspend, .freeze, and
.poweroff handlers. i8042_pm_suspend(), however, is only set as
the .suspend handler.

Fix the issue by call PMC suspend handler only from the same set of
dev_pm_ops handlers as i8042_pm_suspend(), which currently means just
the .suspend handler.

To reproduce this issue try hibernating (S4) the machine after a fresh boot
without putting it into s2idle first.

Fixes: 8e60615e89 ("platform/x86/amd: pmc: Disable IRQ1 wakeup for RN/CZN")
Reviewed-by: Mario Limonciello <mario.limonciello@amd.com>
Signed-off-by: Maciej S. Szmigiero <mail@maciej.szmigiero.name>
Link: https://lore.kernel.org/r/c8f28c002ca3c66fbeeb850904a1f43118e17200.1736184606.git.mail@maciej.szmigiero.name
[ij: edited the commit message.]
Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
History 2025-01-17 13:36:16 +01:00
..
chrome platform/chrome: cros_ec_typec: fix missing fwnode reference decrement 2024-12-09 10:32:48 +01:00
goldfish platform: goldfish: pipe: Use platform_get_irq() to get the interrupt 2022-03-18 13:55:21 +01:00
loongarch platform/loongarch: laptop: Fix possible UAF and simplify generic_acpi_laptop_init() 2022-10-29 16:29:31 +08:00
mellanox platform/mellanox: nvsw-sn2201: Add check for platform_device_add_resources 2024-07-25 09:50:51 +02:00
mips platform: mips: cpu_hwmon: Disable driver on unsupported hardware 2024-08-03 08:54:30 +02:00
olpc platform/olpc: olpc-xo175-ec: Use SPI device ID data to bind device 2023-03-20 14:43:35 +01:00
surface platform/surface: aggregator_registry: Add support for Surface Laptop Go 3 2024-09-18 19:24:06 +02:00
x86 platform/x86/amd/pmc: Only disable IRQ1 wakeup where i8042 actually enabled it 2025-01-17 13:36:16 +01:00
Kconfig platform/mips: Adjust Kconfig to keep consistency 2022-12-08 11:51:52 +01:00
Makefile LoongArch: Add ACPI-based generic laptop driver 2022-10-12 16:36:20 +08:00