linux/drivers/firmware/arm_scmi
Pushpendra Singh a4447c0693 firmware: arm_scmi: Rate-limit queue-full warnings in IRQ context
The scmi_notify() function is called from interrupt context to queue
received notification events onto a per-protocol kfifo. When the kfifo
is full, it logs a warning via dev_warn() for every dropped event.

Under conditions where the platform sends a burst of SCMI notifications
faster than the deferred worker can drain the queue, this results in a
flood of dev_warn() calls from IRQ context. Each call acquires the
console lock and may execute blocking console writes, causing the CPU
to be held in interrupt context for an extended period and leading to
observable system stalls.

Fix this by switching to dev_warn_ratelimited() to limit the frequency
of log messages when the notification queue is full. This reduces
console overhead in interrupt context and prevents CPU stalls caused by
excessive logging, while still preserving diagnostic visibility.

Fixes: bd31b24969 ("firmware: arm_scmi: Add notification dispatch and delivery")
Signed-off-by: Pushpendra Singh <pushpendra.singh@oss.qualcomm.com>
Link: https://patch.msgid.link/20260708072339.3021140-1-pushpendra.singh@oss.qualcomm.com
Signed-off-by: Sudeep Holla <sudeep.holla@kernel.org>
2026-07-09 14:34:41 +01:00
..
transports firmware: arm_scmi: optee: Rework transport probe sequence 2026-05-21 17:31:51 +01:00
vendors/imx firmware: arm_scmi: imx: Support getting reset reason of MISC protocol 2026-05-05 15:45:35 +01:00
base.c firmware: arm_scmi: Validate BASE_ERROR_EVENT payload size 2026-05-20 10:00:10 +01:00
bus.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
clock.c firmware: arm_scmi: Use 64-bit division for clock rate rounding 2026-07-09 14:34:41 +01:00
common.h firmware: arm_scmi: Add a generic transport supplier 2026-05-21 17:31:51 +01:00
driver.c firmware: arm_scmi: Use proper iter_response_bound_cleanup() name 2026-05-12 15:29:11 +01:00
Kconfig firmware: arm_scmi: Grammar s/may needed/may be needed/ 2026-06-30 10:30:25 +01:00
Makefile firmware: arm_scmi: Add common framework to handle firmware quirks 2025-05-06 11:12:30 +01:00
msg.c firmware: arm_scmi: Remove legacy transport-layer code 2024-08-16 10:26:58 +01:00
notify.c firmware: arm_scmi: Rate-limit queue-full warnings in IRQ context 2026-07-09 14:34:41 +01:00
notify.h firmware: arm_scmi: Check for notification support 2024-02-20 06:35:55 +00:00
perf.c firmware: arm_scmi: Remove legacy protocol versioning logic 2025-12-27 20:09:30 +00:00
pinctrl.c firmware: arm_scmi: Allow PINCTRL_REQUEST to return EOPNOTSUPP 2026-03-24 13:50:30 +01:00
power.c firmware: arm_scmi: Fix OOB in scmi_power_name_get() 2026-05-21 17:31:51 +01:00
powercap.c firmware: arm_scmi: Validate Powercap domains before state access 2026-05-20 10:00:10 +01:00
protocols.h firmware: arm_scmi: Use proper iter_response_bound_cleanup() name 2026-05-12 15:29:11 +01:00
quirks.c firmware: arm_scmi: quirk: Simplify quirk table iteration 2026-05-05 15:45:59 +01:00
quirks.h firmware: arm_scmi: Support loop control in quirk code snippets 2026-03-17 07:30:22 +00:00
raw_mode.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
raw_mode.h firmware: arm_scmi: Add per-channel raw injection support 2023-01-20 11:41:37 +00:00
reset.c firmware: arm_scmi: Remove legacy protocol versioning logic 2025-12-27 20:09:30 +00:00
scmi_power_control.c firmware: arm_scmi: Convert to SYSTEM_SLEEP_PM_OPS 2025-07-09 10:49:58 +01:00
sensors.c firmware: arm_scmi: Validate SENSOR_UPDATE payload size 2026-05-20 10:00:10 +01:00
shmem.c firmware: arm_scmi: Fix uninitialized pointers with __free attr 2025-12-15 10:31:24 +00:00
system.c firmware: arm_scmi: Remove legacy protocol versioning logic 2025-12-27 20:09:30 +00:00
voltage.c firmware: arm_scmi: Remove legacy protocol versioning logic 2025-12-27 20:09:30 +00:00