From: Xiaofei Tan <tanxiaofei@huawei.com>
To: <jejb@linux.ibm.com>, <martin.petersen@oracle.com>
Cc: <linux-scsi@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
<linuxarm@openeuler.org>, Xiaofei Tan <tanxiaofei@huawei.com>
Subject: [PATCH for-next 03/32] scsi: lpfc: Replace spin_lock_irqsave with spin_lock in hard IRQ
Date: Sun, 7 Feb 2021 19:36:34 +0800 [thread overview]
Message-ID: <1612697823-8073-4-git-send-email-tanxiaofei@huawei.com> (raw)
In-Reply-To: <1612697823-8073-1-git-send-email-tanxiaofei@huawei.com>
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 <tanxiaofei@huawei.com>
---
drivers/scsi/lpfc/lpfc_sli.c | 49 +++++++++++++++++++-------------------------
1 file changed, 21 insertions(+), 28 deletions(-)
diff --git a/drivers/scsi/lpfc/lpfc_sli.c b/drivers/scsi/lpfc/lpfc_sli.c
index fa1a714..6928750 100644
--- a/drivers/scsi/lpfc/lpfc_sli.c
+++ b/drivers/scsi/lpfc/lpfc_sli.c
@@ -12792,7 +12792,6 @@ lpfc_sli_sp_intr_handler(int irq, void *dev_id)
uint32_t ha_copy, hc_copy;
uint32_t work_ha_copy;
unsigned long status;
- unsigned long iflag;
uint32_t control;
MAILBOX_t *mbox, *pmbox;
@@ -12820,7 +12819,7 @@ lpfc_sli_sp_intr_handler(int irq, void *dev_id)
if (lpfc_intr_state_check(phba))
return IRQ_NONE;
/* Need to read HA REG for slow-path events */
- spin_lock_irqsave(&phba->hbalock, iflag);
+ spin_lock(&phba->hbalock);
if (lpfc_readl(phba->HAregaddr, &ha_copy))
goto unplug_error;
/* If somebody is waiting to handle an eratt don't process it
@@ -12843,7 +12842,7 @@ lpfc_sli_sp_intr_handler(int irq, void *dev_id)
* interrupt.
*/
if (unlikely(phba->hba_flag & DEFER_ERATT)) {
- spin_unlock_irqrestore(&phba->hbalock, iflag);
+ spin_unlock(&phba->hbalock);
return IRQ_NONE;
}
@@ -12858,7 +12857,7 @@ lpfc_sli_sp_intr_handler(int irq, void *dev_id)
phba->HAregaddr);
writel(hc_copy, phba->HCregaddr);
readl(phba->HAregaddr); /* flush */
- spin_unlock_irqrestore(&phba->hbalock, iflag);
+ spin_unlock(&phba->hbalock);
} else
ha_copy = phba->ha_copy;
@@ -12871,14 +12870,14 @@ lpfc_sli_sp_intr_handler(int irq, void *dev_id)
* Turn off Link Attention interrupts
* until CLEAR_LA done
*/
- spin_lock_irqsave(&phba->hbalock, iflag);
+ spin_lock(&phba->hbalock);
phba->sli.sli_flag &= ~LPFC_PROCESS_LA;
if (lpfc_readl(phba->HCregaddr, &control))
goto unplug_error;
control &= ~HC_LAINT_ENA;
writel(control, phba->HCregaddr);
readl(phba->HCregaddr); /* flush */
- spin_unlock_irqrestore(&phba->hbalock, iflag);
+ spin_unlock(&phba->hbalock);
}
else
work_ha_copy &= ~HA_LATT;
@@ -12893,7 +12892,7 @@ lpfc_sli_sp_intr_handler(int irq, void *dev_id)
(HA_RXMASK << (4*LPFC_ELS_RING)));
status >>= (4*LPFC_ELS_RING);
if (status & HA_RXMASK) {
- spin_lock_irqsave(&phba->hbalock, iflag);
+ spin_lock(&phba->hbalock);
if (lpfc_readl(phba->HCregaddr, &control))
goto unplug_error;
@@ -12923,10 +12922,10 @@ lpfc_sli_sp_intr_handler(int irq, void *dev_id)
(uint32_t)((unsigned long)
&phba->work_waitq));
}
- spin_unlock_irqrestore(&phba->hbalock, iflag);
+ spin_unlock(&phba->hbalock);
}
}
- spin_lock_irqsave(&phba->hbalock, iflag);
+ spin_lock(&phba->hbalock);
if (work_ha_copy & HA_ERATT) {
if (lpfc_sli_read_hs(phba))
goto unplug_error;
@@ -12954,7 +12953,7 @@ lpfc_sli_sp_intr_handler(int irq, void *dev_id)
/* First check out the status word */
lpfc_sli_pcimem_bcopy(mbox, pmbox, sizeof(uint32_t));
if (pmbox->mbxOwner != OWN_HOST) {
- spin_unlock_irqrestore(&phba->hbalock, iflag);
+ spin_unlock(&phba->hbalock);
/*
* Stray Mailbox Interrupt, mbxCommand <cmd>
* mbxStatus <status>
@@ -12970,7 +12969,7 @@ lpfc_sli_sp_intr_handler(int irq, void *dev_id)
work_ha_copy &= ~HA_MBATT;
} else {
phba->sli.mbox_active = NULL;
- spin_unlock_irqrestore(&phba->hbalock, iflag);
+ spin_unlock(&phba->hbalock);
phba->last_completion_time = jiffies;
del_timer(&phba->sli.mbox_tmo);
if (pmb->mbox_cmpl) {
@@ -13026,14 +13025,10 @@ lpfc_sli_sp_intr_handler(int irq, void *dev_id)
goto send_current_mbox;
}
}
- spin_lock_irqsave(
- &phba->pport->work_port_lock,
- iflag);
+ spin_lock(&phba->pport->work_port_lock);
phba->pport->work_port_events &=
~WORKER_MBOX_TMO;
- spin_unlock_irqrestore(
- &phba->pport->work_port_lock,
- iflag);
+ spin_unlock(&phba->pport->work_port_lock);
/* Do NOT queue MBX_HEARTBEAT to the worker
* thread for processing.
@@ -13051,7 +13046,7 @@ lpfc_sli_sp_intr_handler(int irq, void *dev_id)
}
}
} else
- spin_unlock_irqrestore(&phba->hbalock, iflag);
+ spin_unlock(&phba->hbalock);
if ((work_ha_copy & HA_MBATT) &&
(phba->sli.mbox_active == NULL)) {
@@ -13068,14 +13063,14 @@ lpfc_sli_sp_intr_handler(int irq, void *dev_id)
"MBX_SUCCESS\n");
}
- spin_lock_irqsave(&phba->hbalock, iflag);
+ spin_lock(&phba->hbalock);
phba->work_ha |= work_ha_copy;
- spin_unlock_irqrestore(&phba->hbalock, iflag);
+ spin_unlock(&phba->hbalock);
lpfc_worker_wake_up(phba);
}
return IRQ_HANDLED;
unplug_error:
- spin_unlock_irqrestore(&phba->hbalock, iflag);
+ spin_unlock(&phba->hbalock);
return IRQ_HANDLED;
} /* lpfc_sli_sp_intr_handler */
@@ -13105,7 +13100,6 @@ lpfc_sli_fp_intr_handler(int irq, void *dev_id)
struct lpfc_hba *phba;
uint32_t ha_copy;
unsigned long status;
- unsigned long iflag;
struct lpfc_sli_ring *pring;
/* Get the driver's phba structure from the dev_id and
@@ -13128,19 +13122,19 @@ lpfc_sli_fp_intr_handler(int irq, void *dev_id)
if (lpfc_readl(phba->HAregaddr, &ha_copy))
return IRQ_HANDLED;
/* Clear up only attention source related to fast-path */
- spin_lock_irqsave(&phba->hbalock, iflag);
+ spin_lock(&phba->hbalock);
/*
* If there is deferred error attention, do not check for
* any interrupt.
*/
if (unlikely(phba->hba_flag & DEFER_ERATT)) {
- spin_unlock_irqrestore(&phba->hbalock, iflag);
+ spin_unlock(&phba->hbalock);
return IRQ_NONE;
}
writel((ha_copy & (HA_R0_CLR_MSK | HA_R1_CLR_MSK)),
phba->HAregaddr);
readl(phba->HAregaddr); /* flush */
- spin_unlock_irqrestore(&phba->hbalock, iflag);
+ spin_unlock(&phba->hbalock);
} else
ha_copy = phba->ha_copy;
@@ -14790,7 +14784,6 @@ lpfc_sli4_hba_intr_handler(int irq, void *dev_id)
struct lpfc_hba *phba;
struct lpfc_hba_eq_hdl *hba_eq_hdl;
struct lpfc_queue *fpeq;
- unsigned long iflag;
int ecount = 0;
int hba_eqidx;
struct lpfc_eq_intr_info *eqi;
@@ -14813,11 +14806,11 @@ lpfc_sli4_hba_intr_handler(int irq, void *dev_id)
/* Check device state for handling interrupt */
if (unlikely(lpfc_intr_state_check(phba))) {
/* Check again for link_state with lock held */
- spin_lock_irqsave(&phba->hbalock, iflag);
+ spin_lock(&phba->hbalock);
if (phba->link_state < LPFC_LINK_DOWN)
/* Flush, clear interrupt, and rearm the EQ */
lpfc_sli4_eqcq_flush(phba, fpeq);
- spin_unlock_irqrestore(&phba->hbalock, iflag);
+ spin_unlock(&phba->hbalock);
return IRQ_NONE;
}
--
2.8.1
next prev parent reply other threads:[~2021-02-07 11:42 UTC|newest]
Thread overview: 63+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-02-07 11:36 [PATCH for-next 00/32] spin lock usage optimization for SCSI drivers Xiaofei Tan
2021-02-07 11:36 ` [PATCH for-next 01/32] scsi: 53c700: Replace spin_lock_irqsave with spin_lock in hard IRQ Xiaofei Tan
2021-02-07 11:36 ` [PATCH for-next 02/32] scsi: ipr: " Xiaofei Tan
2021-02-07 11:36 ` Xiaofei Tan [this message]
2021-02-07 11:36 ` [PATCH for-next 04/32] scsi: qla4xxx: " Xiaofei Tan
2021-02-07 11:36 ` [PATCH for-next 05/32] scsi: BusLogic: " Xiaofei Tan
2021-02-07 11:36 ` [PATCH for-next 06/32] scsi: a100u2w: " Xiaofei Tan
2021-02-07 11:36 ` [PATCH for-next 07/32] scsi: a2091: " Xiaofei Tan
2021-02-07 11:36 ` [PATCH for-next 08/32] scsi: a3000: " Xiaofei Tan
2021-02-07 11:36 ` [PATCH for-next 09/32] scsi: aha1740: " Xiaofei Tan
2021-02-07 11:36 ` [PATCH for-next 10/32] scsi: bfa: " Xiaofei Tan
2021-02-07 11:36 ` [PATCH for-next 11/32] scsi: esp_scsi: " Xiaofei Tan
2021-02-07 11:36 ` [PATCH for-next 12/32] scsi: gvp11: " Xiaofei Tan
2021-02-07 11:36 ` [PATCH for-next 13/32] scsi: hptiop: " Xiaofei Tan
2021-02-07 11:36 ` [PATCH for-next 14/32] scsi: ibmvscsi: " Xiaofei Tan
2021-02-07 11:36 ` [PATCH for-next 15/32] scsi: initio: " Xiaofei Tan
2021-02-07 11:36 ` [PATCH for-next 16/32] scsi: megaraid: " Xiaofei Tan
2021-02-07 11:36 ` [PATCH for-next 17/32] scsi: mac53c94: " Xiaofei Tan
2021-02-07 11:36 ` [PATCH for-next 18/32] scsi: mesh: " Xiaofei Tan
2021-02-07 11:36 ` [PATCH for-next 19/32] scsi: mvumi: " Xiaofei Tan
2021-02-07 11:36 ` [PATCH for-next 20/32] scsi: myrb: " Xiaofei Tan
2021-02-07 11:36 ` [PATCH for-next 21/32] scsi: myrs: " Xiaofei Tan
2021-02-07 11:36 ` [PATCH for-next 22/32] scsi: ncr53c8xx: " Xiaofei Tan
2021-02-07 11:36 ` [PATCH for-next 23/32] scsi: nsp32: " Xiaofei Tan
2021-02-07 11:36 ` [PATCH for-next 24/32] scsi: pmcraid: " Xiaofei Tan
2021-02-07 11:36 ` [PATCH for-next 25/32] scsi: pcmcia: " Xiaofei Tan
2021-02-07 11:36 ` [PATCH for-next 26/32] scsi: qlogicfas408: " Xiaofei Tan
2021-02-07 11:36 ` [PATCH for-next 27/32] scsi: qlogicpti: " Xiaofei Tan
2021-02-07 11:36 ` [PATCH for-next 28/32] scsi: sgiwd93: " Xiaofei Tan
2021-02-07 11:37 ` [PATCH for-next 29/32] scsi: stex: " Xiaofei Tan
2021-02-07 11:37 ` [PATCH for-next 30/32] scsi: vmw_pvscsi: " Xiaofei Tan
2021-02-07 11:37 ` [PATCH for-next 31/32] scsi: wd719x: " Xiaofei Tan
2021-02-07 11:37 ` [PATCH for-next 32/32] scsi: advansys: " Xiaofei Tan
2021-02-08 7:57 ` [PATCH for-next 00/32] spin lock usage optimization for SCSI drivers Finn Thain
2021-02-09 1:48 ` [Linuxarm] " Song Bao Hua (Barry Song)
2021-02-09 5:06 ` Finn Thain
2021-02-09 5:33 ` Song Bao Hua (Barry Song)
2021-02-10 0:28 ` Finn Thain
2021-02-10 0:37 ` Song Bao Hua (Barry Song)
2021-02-10 4:14 ` Finn Thain
2021-02-09 5:46 ` Song Bao Hua (Barry Song)
2021-02-10 4:16 ` Finn Thain
2021-02-10 5:14 ` Song Bao Hua (Barry Song)
2021-02-10 21:06 ` Finn Thain
2021-02-10 21:28 ` Song Bao Hua (Barry Song)
2021-02-10 22:34 ` Finn Thain
2021-02-10 23:49 ` Song Bao Hua (Barry Song)
2021-02-11 1:11 ` Finn Thain
2021-02-11 3:02 ` Song Bao Hua (Barry Song)
2021-02-11 23:58 ` Finn Thain
2021-02-12 0:21 ` Song Bao Hua (Barry Song)
2021-02-18 7:12 ` Xiaofei Tan
2021-02-20 5:18 ` Finn Thain
2021-02-22 2:04 ` Song Bao Hua (Barry Song)
2021-02-23 5:25 ` Finn Thain
2021-02-23 5:47 ` Song Bao Hua (Barry Song)
2021-02-24 5:20 ` Finn Thain
2021-02-24 10:50 ` Song Bao Hua (Barry Song)
2021-02-25 7:07 ` Finn Thain
2021-02-09 2:00 ` tanxiaofei
2021-02-09 5:11 ` Finn Thain
2021-02-24 9:41 ` Geert Uytterhoeven
2021-02-25 2:37 ` [Linuxarm] " Xiaofei Tan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1612697823-8073-4-git-send-email-tanxiaofei@huawei.com \
--to=tanxiaofei@huawei.com \
--cc=jejb@linux.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-scsi@vger.kernel.org \
--cc=linuxarm@openeuler.org \
--cc=martin.petersen@oracle.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.