Skip to contentSkip to conversation

ipr: RESEND: fix PCI permanent error handler

PATCH In review Kleber S. Souza 3 participants 7 messages Apr 20, 2009 – May 20, 2009

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 ipr: RESEND: fix PCI permanent error handler

From: Brian King <[email protected]>

The ipr driver can hang if it encounters enough PCI errors to trigger the permanent error handler. The driver will attempt to initiate a "bringdown" of the adapter and fail all pending ops back. However, this bringdown is unlike any other bringdown of the adapter in the code as the driver. In this code path we end up failing back ops with allow_cmds still set to 1. This results in some commands, the HCAM commands in particular, getting immediately re-issued to the adapter on the done call, which results in an infinite loop in ipr_fail_all_ops. Fix this by setting allow_cmds to zero in this path.

---

 drivers/scsi/ipr.c |    1 +
 1 file changed, 1 insertion(+)

diff -puN drivers/scsi/ipr.c~ipr_pci_perm_failure_hang drivers/scsi/ipr.c
---
linux-2.6/drivers/scsi/ipr.c~ipr_pci_perm_failure_hang 2009-04-15
09:25:21.000000000 -0500
+++ linux-2.6-bjking1/drivers/scsi/ipr.c 2009-04-15
09:25:39.000000000 -0500
@@ -6998,6 +6998,7 @@ static void ipr_pci_perm_failure(struct

                ioa_cfg->sdt_state = ABORT_DUMP;
        ioa_cfg->reset_retries = IPR_NUM_RESET_RELOAD_RETRIES;
        ioa_cfg->in_ioa_bringdown = 1;
+       ioa_cfg->allow_cmds = 0;
        ipr_initiate_ioa_reset(ioa_cfg, IPR_SHUTDOWN_NONE);
        spin_unlock_irqrestore(ioa_cfg->host->host_lock, flags);

}
_
--

Signature · 2 lines
Kleber S. Souza
IBM Linux Technology Center
maintainer
#1 lore raw
Quoted 13 lines · Kleber S. Souza

From: Brian King <[email protected]>

The ipr driver can hang if it encounters enough PCI errors to trigger the permanent error handler. The driver will attempt to initiate a "bringdown" of the adapter and fail all pending ops back. However, this bringdown is unlike any other bringdown of the adapter in the code as the driver. In this code path we end up failing back ops with allow_cmds still set to 1. This results in some commands, the HCAM commands in particular, getting immediately re-issued to the adapter on the done call, which results in an infinite loop in ipr_fail_all_ops. Fix this by setting allow_cmds to zero in this path.

Quoted 2 lines

OK, now I'm really confused. Originally this patch was your From: but had a Brian signoff. I asked if it shouldn't be acked by him instead and he responded "correct".

Now you've sent the patch as being his original authorship ... whose patch is this?

James

#2 lore raw

Kleber found the problem, debugged it, and provided a fix to me. I provided him with an alternate patch to fix it. I'm assuming this should have been handled by me submitting with my signoff alone and adding a reported-by tag for Kleber. Sorry for the confusion. Shall I resend as I just described?

Thanks,

Brian

Quoted 31 lines · James Bottomley
Quoted 13 lines · Kleber S. Souza

From: Brian King <[email protected]>

The ipr driver can hang if it encounters enough PCI errors to trigger the permanent error handler. The driver will attempt to initiate a "bringdown" of the adapter and fail all pending ops back. However, this bringdown is unlike any other bringdown of the adapter in the code as the driver. In this code path we end up failing back ops with allow_cmds still set to 1. This results in some commands, the HCAM commands in particular, getting immediately re-issued to the adapter on the done call, which results in an infinite loop in ipr_fail_all_ops. Fix this by setting allow_cmds to zero in this path.

Quoted 2 lines

OK, now I'm really confused. Originally this patch was your From: but had a Brian signoff. I asked if it shouldn't be acked by him instead and he responded "correct".

Now you've sent the patch as being his original authorship ... whose patch is this?

James

--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html

Signature · 3 lines
Brian King
Linux on Power Virtualization
IBM Linux Technology Center
maintainer Acked-by you
#3 lore raw
Quoted 5 lines · Brian King

Kleber found the problem, debugged it, and provided a fix to me. I provided him with an alternate patch to fix it. I'm assuming this should have been handled by me submitting with my signoff alone and adding a reported-by tag for Kleber. Sorry for the confusion. Shall I resend as I just described?

No, I always thought it was

From: Kleber

Acked-by you
Signed-off-by Kleber

I just became confused when the most recent update came through.

James

maintainer
#4 lore raw
In reply to Brian King
Quoted 5 lines · Brian King

Kleber found the problem, debugged it, and provided a fix to me. I provided him with an alternate patch to fix it. I'm assuming this should have been handled by me submitting with my signoff alone and adding a reported-by tag for Kleber. Sorry for the confusion. Shall I resend as I just described?

The original patch has the tabs replaced by spaces problem, so an applyable patch correctly attributed would be appreciated.

James

#5 lore raw
Quoted 7 lines · James Bottomley
Quoted 5 lines · Brian King

Kleber found the problem, debugged it, and provided a fix to me. I provided him with an alternate patch to fix it. I'm assuming this should have been handled by me submitting with my signoff alone and adding a reported-by tag for Kleber. Sorry for the confusion. Shall I resend as I just described?

Quoted 6 lines

The original patch has the tabs replaced by spaces problem, so an applyable patch correctly attributed would be appreciated.

James

Sending the patch again, now with tabs.

Kleber

The ipr driver can hang if it encounters enough PCI errors to trigger the permanent error handler. The driver will attempt to initiate a "bringdown" of the adapter and fail all pending ops back. However, this bringdown is unlike any other bringdown of the adapter in the code as the driver. In this code path we end up failing back ops with allow_cmds still set to 1. This results in some commands, the HCAM commands in particular, getting immediately re-issued to the adapter on the done call, which results in an infinite loop in ipr_fail_all_ops. Fix this by setting allow_cmds to zero in this path.

---
 drivers/scsi/ipr.c |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)
drivers/scsi/ipr.c +0 -0
index dd689de..d640359 100644
@@ -7003,6 +7003,7 @@ static void ipr_pci_perm_failure(struct pci_dev

*pdev)
ioa_cfg->sdt_state = ABORT_DUMP;
ioa_cfg->reset_retries = IPR_NUM_RESET_RELOAD_RETRIES; ioa_cfg->in_ioa_bringdown = 1;
+ ioa_cfg->allow_cmds = 0;
ipr_initiate_ioa_reset(ioa_cfg, IPR_SHUTDOWN_NONE); spin_unlock_irqrestore(ioa_cfg->host->host_lock, flags);
}

Signature · 7 lines
1.6.0.6



-- 
Kleber S. Souza
IBM Linux Technology Center
maintainer
#6 lore raw
Quoted 2 lines · Kleber S. Souza

O@@ -7003,6 +7003,7 @@ static void ipr_pci_perm_failure(struct pci_dev *pdev)

OK, so the tabs are fixed, but you mailer still broke this line. I fixed it up, but you really need to find a working email tool for next time.

James