On Thu, 21 Mar 2024 at 15:30, Mantas Pucka <mantas@xxxxxxxxxxxx> wrote: > > Generic sdhci code registers LED device and uses host->runtime_suspended > flag to protect access to it. The sdhci-msm driver doesn't set this flag, > which causes a crash when LED is accessed while controller is runtime > suspended. Fix this by setting the flag correctly. > > Cc: stable@xxxxxxxxxxxxxxx > Fixes: 67e6db113c90 ("mmc: sdhci-msm: Add pm_runtime and system PM support") > Signed-off-by: Mantas Pucka <mantas@xxxxxxxxxxxx> Applied for fixes, thanks! Kind regards Uffe > --- > drivers/mmc/host/sdhci-msm.c | 16 +++++++++++++++- > 1 file changed, 15 insertions(+), 1 deletion(-) > > diff --git a/drivers/mmc/host/sdhci-msm.c b/drivers/mmc/host/sdhci-msm.c > index 668e0aceeeba..e113b99a3eab 100644 > --- a/drivers/mmc/host/sdhci-msm.c > +++ b/drivers/mmc/host/sdhci-msm.c > @@ -2694,6 +2694,11 @@ static __maybe_unused int sdhci_msm_runtime_suspend(struct device *dev) > struct sdhci_host *host = dev_get_drvdata(dev); > struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host); > struct sdhci_msm_host *msm_host = sdhci_pltfm_priv(pltfm_host); > + unsigned long flags; > + > + spin_lock_irqsave(&host->lock, flags); > + host->runtime_suspended = true; > + spin_unlock_irqrestore(&host->lock, flags); > > /* Drop the performance vote */ > dev_pm_opp_set_rate(dev, 0); > @@ -2708,6 +2713,7 @@ static __maybe_unused int sdhci_msm_runtime_resume(struct device *dev) > struct sdhci_host *host = dev_get_drvdata(dev); > struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host); > struct sdhci_msm_host *msm_host = sdhci_pltfm_priv(pltfm_host); > + unsigned long flags; > int ret; > > ret = clk_bulk_prepare_enable(ARRAY_SIZE(msm_host->bulk_clks), > @@ -2726,7 +2732,15 @@ static __maybe_unused int sdhci_msm_runtime_resume(struct device *dev) > > dev_pm_opp_set_rate(dev, msm_host->clk_rate); > > - return sdhci_msm_ice_resume(msm_host); > + ret = sdhci_msm_ice_resume(msm_host); > + if (ret) > + return ret; > + > + spin_lock_irqsave(&host->lock, flags); > + host->runtime_suspended = false; > + spin_unlock_irqrestore(&host->lock, flags); > + > + return ret; > } > > static const struct dev_pm_ops sdhci_msm_pm_ops = { > > --- > base-commit: e8f897f4afef0031fe618a8e94127a0934896aba > change-id: 20240321-sdhci-mmc-suspend-34f4af1d0286 > > Best regards, > -- > Mantas Pucka <mantas@xxxxxxxxxxxx> >