drivers/spi/spi-cadence-quadspi.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
In csqspi_probe(), when cqspi_request_mmap_dma() returns -EPROBE_DEFER,
we handle the error by jumping to probe_setup_failed.
In that label, we call pm_runtime_disable(), even if we never called
pm_runtime_enable() before.
Because of this, the driver cannot probe:
[ 2.690018] cadence-qspi 47040000.spi: No Rx DMA available
[ 2.699735] spi-nor spi0.0: resume failed with -13
[ 2.699741] spi-nor: probe of spi0.0 failed with error -13
Only call pm_runtime_disable() if it was enabled by adding a new
label to handle cqspi_request_mmap_dma() failures.
Fixes: b07f349d1864 ("spi: spi-cadence-quadspi: Fix pm runtime unbalance")
Signed-off-by: Mattijs Korpershoek <mkorpershoek@kernel.org>
---
This has been tested on a AM69 SK board.
---
Changes in v2:
- Updated message to use correct Fixes tag (Dan)
- Link to v1: https://lore.kernel.org/r/20251008-cadence-quadspi-fix-pm-runtime-v1-1-33bcb4b83a2e@kernel.org
---
drivers/spi/spi-cadence-quadspi.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/drivers/spi/spi-cadence-quadspi.c b/drivers/spi/spi-cadence-quadspi.c
index 8fb13df8ff8714d2ad5a019f0ae0ec3ee38833bb..81017402bc5661d08ff4e75017db954fda19ba2a 100644
--- a/drivers/spi/spi-cadence-quadspi.c
+++ b/drivers/spi/spi-cadence-quadspi.c
@@ -1995,7 +1995,7 @@ static int cqspi_probe(struct platform_device *pdev)
if (cqspi->use_direct_mode) {
ret = cqspi_request_mmap_dma(cqspi);
if (ret == -EPROBE_DEFER)
- goto probe_setup_failed;
+ goto probe_dma_failed;
}
if (!(ddata && (ddata->quirks & CQSPI_DISABLE_RUNTIME_PM))) {
@@ -2019,9 +2019,10 @@ static int cqspi_probe(struct platform_device *pdev)
return 0;
probe_setup_failed:
- cqspi_controller_enable(cqspi, 0);
if (!(ddata && (ddata->quirks & CQSPI_DISABLE_RUNTIME_PM)))
pm_runtime_disable(dev);
+probe_dma_failed:
+ cqspi_controller_enable(cqspi, 0);
probe_reset_failed:
if (cqspi->is_jh7110)
cqspi_jh7110_disable_clk(pdev, cqspi);
---
base-commit: 0d97f2067c166eb495771fede9f7b73999c67f66
change-id: 20251008-cadence-quadspi-fix-pm-runtime-bf8df9104577
Best regards,
--
Mattijs Korpershoek <mkorpershoek@kernel.org>
On Thu, 09 Oct 2025 09:10:38 +0200, Mattijs Korpershoek wrote:
> In csqspi_probe(), when cqspi_request_mmap_dma() returns -EPROBE_DEFER,
> we handle the error by jumping to probe_setup_failed.
> In that label, we call pm_runtime_disable(), even if we never called
> pm_runtime_enable() before.
>
> Because of this, the driver cannot probe:
>
> [...]
Applied to
https://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi.git for-next
Thanks!
[1/1] spi: cadence-quadspi: Fix pm_runtime unbalance on dma EPROBE_DEFER
commit: 8735696acea24ac1f9d4490992418c71941ca68c
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
On Thu, Oct 09, 2025 at 09:10:38AM +0200, Mattijs Korpershoek wrote: > In csqspi_probe(), when cqspi_request_mmap_dma() returns -EPROBE_DEFER, > we handle the error by jumping to probe_setup_failed. > In that label, we call pm_runtime_disable(), even if we never called > pm_runtime_enable() before. This doesn't apply against current code, please check and resend.
On Mon, Oct 13, 2025 at 11:22, Mark Brown <broonie@kernel.org> wrote: > On Thu, Oct 09, 2025 at 09:10:38AM +0200, Mattijs Korpershoek wrote: >> In csqspi_probe(), when cqspi_request_mmap_dma() returns -EPROBE_DEFER, >> we handle the error by jumping to probe_setup_failed. >> In that label, we call pm_runtime_disable(), even if we never called >> pm_runtime_enable() before. > > This doesn't apply against current code, please check and resend. Ah, sorry about that. I based this on master. I confirm it does not apply on for-6.18. Will resend shortly.
On Thu, Oct 09, 2025 at 09:10:38AM +0200, Mattijs Korpershoek wrote:
> In csqspi_probe(), when cqspi_request_mmap_dma() returns -EPROBE_DEFER,
> we handle the error by jumping to probe_setup_failed.
> In that label, we call pm_runtime_disable(), even if we never called
> pm_runtime_enable() before.
>
> Because of this, the driver cannot probe:
>
> [ 2.690018] cadence-qspi 47040000.spi: No Rx DMA available
> [ 2.699735] spi-nor spi0.0: resume failed with -13
> [ 2.699741] spi-nor: probe of spi0.0 failed with error -13
>
> Only call pm_runtime_disable() if it was enabled by adding a new
> label to handle cqspi_request_mmap_dma() failures.
>
> Fixes: b07f349d1864 ("spi: spi-cadence-quadspi: Fix pm runtime unbalance")
> Signed-off-by: Mattijs Korpershoek <mkorpershoek@kernel.org>
> ---
> This has been tested on a AM69 SK board.
> ---
> Changes in v2:
> - Updated message to use correct Fixes tag (Dan)
> - Link to v1: https://lore.kernel.org/r/20251008-cadence-quadspi-fix-pm-runtime-v1-1-33bcb4b83a2e@kernel.org
Thanks!
Reviewed-by: Dan Carpenter <dan.carpenter@linaro.org>
regards,
dan carpenter
© 2016 - 2025 Red Hat, Inc.