From: sashiko-bot@kernel.org
To: ziniu.wang_1@oss.nxp.com
Cc: Frank.Li@kernel.org, imx@lists.linux.dev
Subject: Re: [PATCH 2/4] mmc: sdhci-esdhc-imx: restore DLL override for DDR modes on resume
Date: Tue, 23 Jun 2026 07:47:48 +0000 [thread overview]
Message-ID: <20260623074748.5F8671F00ADE@smtp.kernel.org> (raw)
In-Reply-To: <20260623073515.2658205-3-ziniu.wang_1@oss.nxp.com>
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
Pre-existing issues:
- [High] Early error returns in suspend/resume paths bypass mandatory resource cleanup, PM usage counter balancing, and hardware state restoration.
--
commit 10711dfe4cc676e64053bf9eecc1ce9d4fa7a61e
Author: Luke Wang <ziniu.wang_1@nxp.com>
Subject: mmc: sdhci-esdhc-imx: restore DLL override for DDR modes on resume
This commit restores the DLL override configuration on the resume path for
SDIO devices operating in DDR mode that keep power during system suspend.
It extracts the DLL override setup into a helper function and calls it
during resume to ensure the configuration is not lost.
> diff --git a/drivers/mmc/host/sdhci-esdhc-imx.c b/drivers/mmc/host/sdhci-esdhc-imx.c
> index 6526d65538de5..a944351dbcdff 100644
> --- a/drivers/mmc/host/sdhci-esdhc-imx.c
> +++ b/drivers/mmc/host/sdhci-esdhc-imx.c
[ ... ]
> @@ -2123,9 +2132,18 @@ static int sdhci_esdhc_resume(struct device *dev)
> * restore the saved tuning delay value for the device which keep
> * power during system PM.
> */
> - if (mmc_card_keep_power(host->mmc) && esdhc_is_usdhc(imx_data))
> + if (mmc_card_keep_power(host->mmc) && esdhc_is_usdhc(imx_data)) {
> sdhc_esdhc_tuning_restore(host);
>
> + /*
> + * Restore DLL override for DDR modes. hwinit unconditionally
> + * clears ESDHC_DLL_CTRL, but the card is still in DDR mode.
> + */
> + if (host->timing == MMC_TIMING_UHS_DDR50 ||
> + host->timing == MMC_TIMING_MMC_DDR52)
> + esdhc_set_dll_override(host);
> + }
> +
> pm_runtime_put_autosuspend(dev);
>
> return ret;
[Severity: High]
This is a pre-existing issue, but do the suspend and resume error paths
bypass mandatory resource cleanup?
Looking at the start of sdhci_esdhc_resume():
sdhci_esdhc_resume() {
...
ret = pinctrl_pm_select_default_state(dev);
if (ret)
return ret;
...
If this fails, it returns early and bypasses pm_runtime_force_resume() and
pm_runtime_put_autosuspend() at the end of the function, leaving the
device runtime-suspended and its IRQ disabled.
A similar issue appears to exist in sdhci_esdhc_suspend():
sdhci_esdhc_suspend() {
...
/* The irqs of imx are not shared. It is safe to disable */
disable_irq(host->irq);
if (device_may_wakeup(dev)) {
...
} else {
ret = pinctrl_pm_select_sleep_state(dev);
if (ret)
return ret;
}
...
If pinctrl_pm_select_sleep_state() fails, it returns early without
re-enabling the IRQ that was just disabled or reverting the PM runtime
usage counter.
Could these error paths permanently hang the SDHCI controller until the
next reboot?
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260623073515.2658205-1-ziniu.wang_1@oss.nxp.com?part=2
next prev parent reply other threads:[~2026-06-23 7:47 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-06-23 7:35 [PATCH 0/4] mmc: sdhci-esdhc-imx: fix SDIO suspend/resume issues ziniu.wang_1
2026-06-23 7:35 ` [PATCH 1/4] mmc: sdhci-esdhc-imx: remove unnecessary mmc_card_wake_sdio_irq check for tuning save/restore ziniu.wang_1
2026-06-23 7:45 ` sashiko-bot
2026-06-23 7:35 ` [PATCH 2/4] mmc: sdhci-esdhc-imx: restore DLL override for DDR modes on resume ziniu.wang_1
2026-06-23 7:47 ` sashiko-bot [this message]
2026-06-23 7:35 ` [PATCH 3/4] mmc: sdhci-esdhc-imx: restore pinctrl before restoring ios timing " ziniu.wang_1
2026-06-23 7:47 ` sashiko-bot
2026-06-23 7:35 ` [PATCH 4/4] mmc: sdhci-esdhc-imx: disable irq during suspend to fix unhandled interrupt ziniu.wang_1
2026-06-23 7:41 ` sashiko-bot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260623074748.5F8671F00ADE@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=Frank.Li@kernel.org \
--cc=imx@lists.linux.dev \
--cc=sashiko-reviews@lists.linux.dev \
--cc=ziniu.wang_1@oss.nxp.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.