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

From: Kevin Hilman
Date: Thu Sep 24 2020 - 13:01:44 EST


Hi Brad,

Brad Harper <bjharper@xxxxxxxxx> 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@xxxxxxxxx>
> ---
>  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