From: Frank Haverkamp <haver@linux.vnet.ibm.com>
To: Kleber Sacilotto de Souza <klebers@linux.vnet.ibm.com>
Cc: linux-kernel@vger.kernel.org, gregkh@linuxfoundation.org
Subject: Re: [PATCH 3/4] GenWQE: Improve hardware error recovery
Date: Wed, 04 Jun 2014 16:06:22 +0200 [thread overview]
Message-ID: <1401890782.24099.10.camel@oc7383187364.ibm.com> (raw)
In-Reply-To: <1401890273-13067-4-git-send-email-klebers@linux.vnet.ibm.com>
Am Mittwoch, den 04.06.2014, 10:57 -0300 schrieb Kleber Sacilotto de
Souza:
> Currently, in the event of a fatal hardware error, the driver tries a
> recovery procedure that calls pci_reset_function() to reset the card.
> This is not sufficient in some cases, needing a fundamental reset to
> bring the card back.
>
> This patch implements a call to the platform fundamental reset procedure
> on the error recovery path if GENWQE_PLATFORM_ERROR_RECOVERY is enabled.
> This is implemented by default only on PPC64, since this can cause
> problems on other archs, e.g. zSeries, where the platform has its own
> recovery procedures, leading to a potencial race conditition. For these
> cases, the recovery is kept as it was before.
>
> Signed-off-by: Kleber Sacilotto de Souza <klebers@linux.vnet.ibm.com>
> ---
> drivers/misc/genwqe/card_base.c | 45 +++++++++++++++++++++++++++++++++++++++
> 1 files changed, 45 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/misc/genwqe/card_base.c b/drivers/misc/genwqe/card_base.c
> index 87ebaba..abb7961 100644
> --- a/drivers/misc/genwqe/card_base.c
> +++ b/drivers/misc/genwqe/card_base.c
> @@ -797,6 +797,41 @@ static int genwqe_pci_fundamental_reset(struct pci_dev *pci_dev)
> return rc;
> }
>
> +
> +static int genwqe_platform_recovery(struct genwqe_dev *cd)
> +{
> + struct pci_dev *pci_dev = cd->pci_dev;
> + int rc;
> +
> + dev_info(&pci_dev->dev,
> + "[%s] resetting card for error recovery\n", __func__);
> +
> + /* Clear out error injection flags */
> + cd->err_inject &= ~(GENWQE_INJECT_HARDWARE_FAILURE |
> + GENWQE_INJECT_GFIR_FATAL |
> + GENWQE_INJECT_GFIR_INFO);
> +
> + genwqe_stop(cd);
> +
> + /* Try recoverying the card with fundamental reset */
> + rc = genwqe_pci_fundamental_reset(pci_dev);
> + if (!rc) {
> + rc = genwqe_start(cd);
> + if (!rc)
> + dev_info(&pci_dev->dev,
> + "[%s] card recovered\n", __func__);
> + else
> + dev_err(&pci_dev->dev,
> + "[%s] err: cannot start card services! (err=%d)\n",
> + __func__, rc);
> + } else {
> + dev_err(&pci_dev->dev,
> + "[%s] card reset failed\n", __func__);
> + }
> +
> + return rc;
> +}
> +
> /*
> * genwqe_reload_bistream() - reload card bitstream
> *
> @@ -875,6 +910,7 @@ static int genwqe_health_thread(void *data)
> struct pci_dev *pci_dev = cd->pci_dev;
> u64 gfir, gfir_masked, slu_unitcfg, app_unitcfg;
>
> + health_thread_begin:
> while (!kthread_should_stop()) {
> rc = wait_event_interruptible_timeout(cd->health_waitq,
> (genwqe_health_check_cond(cd, &gfir) ||
> @@ -960,6 +996,15 @@ static int genwqe_health_thread(void *data)
> /* We do nothing if the card is going over PCI recovery */
> if (pci_channel_offline(pci_dev))
> return -EIO;
> +
> + /*
> + * If it's supported by the platform, we try a fundamental reset
> + * to recover from a fatal error. Otherwise, we continue to wait
> + * for an external recovery procedure to take care of it.
> + */
> + rc = genwqe_platform_recovery(cd);
> + if (!rc)
> + goto health_thread_begin;
> }
>
> dev_err(&pci_dev->dev,
Thanks for contributing those additions to our driver.
Acked-by: Frank Haverkamp <haver@linux.vnet.ibm.com>
next prev parent reply other threads:[~2014-06-04 14:06 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-06-04 13:57 [PATCH 0/4] GenWQE: patches to improve RAS features Kleber Sacilotto de Souza
2014-06-04 13:57 ` [PATCH 1/4] GenWQE: Add sysfs interface for bitstream reload Kleber Sacilotto de Souza
2014-06-04 14:05 ` Frank Haverkamp
2014-06-04 13:57 ` [PATCH 2/4] GenWQE: Add support for EEH error recovery Kleber Sacilotto de Souza
2014-06-04 14:06 ` Frank Haverkamp
2014-06-04 13:57 ` [PATCH 3/4] GenWQE: Improve hardware " Kleber Sacilotto de Souza
2014-06-04 14:06 ` Frank Haverkamp [this message]
2014-06-04 13:57 ` [PATCH 4/4] GenWQE: Increase driver version number Kleber Sacilotto de Souza
2014-06-04 14:06 ` Frank Haverkamp
2014-06-04 15:54 ` Greg KH
2014-06-05 9:23 ` Frank Haverkamp
2014-06-05 16:00 ` Greg KH
2014-06-06 12:07 ` Frank Haverkamp
2014-06-06 12:40 ` Frank Haverkamp
2014-07-09 21:13 ` Greg KH
2014-06-25 16:22 [PATCH 0/4] GenWQE: patches to improve RAS features (v2) Kleber Sacilotto de Souza
2014-06-25 16:22 ` [PATCH 3/4] GenWQE: Improve hardware error recovery 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=1401890782.24099.10.camel@oc7383187364.ibm.com \
--to=haver@linux.vnet.ibm.com \
--cc=gregkh@linuxfoundation.org \
--cc=klebers@linux.vnet.ibm.com \
--cc=linux-kernel@vger.kernel.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®