Commit 27f3efd6 authored by James Smart's avatar James Smart Committed by Martin K. Petersen

scsi: lpfc: Fix lockdep errors in sli_ringtx_put

Fix lockdep error in __lpfc_sli_ringtx_put(): The hbalock is valid for
sli3, but not for sli4.  Change lockdep to look at ring lock if sli4.

Also update comment in __lpfc_sli_issue_iocb_s4() to reflect proper
lock. Note: lockdep check is already correct.

Link: https://lore.kernel.org/r/20191018211832.7917-4-jsmart2021@gmail.comSigned-off-by: default avatarDick Kennedy <dick.kennedy@broadcom.com>
Signed-off-by: default avatarJames Smart <jsmart2021@gmail.com>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent 0a5ce731
...@@ -9004,7 +9004,8 @@ lpfc_mbox_api_table_setup(struct lpfc_hba *phba, uint8_t dev_grp) ...@@ -9004,7 +9004,8 @@ lpfc_mbox_api_table_setup(struct lpfc_hba *phba, uint8_t dev_grp)
* @pring: Pointer to driver SLI ring object. * @pring: Pointer to driver SLI ring object.
* @piocb: Pointer to address of newly added command iocb. * @piocb: Pointer to address of newly added command iocb.
* *
* This function is called with hbalock held to add a command * This function is called with hbalock held for SLI3 ports or
* the ring lock held for SLI4 ports to add a command
* iocb to the txq when SLI layer cannot submit the command iocb * iocb to the txq when SLI layer cannot submit the command iocb
* to the ring. * to the ring.
**/ **/
...@@ -9012,7 +9013,10 @@ void ...@@ -9012,7 +9013,10 @@ void
__lpfc_sli_ringtx_put(struct lpfc_hba *phba, struct lpfc_sli_ring *pring, __lpfc_sli_ringtx_put(struct lpfc_hba *phba, struct lpfc_sli_ring *pring,
struct lpfc_iocbq *piocb) struct lpfc_iocbq *piocb)
{ {
lockdep_assert_held(&phba->hbalock); if (phba->sli_rev == LPFC_SLI_REV4)
lockdep_assert_held(&pring->ring_lock);
else
lockdep_assert_held(&phba->hbalock);
/* Insert the caller's iocb in the txq tail for later processing. */ /* Insert the caller's iocb in the txq tail for later processing. */
list_add_tail(&piocb->list, &pring->txq); list_add_tail(&piocb->list, &pring->txq);
} }
...@@ -9903,7 +9907,7 @@ lpfc_sli4_iocb2wqe(struct lpfc_hba *phba, struct lpfc_iocbq *iocbq, ...@@ -9903,7 +9907,7 @@ lpfc_sli4_iocb2wqe(struct lpfc_hba *phba, struct lpfc_iocbq *iocbq,
* __lpfc_sli_issue_iocb_s4 is used by other functions in the driver to issue * __lpfc_sli_issue_iocb_s4 is used by other functions in the driver to issue
* an iocb command to an HBA with SLI-4 interface spec. * an iocb command to an HBA with SLI-4 interface spec.
* *
* This function is called with hbalock held. The function will return success * This function is called with ringlock held. The function will return success
* after it successfully submit the iocb to firmware or after adding to the * after it successfully submit the iocb to firmware or after adding to the
* txq. * txq.
**/ **/
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment