From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5026E3B1EE2; Tue, 12 May 2026 17:44:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778607872; cv=none; b=btzdAXpUb4Jl3w2LhQtVDKC2qs8ofyMGRmW6xgmsDEuUYJMZmoYkFZCkU1ewgWBrk6ZFclVlWDrTwrq1A3dFnvPw8CmJZy+loMsljtSu0PUNEawy0dizoBbol+MF4hLUQAJ3jWMr4p4aRJaqd7uzy8/qjkiZ3b9++1ScIrEPV2s= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778607872; c=relaxed/simple; bh=6CeOGGpDNiv4azUuA2rCrCH+LPThuXxmR2dGrdSlEKs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=PmHo1DeJv3lJG57GfXWLVfv/9y68Q712j6Bf6aLF6ckQgy4ZeAc59JZGdw/vooiqX81N0t/tex2ADLxf3JTzKFryw45G5SPAzqFN2yEgwEjwmnFb25tCauAOMe4OsS+yiRJJKmmTrZYiWI3JPYTTUUe4yLZUtT7OdQkpRMirp+4= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b=lVO9EyGl; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b="lVO9EyGl" Received: by smtp.kernel.org (Postfix) with ESMTPSA id DAE74C2BCB0; Tue, 12 May 2026 17:44:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1778607872; bh=6CeOGGpDNiv4azUuA2rCrCH+LPThuXxmR2dGrdSlEKs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=lVO9EyGlVxZylimDZJqf8S5e82rWHDCiKXKT5ufiioSLrKTA0zeU7K/5ee3lcFKqJ bQhV5P4ED/9Hng4pUCtwUSXP3NXUIyMOUg+jsP9RGLwaU3dR0ygpdIsDoU7THOtePO XclP/SS3ltXlGazYpySSwbGpaF50E6R3wj7mccIw= From: Greg Kroah-Hartman To: stable@vger.kernel.org Cc: Greg Kroah-Hartman , patches@lists.linux.dev, Sebastian Andrzej Siewior , Johan Hovold , Mark Brown Subject: [PATCH 6.12 069/206] spi: ti-qspi: fix controller deregistration Date: Tue, 12 May 2026 19:38:41 +0200 Message-ID: <20260512173934.307416066@linuxfoundation.org> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260512173932.810559588@linuxfoundation.org> References: <20260512173932.810559588@linuxfoundation.org> User-Agent: quilt/0.69 X-stable: review X-Patchwork-Hint: ignore Precedence: bulk X-Mailing-List: stable@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit 6.12-stable review patch. If anyone has any objections, please let me know. ------------------ From: Johan Hovold commit 0c18a1bacbb1d8b8aa34d3d004a2cb8226c8b1ea upstream. Make sure to deregister the controller before disabling underlying resources like clocks during driver unbind. Note that the controller is suspended before disabling and releasing resources since commit 3ac066e2227c ("spi: spi-ti-qspi: Suspend the queue before removing the device") which avoids issues like unclocked accesses but prevents SPI device drivers from doing I/O during deregistration. Fixes: 3b3a80019ff1 ("spi: ti-qspi: one only one interrupt handler") Cc: stable@vger.kernel.org # 3.13 Cc: Sebastian Andrzej Siewior Signed-off-by: Johan Hovold Link: https://patch.msgid.link/20260410081757.503099-24-johan@kernel.org Signed-off-by: Mark Brown Signed-off-by: Greg Kroah-Hartman --- drivers/spi/spi-ti-qspi.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) --- a/drivers/spi/spi-ti-qspi.c +++ b/drivers/spi/spi-ti-qspi.c @@ -895,7 +895,7 @@ no_dma: qspi->mmap_enabled = false; qspi->current_cs = -1; - ret = devm_spi_register_controller(&pdev->dev, host); + ret = spi_register_controller(host); if (!ret) return 0; @@ -910,19 +910,17 @@ free_host: static void ti_qspi_remove(struct platform_device *pdev) { struct ti_qspi *qspi = platform_get_drvdata(pdev); - int rc; - rc = spi_controller_suspend(qspi->host); - if (rc) { - dev_alert(&pdev->dev, "spi_controller_suspend() failed (%pe)\n", - ERR_PTR(rc)); - return; - } + spi_controller_get(qspi->host); + + spi_unregister_controller(qspi->host); pm_runtime_put_sync(&pdev->dev); pm_runtime_disable(&pdev->dev); ti_qspi_dma_cleanup(qspi); + + spi_controller_put(qspi->host); } static const struct dev_pm_ops ti_qspi_pm_ops = {