From: Gavin Shan <gwshan@linux.vnet.ibm.com>
To: linuxppc-dev@lists.ozlabs.org
Cc: Gavin Shan <gwshan@linux.vnet.ibm.com>
Subject: [PATCH 13/21] powerpc/eeh: Use eeh_unfreeze_pe()
Date: Tue, 30 Sep 2014 12:39:02 +1000 [thread overview]
Message-ID: <1412044750-24460-13-git-send-email-gwshan@linux.vnet.ibm.com> (raw)
In-Reply-To: <1412044750-24460-1-git-send-email-gwshan@linux.vnet.ibm.com>
The patch uses eeh_unfreeze_pe() to replace the logic clearing
frozen IO and DMA, in order to simplify the code.
Signed-off-by: Gavin Shan <gwshan@linux.vnet.ibm.com>
---
arch/powerpc/kernel/eeh.c | 19 +------------------
arch/powerpc/kernel/eeh_driver.c | 18 ++++++------------
arch/powerpc/kernel/eeh_sysfs.c | 21 +--------------------
3 files changed, 8 insertions(+), 50 deletions(-)
diff --git a/arch/powerpc/kernel/eeh.c b/arch/powerpc/kernel/eeh.c
index 9678e16..7004673 100644
--- a/arch/powerpc/kernel/eeh.c
+++ b/arch/powerpc/kernel/eeh.c
@@ -1433,24 +1433,7 @@ static int eeh_pe_reenable_devices(struct eeh_pe *pe)
}
/* The PE is still in frozen state */
- ret = eeh_ops->set_option(pe, EEH_OPT_THAW_MMIO);
- if (ret) {
- pr_warn("%s: Failure %d enabling MMIO for PHB#%x-PE#%x\n",
- __func__, ret, pe->phb->global_number, pe->addr);
- return ret;
- }
-
- ret = eeh_ops->set_option(pe, EEH_OPT_THAW_DMA);
- if (ret) {
- pr_warn("%s: Failure %d enabling DMA for PHB#%x-PE#%x\n",
- __func__, ret, pe->phb->global_number, pe->addr);
- return ret;
- }
-
- /* Clear software isolated state */
- eeh_pe_state_clear(pe, EEH_PE_ISOLATED);
-
- return ret;
+ return eeh_unfreeze_pe(pe, true);
}
/**
diff --git a/arch/powerpc/kernel/eeh_driver.c b/arch/powerpc/kernel/eeh_driver.c
index 6a0dcee..948e6f9 100644
--- a/arch/powerpc/kernel/eeh_driver.c
+++ b/arch/powerpc/kernel/eeh_driver.c
@@ -450,21 +450,15 @@ static void *eeh_pe_detach_dev(void *data, void *userdata)
static void *__eeh_clear_pe_frozen_state(void *data, void *flag)
{
struct eeh_pe *pe = (struct eeh_pe *)data;
- int i, rc;
+ int i, rc = 1;
- for (i = 0; i < 3; i++) {
- rc = eeh_pci_enable(pe, EEH_OPT_THAW_MMIO);
- if (rc)
- continue;
- rc = eeh_pci_enable(pe, EEH_OPT_THAW_DMA);
- if (!rc)
- break;
- }
+ for (i = 0; rc && i < 3; i++)
+ rc = eeh_unfreeze_pe(pe, false);
- /* The PE has been isolated, clear it */
+ /* Stop immediately on any errors */
if (rc) {
- pr_warn("%s: Can't clear frozen PHB#%x-PE#%x (%d)\n",
- __func__, pe->phb->global_number, pe->addr, rc);
+ pr_warn("%s: Failure %d unfreezing PHB#%x-PE#%x\n",
+ __func__, rc, pe->phb->global_number, pe->addr);
return (void *)pe;
}
diff --git a/arch/powerpc/kernel/eeh_sysfs.c b/arch/powerpc/kernel/eeh_sysfs.c
index eb15be4..9a44010 100644
--- a/arch/powerpc/kernel/eeh_sysfs.c
+++ b/arch/powerpc/kernel/eeh_sysfs.c
@@ -75,7 +75,6 @@ static ssize_t eeh_pe_state_store(struct device *dev,
{
struct pci_dev *pdev = to_pci_dev(dev);
struct eeh_dev *edev = pci_dev_to_eeh_dev(pdev);
- int ret;
if (!edev || !edev->pe)
return -ENODEV;
@@ -84,26 +83,8 @@ static ssize_t eeh_pe_state_store(struct device *dev,
if (!(edev->pe->state & EEH_PE_ISOLATED))
return count;
- /* Enable MMIO */
- ret = eeh_pci_enable(edev->pe, EEH_OPT_THAW_MMIO);
- if (ret) {
- pr_warn("%s: Failure %d enabling MMIO for PHB#%d-PE#%d\n",
- __func__, ret, edev->pe->phb->global_number,
- edev->pe->addr);
+ if (eeh_unfreeze_pe(edev->pe, true))
return -EIO;
- }
-
- /* Enable DMA */
- ret = eeh_pci_enable(edev->pe, EEH_OPT_THAW_DMA);
- if (ret) {
- pr_warn("%s: Failure %d enabling DMA for PHB#%d-PE#%d\n",
- __func__, ret, edev->pe->phb->global_number,
- edev->pe->addr);
- return -EIO;
- }
-
- /* Clear software state */
- eeh_pe_state_clear(edev->pe, EEH_PE_ISOLATED);
return count;
}
--
1.8.3.2
next prev parent reply other threads:[~2014-09-30 2:39 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-09-30 2:38 [PATCH 01/21] powerpc/eeh: Drop unused argument in eeh_check_failure() Gavin Shan
2014-09-30 2:38 ` [PATCH 02/21] powerpc/eeh: Add eeh_pe_state sysfs entry Gavin Shan
2014-10-01 3:43 ` [02/21] " Michael Ellerman
2014-10-01 4:20 ` Gavin Shan
2014-09-30 2:38 ` [PATCH 03/21] powerpc/eeh: Freeze PE before PE reset Gavin Shan
2014-09-30 2:38 ` [PATCH 04/21] powerpc/eeh: Reenable PCI devices after reset Gavin Shan
2014-09-30 2:38 ` [PATCH 05/21] powerpc/eeh: Clear frozen state on passing device Gavin Shan
2014-09-30 2:38 ` [PATCH 06/21] powerpc/powernv: Sync header with firmware Gavin Shan
2014-09-30 2:38 ` [PATCH 07/21] powerpc/eeh: Introduce eeh_ops::err_inject Gavin Shan
2014-09-30 2:38 ` [PATCH 08/21] powerpc/powernv: Add PCI error injection debugfs entry Gavin Shan
2014-09-30 2:38 ` [PATCH 09/21] powerpc/powernv: Clear PAPR error injection registers Gavin Shan
2014-09-30 2:38 ` [PATCH 10/21] powerpc/eeh: Clear frozen device state in time Gavin Shan
2014-09-30 2:39 ` [PATCH 11/21] powerpc/eeh: Fix improper condition in eeh_pci_enable() Gavin Shan
2014-09-30 2:39 ` [PATCH 12/21] powerpc/eeh: Unfreeze PE on enabling EEH functionality Gavin Shan
2014-09-30 2:39 ` Gavin Shan [this message]
2014-09-30 2:39 ` [PATCH 14/21] powerpc/eeh: Block PCI config access during reset Gavin Shan
2014-09-30 2:39 ` [PATCH 15/21] powerpc/pseries: Decrease message level on EEH initialization Gavin Shan
2014-09-30 2:39 ` [PATCH 16/21] powerpc/powernv: Sync OpalPciResetScope with firmware Gavin Shan
2014-09-30 2:39 ` [PATCH 17/21] powerpc/eeh: Tag reset state for user owned PE Gavin Shan
2014-09-30 2:39 ` [PATCH 18/21] powerpc/eeh: Emulate EEH recovery for VFIO devices Gavin Shan
2014-09-30 2:39 ` [PATCH 19/21] powerpc/eeh: Dump PCI config space for all child devices Gavin Shan
2014-09-30 2:39 ` [PATCH 20/21] powerpc/powernv: Fetch frozen PE on top level Gavin Shan
2014-09-30 2:39 ` [PATCH 21/21] powerpc/powernv: Override dma_get_required_mask() Gavin Shan
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=1412044750-24460-13-git-send-email-gwshan@linux.vnet.ibm.com \
--to=gwshan@linux.vnet.ibm.com \
--cc=linuxppc-dev@lists.ozlabs.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;
as well as URLs for NNTP newsgroup(s).