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 |
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 >
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 --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. */
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(-)