2021-02-04 07:15:27

by Xiaofei Tan

[permalink] [raw]
Subject: [PATCH] mmc: cavium: Replace spin_lock_irqsave with spin_lock in hard IRQ

It is redundant to do irqsave and irqrestore in hardIRQ context, where
it has been in a irq-disabled context.

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

diff --git a/drivers/mmc/host/cavium.c b/drivers/mmc/host/cavium.c
index c5da3aa..4bb8f28 100644
--- a/drivers/mmc/host/cavium.c
+++ b/drivers/mmc/host/cavium.c
@@ -436,12 +436,11 @@ irqreturn_t cvm_mmc_interrupt(int irq, void *dev_id)
{
struct cvm_mmc_host *host = dev_id;
struct mmc_request *req;
- unsigned long flags = 0;
u64 emm_int, rsp_sts;
bool host_done;

if (host->need_irq_handler_lock)
- spin_lock_irqsave(&host->irq_handler_lock, flags);
+ spin_lock(&host->irq_handler_lock);
else
__acquire(&host->irq_handler_lock);

@@ -504,7 +503,7 @@ irqreturn_t cvm_mmc_interrupt(int irq, void *dev_id)
host->release_bus(host);
out:
if (host->need_irq_handler_lock)
- spin_unlock_irqrestore(&host->irq_handler_lock, flags);
+ spin_unlock(&host->irq_handler_lock);
else
__release(&host->irq_handler_lock);
return IRQ_RETVAL(emm_int != 0);
--
2.8.1


2021-02-08 12:26:13

by Ulf Hansson

[permalink] [raw]
Subject: Re: [PATCH] mmc: cavium: Replace spin_lock_irqsave with spin_lock in hard IRQ

On Thu, 4 Feb 2021 at 08:09, Xiaofei Tan <[email protected]> wrote:
>
> It is redundant to do irqsave and irqrestore in hardIRQ context, where
> it has been in a irq-disabled context.
>
> Signed-off-by: Xiaofei Tan <[email protected]>

Applied for next, thanks!

Kind regards
Uffe


> ---
> drivers/mmc/host/cavium.c | 5 ++---
> 1 file changed, 2 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/mmc/host/cavium.c b/drivers/mmc/host/cavium.c
> index c5da3aa..4bb8f28 100644
> --- a/drivers/mmc/host/cavium.c
> +++ b/drivers/mmc/host/cavium.c
> @@ -436,12 +436,11 @@ irqreturn_t cvm_mmc_interrupt(int irq, void *dev_id)
> {
> struct cvm_mmc_host *host = dev_id;
> struct mmc_request *req;
> - unsigned long flags = 0;
> u64 emm_int, rsp_sts;
> bool host_done;
>
> if (host->need_irq_handler_lock)
> - spin_lock_irqsave(&host->irq_handler_lock, flags);
> + spin_lock(&host->irq_handler_lock);
> else
> __acquire(&host->irq_handler_lock);
>
> @@ -504,7 +503,7 @@ irqreturn_t cvm_mmc_interrupt(int irq, void *dev_id)
> host->release_bus(host);
> out:
> if (host->need_irq_handler_lock)
> - spin_unlock_irqrestore(&host->irq_handler_lock, flags);
> + spin_unlock(&host->irq_handler_lock);
> else
> __release(&host->irq_handler_lock);
> return IRQ_RETVAL(emm_int != 0);
> --
> 2.8.1
>