diff options
author | James Smart <james.smart@emulex.com> | 2012-06-12 13:54:36 -0400 |
---|---|---|
committer | James Bottomley <JBottomley@Parallels.com> | 2012-07-20 03:58:28 -0400 |
commit | 618a5230b8fa62bc7901b8b754b4379b3fcfa0f9 (patch) | |
tree | da409c55a30e8d283f31bb8594df3da6e395a002 /drivers/scsi/lpfc/lpfc_sli.c | |
parent | bbeb79b90e806da2e2338bd8d89c6fa8a1333357 (diff) |
[SCSI] lpfc 8.3.32: Correct provisioning change failure on local function
Fixed system held-up when performing resource provsion through same PCI
function
Signed-off-by: Alex Iannicelli <alex.iannicelli@emulex.com>
Signed-off-by: James Smart <james.smart@emulex.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
Diffstat (limited to 'drivers/scsi/lpfc/lpfc_sli.c')
-rw-r--r-- | drivers/scsi/lpfc/lpfc_sli.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/drivers/scsi/lpfc/lpfc_sli.c b/drivers/scsi/lpfc/lpfc_sli.c index 3e4f8eaa1fb8..3333e64703a3 100644 --- a/drivers/scsi/lpfc/lpfc_sli.c +++ b/drivers/scsi/lpfc/lpfc_sli.c | |||
@@ -8984,7 +8984,7 @@ lpfc_sli_hba_down(struct lpfc_hba *phba) | |||
8984 | int i; | 8984 | int i; |
8985 | 8985 | ||
8986 | /* Shutdown the mailbox command sub-system */ | 8986 | /* Shutdown the mailbox command sub-system */ |
8987 | lpfc_sli_mbox_sys_shutdown(phba); | 8987 | lpfc_sli_mbox_sys_shutdown(phba, LPFC_MBX_WAIT); |
8988 | 8988 | ||
8989 | lpfc_hba_down_prep(phba); | 8989 | lpfc_hba_down_prep(phba); |
8990 | 8990 | ||
@@ -9996,11 +9996,17 @@ lpfc_sli_issue_mbox_wait(struct lpfc_hba *phba, LPFC_MBOXQ_t *pmboxq, | |||
9996 | * sub-system flush routine to gracefully bring down mailbox sub-system. | 9996 | * sub-system flush routine to gracefully bring down mailbox sub-system. |
9997 | **/ | 9997 | **/ |
9998 | void | 9998 | void |
9999 | lpfc_sli_mbox_sys_shutdown(struct lpfc_hba *phba) | 9999 | lpfc_sli_mbox_sys_shutdown(struct lpfc_hba *phba, int mbx_action) |
10000 | { | 10000 | { |
10001 | struct lpfc_sli *psli = &phba->sli; | 10001 | struct lpfc_sli *psli = &phba->sli; |
10002 | unsigned long timeout; | 10002 | unsigned long timeout; |
10003 | 10003 | ||
10004 | if (mbx_action == LPFC_MBX_NO_WAIT) { | ||
10005 | /* delay 100ms for port state */ | ||
10006 | msleep(100); | ||
10007 | lpfc_sli_mbox_sys_flush(phba); | ||
10008 | return; | ||
10009 | } | ||
10004 | timeout = msecs_to_jiffies(LPFC_MBOX_TMO * 1000) + jiffies; | 10010 | timeout = msecs_to_jiffies(LPFC_MBOX_TMO * 1000) + jiffies; |
10005 | 10011 | ||
10006 | spin_lock_irq(&phba->hbalock); | 10012 | spin_lock_irq(&phba->hbalock); |