diff mbox series

mmc: s3cmci: move to use request_irq by IRQF_NO_AUTOEN flag

Message ID 1617765339-28946-1-git-send-email-tiantao6@hisilicon.com
State New
Headers show
Series mmc: s3cmci: move to use request_irq by IRQF_NO_AUTOEN flag | expand

Commit Message

Tian Tao April 7, 2021, 3:15 a.m. UTC
disable_irq() after request_irq() still has a time gap in which
interrupts can come. request_irq() with IRQF_NO_AUTOEN flag will
disable IRQ auto-enable because of requesting.

this patch is made base on "add IRQF_NO_AUTOEN for request_irq" which
is being merged: https://lore.kernel.org/patchwork/patch/1388765/

Signed-off-by: Tian Tao <tiantao6@hisilicon.com>
---
 drivers/mmc/host/s3cmci.c | 7 +------
 1 file changed, 1 insertion(+), 6 deletions(-)

Comments

Ulf Hansson April 12, 2021, 7:50 a.m. UTC | #1
On Wed, 7 Apr 2021 at 05:15, Tian Tao <tiantao6@hisilicon.com> wrote:
>

> disable_irq() after request_irq() still has a time gap in which

> interrupts can come. request_irq() with IRQF_NO_AUTOEN flag will

> disable IRQ auto-enable because of requesting.

>

> this patch is made base on "add IRQF_NO_AUTOEN for request_irq" which

> is being merged: https://lore.kernel.org/patchwork/patch/1388765/

>

> Signed-off-by: Tian Tao <tiantao6@hisilicon.com>


FYI, I will have to wait to apply the $subject patch until the above
change (which is commit cbe16f35bee6 in linux-next) is available in an
rc.

Kind regards
Uffe


> ---

>  drivers/mmc/host/s3cmci.c | 7 +------

>  1 file changed, 1 insertion(+), 6 deletions(-)

>

> diff --git a/drivers/mmc/host/s3cmci.c b/drivers/mmc/host/s3cmci.c

> index 0ca6f6d..8d5929a 100644

> --- a/drivers/mmc/host/s3cmci.c

> +++ b/drivers/mmc/host/s3cmci.c

> @@ -1578,17 +1578,12 @@ static int s3cmci_probe(struct platform_device *pdev)

>                 goto probe_iounmap;

>         }

>

> -       if (request_irq(host->irq, s3cmci_irq, 0, DRIVER_NAME, host)) {

> +       if (request_irq(host->irq, s3cmci_irq, IRQF_NO_AUTOEN, DRIVER_NAME, host)) {

>                 dev_err(&pdev->dev, "failed to request mci interrupt.\n");

>                 ret = -ENOENT;

>                 goto probe_iounmap;

>         }

>

> -       /* We get spurious interrupts even when we have set the IMSK

> -        * register to ignore everything, so use disable_irq() to make

> -        * ensure we don't lock the system with un-serviceable requests. */

> -

> -       disable_irq(host->irq);

>         host->irq_state = false;

>

>         /* Depending on the dma state, get a DMA channel to use. */

> --

> 2.7.4

>
Ulf Hansson May 11, 2021, 10:56 a.m. UTC | #2
On Mon, 12 Apr 2021 at 09:50, Ulf Hansson <ulf.hansson@linaro.org> wrote:
>

> On Wed, 7 Apr 2021 at 05:15, Tian Tao <tiantao6@hisilicon.com> wrote:

> >

> > disable_irq() after request_irq() still has a time gap in which

> > interrupts can come. request_irq() with IRQF_NO_AUTOEN flag will

> > disable IRQ auto-enable because of requesting.

> >

> > this patch is made base on "add IRQF_NO_AUTOEN for request_irq" which

> > is being merged: https://lore.kernel.org/patchwork/patch/1388765/

> >

> > Signed-off-by: Tian Tao <tiantao6@hisilicon.com>

>

> FYI, I will have to wait to apply the $subject patch until the above

> change (which is commit cbe16f35bee6 in linux-next) is available in an

> rc.


Applied for next, thanks!

[...]

Kind regards
Uffe
diff mbox series

Patch

diff --git a/drivers/mmc/host/s3cmci.c b/drivers/mmc/host/s3cmci.c
index 0ca6f6d..8d5929a 100644
--- a/drivers/mmc/host/s3cmci.c
+++ b/drivers/mmc/host/s3cmci.c
@@ -1578,17 +1578,12 @@  static int s3cmci_probe(struct platform_device *pdev)
 		goto probe_iounmap;
 	}
 
-	if (request_irq(host->irq, s3cmci_irq, 0, DRIVER_NAME, host)) {
+	if (request_irq(host->irq, s3cmci_irq, IRQF_NO_AUTOEN, DRIVER_NAME, host)) {
 		dev_err(&pdev->dev, "failed to request mci interrupt.\n");
 		ret = -ENOENT;
 		goto probe_iounmap;
 	}
 
-	/* We get spurious interrupts even when we have set the IMSK
-	 * register to ignore everything, so use disable_irq() to make
-	 * ensure we don't lock the system with un-serviceable requests. */
-
-	disable_irq(host->irq);
 	host->irq_state = false;
 
 	/* Depending on the dma state, get a DMA channel to use. */