diff mbox series

[03/14] powerpc/eeh: Make permanently failed devices non-actionable

Message ID 20190903101605.2890-4-oohall@gmail.com (mailing list archive)
State Accepted
Commit 38ddc011478e573c9ab4e3e9bc54cc5bfc542351
Headers show
Series [01/14] powerpc/eeh: Clean up EEH PEs after recovery finishes | expand

Checks

Context Check Description
snowpatch_ozlabs/apply_patch success Successfully applied on branch next (c317052c95bef1f977b023158e5aa929215f443d)
snowpatch_ozlabs/checkpatch success total: 0 errors, 0 warnings, 0 checks, 18 lines checked

Commit Message

Oliver O'Halloran Sept. 3, 2019, 10:15 a.m. UTC
If a device is torn down by a hotplug slot driver it's marked as removed
and marked as permaantly failed. There's no point in trying to recover a
permernantly failed device so it should be considered un-actionable.

Signed-off-by: Oliver O'Halloran <oohall@gmail.com>
---
 arch/powerpc/kernel/eeh_driver.c | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

Comments

Sam Bobroff Sept. 17, 2019, 12:51 a.m. UTC | #1
On Tue, Sep 03, 2019 at 08:15:54PM +1000, Oliver O'Halloran wrote:
> If a device is torn down by a hotplug slot driver it's marked as removed
> and marked as permaantly failed. There's no point in trying to recover a
permanently
> permernantly failed device so it should be considered un-actionable.
> 
> Signed-off-by: Oliver O'Halloran <oohall@gmail.com>

Other than the typo, looks good (I think it should always have been like
this):

Reviewed-by: Sam Bobroff <sbobroff@linux.ibm.com>
> ---
>  arch/powerpc/kernel/eeh_driver.c | 12 ++++++++++--
>  1 file changed, 10 insertions(+), 2 deletions(-)
> 
> diff --git a/arch/powerpc/kernel/eeh_driver.c b/arch/powerpc/kernel/eeh_driver.c
> index 75266156943f..18a69fac4d80 100644
> --- a/arch/powerpc/kernel/eeh_driver.c
> +++ b/arch/powerpc/kernel/eeh_driver.c
> @@ -96,8 +96,16 @@ static bool eeh_dev_removed(struct eeh_dev *edev)
>  
>  static bool eeh_edev_actionable(struct eeh_dev *edev)
>  {
> -	return (edev->pdev && !eeh_dev_removed(edev) &&
> -		!eeh_pe_passed(edev->pe));
> +	if (!edev->pdev)
> +		return false;
> +	if (edev->pdev->error_state == pci_channel_io_perm_failure)
> +		return false;
> +	if (eeh_dev_removed(edev))
> +		return false;
> +	if (eeh_pe_passed(edev->pe))
> +		return false;
> +
> +	return true;
>  }
>  
>  /**
> -- 
> 2.21.0
>
diff mbox series

Patch

diff --git a/arch/powerpc/kernel/eeh_driver.c b/arch/powerpc/kernel/eeh_driver.c
index 75266156943f..18a69fac4d80 100644
--- a/arch/powerpc/kernel/eeh_driver.c
+++ b/arch/powerpc/kernel/eeh_driver.c
@@ -96,8 +96,16 @@  static bool eeh_dev_removed(struct eeh_dev *edev)
 
 static bool eeh_edev_actionable(struct eeh_dev *edev)
 {
-	return (edev->pdev && !eeh_dev_removed(edev) &&
-		!eeh_pe_passed(edev->pe));
+	if (!edev->pdev)
+		return false;
+	if (edev->pdev->error_state == pci_channel_io_perm_failure)
+		return false;
+	if (eeh_dev_removed(edev))
+		return false;
+	if (eeh_pe_passed(edev->pe))
+		return false;
+
+	return true;
 }
 
 /**