drivers/base/power/runtime.c | 6 +++--- drivers/spi/spi-geni-qcom.c | 17 ++++++++++------- 2 files changed, 13 insertions(+), 10 deletions(-)
When a runtime PM resume callback returns an error, rpm_callback() sets
power.runtime_error on the device. All subsequent rpm_resume() calls
then return -EINVAL immediately at the top of the function, permanently
blocking any future resume attempt — including those triggered by
consumers trying to power up their suppliers — until runtime PM is
explicitly re-initialized.
Unlike suspend failures, resume failures should be retryable. The first
patch fixes this in the core by only setting power.runtime_error when a
suspend callback fails, leaving resume failures transient by nature.
The second patch fixes a pre-existing issue in the spi-geni-qcom driver
that this scenario exposed: pm_runtime_get_sync() was called in
spi_geni_init() without checking the return value, so a resume failure
would silently proceed to access hardware registers on a device that was
not powered up.
Signed-off-by: Praveen Talari <praveen.talari@oss.qualcomm.com>
---
Changes in v4:
- Added close brace to resolve build issue.
- Link to v3: https://patch.msgid.link/20260706-fix_sticky_-einval_after_pm_runtime_api_failure-v3-0-92feb5a7b926@oss.qualcomm.com
Changes in v3:
- Moved power.runtime_error assignment from rpm_callback() into
rpm_suspend() at the fail label, per maintainer feedback.
- Link to v2: https://patch.msgid.link/20260703-fix_sticky_-einval_after_pm_runtime_api_failure-v2-0-578b78a0cf46@oss.qualcomm.com
Changes in v2:
- Reworked the fix per maintainer feedback: instead of calling
pm_runtime_set_suspended() in rpm_get_suppliers(), fix the root cause
in rpm_callback() by not setting power.runtime_error on resume
callback failures.
- Link to v1: https://patch.msgid.link/20260702-fix_sticky_-einval_after_pm_runtime_api_failure-v1-0-6ddc317011c0@oss.qualcomm.com
To: "Rafael J. Wysocki" <rafael@kernel.org>
To: Pavel Machek <pavel@kernel.org>
To: Len Brown <lenb@kernel.org>
To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: Danilo Krummrich <dakr@kernel.org>
To: Mark Brown <broonie@kernel.org>
To: Alok Chauhan <alokc@codeaurora.org>
To: Stephen Boyd <swboyd@chromium.org>
To: Douglas Anderson <dianders@chromium.org>
To: Dilip Kota <dkota@codeaurora.org>
To: Girish Mahadevan <girishm@codeaurora.org>
To: bjorn.andersson@oss.qualcomm.com
To: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Cc: linux-pm@vger.kernel.org
Cc: driver-core@lists.linux.dev
Cc: linux-kernel@vger.kernel.org
Cc: linux-arm-msm@vger.kernel.org
Cc: linux-spi@vger.kernel.org
Cc: Mukesh Kumar Savaliya <mukesh.savaliya@oss.qualcomm.com>
Cc: aniket.randive@oss.qualcomm.com
Cc: chandana.chiluveru@oss.qualcomm.com
---
Praveen Talari (2):
PM: runtime: Only set runtime_error on suspend callback failures
spi: qcom-geni: Fix missing error check on pm_runtime_get_sync()
drivers/base/power/runtime.c | 6 +++---
drivers/spi/spi-geni-qcom.c | 17 ++++++++++-------
2 files changed, 13 insertions(+), 10 deletions(-)
---
base-commit: 34cf6dafc47441dfb6b356a095b89c3585a93714
change-id: 20260625-fix_sticky_-einval_after_pm_runtime_api_failure-6797d0a5c4d0
Best regards,
--
Praveen Talari <praveen.talari@oss.qualcomm.com>
On Fri, 10 Jul 2026 15:42:42 +0530, Praveen Talari wrote:
> PM: runtime: Fix sticky -EINVAL after resume callback failure
>
> When a runtime PM resume callback returns an error, rpm_callback() sets
> power.runtime_error on the device. All subsequent rpm_resume() calls
> then return -EINVAL immediately at the top of the function, permanently
> blocking any future resume attempt — including those triggered by
> consumers trying to power up their suppliers — until runtime PM is
> explicitly re-initialized.
>
> [...]
Applied to
https://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi.git for-7.3
Thanks!
[2/2] spi: qcom-geni: Fix missing error check on pm_runtime_get_sync()
https://git.kernel.org/broonie/spi/c/d8e9ea989acb
All being well this means that it will be integrated into the linux-next
tree (usually sometime in the next 24 hours) and sent to Linus during
the next merge window (or sooner if it is a bug fix), however if
problems are discovered then the patch may be dropped or reverted.
You may get further e-mails resulting from automated or manual testing
and review of the tree, please engage with people reporting problems and
send followup patches addressing any issues that are reported if needed.
If any updates are required or you are submitting further changes they
should be sent as incremental updates against current git, existing
patches will not be replaced.
Please add any relevant lists and maintainers to the CCs when replying
to this mail.
Thanks,
Mark
© 2016 - 2026 Red Hat, Inc.