2020-10-19 19:55:44

by Tian Tao

[permalink] [raw]
Subject: [PATCH] mmc: mediatek: replace spin_lock_irqsave by spin_lock in hard IRQ

The code has been in a irq-disabled context since it is hard IRQ. There
is no necessity to do it again.

Signed-off-by: Tian Tao <[email protected]>
---
drivers/mmc/host/mtk-sd.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/drivers/mmc/host/mtk-sd.c b/drivers/mmc/host/mtk-sd.c
index a704745..fb3e419 100644
--- a/drivers/mmc/host/mtk-sd.c
+++ b/drivers/mmc/host/mtk-sd.c
@@ -1536,13 +1536,12 @@ static irqreturn_t msdc_irq(int irq, void *dev_id)
struct mmc_host *mmc = mmc_from_priv(host);

while (true) {
- unsigned long flags;
struct mmc_request *mrq;
struct mmc_command *cmd;
struct mmc_data *data;
u32 events, event_mask;

- spin_lock_irqsave(&host->lock, flags);
+ spin_lock(&host->lock);
events = readl(host->base + MSDC_INT);
event_mask = readl(host->base + MSDC_INTEN);
if ((events & event_mask) & MSDC_INT_SDIOIRQ)
@@ -1553,7 +1552,7 @@ static irqreturn_t msdc_irq(int irq, void *dev_id)
mrq = host->mrq;
cmd = host->cmd;
data = host->data;
- spin_unlock_irqrestore(&host->lock, flags);
+ spin_unlock(&host->lock);

if ((events & event_mask) & MSDC_INT_SDIOIRQ)
sdio_signal_irq(mmc);
--
2.7.4


2020-10-29 12:11:00

by Ulf Hansson

[permalink] [raw]
Subject: Re: [PATCH] mmc: mediatek: replace spin_lock_irqsave by spin_lock in hard IRQ

On Mon, 19 Oct 2020 at 02:42, Tian Tao <[email protected]> wrote:
>
> The code has been in a irq-disabled context since it is hard IRQ. There
> is no necessity to do it again.
>
> Signed-off-by: Tian Tao <[email protected]>

Applied for next, thanks!

Kind regards
Uffe


> ---
> drivers/mmc/host/mtk-sd.c | 5 ++---
> 1 file changed, 2 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/mmc/host/mtk-sd.c b/drivers/mmc/host/mtk-sd.c
> index a704745..fb3e419 100644
> --- a/drivers/mmc/host/mtk-sd.c
> +++ b/drivers/mmc/host/mtk-sd.c
> @@ -1536,13 +1536,12 @@ static irqreturn_t msdc_irq(int irq, void *dev_id)
> struct mmc_host *mmc = mmc_from_priv(host);
>
> while (true) {
> - unsigned long flags;
> struct mmc_request *mrq;
> struct mmc_command *cmd;
> struct mmc_data *data;
> u32 events, event_mask;
>
> - spin_lock_irqsave(&host->lock, flags);
> + spin_lock(&host->lock);
> events = readl(host->base + MSDC_INT);
> event_mask = readl(host->base + MSDC_INTEN);
> if ((events & event_mask) & MSDC_INT_SDIOIRQ)
> @@ -1553,7 +1552,7 @@ static irqreturn_t msdc_irq(int irq, void *dev_id)
> mrq = host->mrq;
> cmd = host->cmd;
> data = host->data;
> - spin_unlock_irqrestore(&host->lock, flags);
> + spin_unlock(&host->lock);
>
> if ((events & event_mask) & MSDC_INT_SDIOIRQ)
> sdio_signal_irq(mmc);
> --
> 2.7.4
>