[PATCH] mmc: host: meson-gx-mmc: fix possible deadlock condition for preempt_rt

Kevin Hilman khilman at baylibre.com
Thu Sep 24 13:01:41 EDT 2020


Hi Brad,

Brad Harper <bjharper at gmail.com> writes:

> Force threaded interrupts for meson_mmc_irq to prevent possible deadlock 
> condition
> during mmc operations when using preempt_rt with 5.9.0-rc3-rt3 patches 
> on arm64.
>
> Using meson-gx-mmc with an emmc device on Hardkernel Odroid N2+ 
> configured with
> preempt_rt resulted in the soc becoming unresponsive.  With lock 
> checking enabled
> the below inconsistent lock state was observed during boot.
>
> After some discussions with tglx in IRC #linux-rt the attached patch was 
> suggested
> to remove IRQF_ONESHOT from request_threaded_irq.
> This has been tested and confirmed by me to resolve both the 
> unresponsive soc and
> the inconsistent lock state warning when using 5.9.0-rc3-rt3 on arm64 
> Odroid N2+.
>
> Further review and testing is required to ensure there are no adverse 
> impacts or
> concerns and that is the correct method to resolve the problem.  I will 
> continue
> to test on various amlogic devices with both standard mainline low 
> latency kernel
> and preempt_rt kernel with -rt patches.

This looks right to me, thanks for sending a fix.

For broader testing, I can add this to my testing branch so it gets
booted on a bunch more platform in KernelCI also.

However...

[...]

> Signed-off-by: Brad Harper <bjharper at gmail.com>
> ---
>   drivers/mmc/host/meson-gx-mmc.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/mmc/host/meson-gx-mmc.c 
> b/drivers/mmc/host/meson-gx-mmc.c
> index 08a3b1c05..130ac134d 100644
> --- a/drivers/mmc/host/meson-gx-mmc.c
> +++ b/drivers/mmc/host/meson-gx-mmc.c
> @@ -1139,7 +1139,7 @@ static int meson_mmc_probe(struct platform_device 
> *pdev)
>                 host->regs + SD_EMMC_IRQ_EN);
>
>          ret = request_threaded_irq(host->irq, meson_mmc_irq,
> -                                  meson_mmc_irq_thread, IRQF_ONESHOT,
> +                                  meson_mmc_irq_thread, 0,
>                                     dev_name(&pdev->dev), host);
>          if (ret)
>                  goto err_init_clk;

This patch has been mangled by your mailer, so it doesn't apply cleanly.
If you're using the gmail web UI, this is a common problem.

I strongly recommend using git-send-email to send directly via gmail
SMTP.  The git-send-email docs[1] give some examples on how to set this
up.

Kevin

[1] https://git-scm.com/docs/git-send-email#_examples



More information about the linux-arm-kernel mailing list