From: Brian King <brking@linux.vnet.ibm.com>
To: Kleber Sacilotto de Souza <klebers@linux.vnet.ibm.com>
Cc: "linux-scsi@vger.kernel.org" <linux-scsi@vger.kernel.org>,
Wayne Boyer <wayneb@linux.vnet.ibm.com>
Subject: Re: [PATCH] ipr: fix EEH recovery
Date: Thu, 26 Nov 2009 19:46:47 -0600 [thread overview]
Message-ID: <4B0F2F87.9070804@linux.vnet.ibm.com> (raw)
In-Reply-To: <1259187223.4938.45.camel@zeppelin>
Acked-by: Brian King <brking@linux.vnet.ibm.com>
Kleber Sacilotto de Souza wrote:
> Hi,
>
> After commits c82f63e411f1b58427c103bd95af2863b1c96dd1 (PCI: check saved
> state before restore) and 4b77b0a2ba27d64f58f16d8d4d48d8319dda36ff (PCI:
> Clear saved_state after the state has been restored) PCI drivers are
> prevented from restoring the device standard configuration registers
> twice in a row. These changes introduced a regression on ipr EEH
> recovery.
>
> The ipr device driver saves the PCI state only during the device probe
> and restores it on ipr_reset_restore_cfg_space() during IOA resets. This
> behavior is causing the EEH recovery to fail after the second error
> detected, since the registers are not being restored.
>
> One possible solution would be saving the registers after restoring
> them. The problem with this approach is that while recovering from an
> EEH error if pci_save_state() results in an EEH error, the adapter/slot
> will be reset, and end up back in ipr_reset_restore_cfg_space(), but it
> won't have a valid saved state to restore, so pci_restore_state() will
> fail.
>
> The following patch introduces a workaround for this problem, hacking
> around the PCI API by setting pdev->state_saved = true before we do the
> restore. It fixes the EEH regression and prevents that we hit another
> EEH error during EEH recovery.
>
>
> Thanks,
> Kleber
>
>
>
> Signed-off-by: Kleber Sacilotto de Souza <klebers@linux.vnet.ibm.com>
> ---
> drivers/scsi/ipr.c | 1 +
> 1 files changed, 1 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/scsi/ipr.c b/drivers/scsi/ipr.c
> index 76d294f..c3ff9a6 100644
> --- a/drivers/scsi/ipr.c
> +++ b/drivers/scsi/ipr.c
> @@ -6516,6 +6516,7 @@ static int ipr_reset_restore_cfg_space(struct ipr_cmnd *ipr_cmd)
> int rc;
>
> ENTER;
> + ioa_cfg->pdev->state_saved = true;
> rc = pci_restore_state(ioa_cfg->pdev);
>
> if (rc != PCIBIOS_SUCCESSFUL) {
--
Brian King
Linux on Power Virtualization
IBM Linux Technology Center
next prev parent reply other threads:[~2009-11-27 1:46 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-11-25 22:13 [PATCH] ipr: fix EEH recovery Kleber Sacilotto de Souza
2009-11-27 1:46 ` Brian King [this message]
2009-11-27 12:58 ` Kleber Sacilotto de Souza
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=4B0F2F87.9070804@linux.vnet.ibm.com \
--to=brking@linux.vnet.ibm.com \
--cc=klebers@linux.vnet.ibm.com \
--cc=linux-scsi@vger.kernel.org \
--cc=wayneb@linux.vnet.ibm.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.