[PATCH 0/4] spi: fix sticky -EINVAL after PM runtime resume failure

From: Praveen Talari

Date: Thu Jul 02 2026 - 02:14:22 EST


When pm_runtime_get_sync() fails, the RPM core sets power.runtime_error,
causing every subsequent get call to return -EINVAL without attempting
the resume. This makes the controller permanently unusable until rebound,
requiring a driver rebind to recover.

Fixes the missing pm_runtime_set_suspended() calls in the SPI core and
the qcom-geni driver to clear runtime_error on failure, allowing the next
transfer to retry the resume.

Symptoms observed:
spi_master spi2: Failed to power device: -110
spi_master spi2: noqueue transfer failed
geni_spi 988000.spi: Runtime PM usage count underflow!
spi_master spi2: Failed to power device: -22
spi_master spi2: noqueue transfer failed

Signed-off-by: Praveen Talari <praveen.talari@xxxxxxxxxxxxxxxx>
---
Praveen Talari (4):
PM: runtime: Clear runtime_error on supplier after failed get_sync
spi: core: fix sticky -EINVAL after pm_runtime_get_sync() failure
spi: qcom-geni: Fix missing error check on pm_runtime_get_sync()
spi: qcom-geni: fix sticky -EINVAL after PM runtime resume failure

drivers/base/power/runtime.c | 1 +
drivers/spi/spi-geni-qcom.c | 18 +++++++++++-------
drivers/spi/spi.c | 3 +++
3 files changed, 15 insertions(+), 7 deletions(-)
---
base-commit: 4e5dfb7c84012007c3c7061126491bbc92d71bf1
change-id: 20260625-fix_sticky_-einval_after_pm_runtime_api_failure-6797d0a5c4d0

Best regards,
--
Praveen Talari <praveen.talari@xxxxxxxxxxxxxxxx>