On 02/14/2017 09:44 PM, Raghava Aditya Renukunta wrote:
> This issue showed up on a kdump debug(single CPU on powerkvm), when EEH
> errors rendered the adapter unusable. The driver correctly detected the
> issue and attempted to restart the controller, in doing so the driver
> attempted to read the status registers of the controller. This triggered
> additional eeh errors which continued for a good 6 minutes.
> 
> Fixed by returning without waiting when EEH error is reported.
> 
> Signed-off-by: Raghava Aditya Renukunta 
> <raghavaaditya.renuku...@microsemi.com>
> Reviewed-by: David Carroll <david.carr...@microsemi.com>
> ---
>  drivers/scsi/aacraid/commsup.c | 38 +++++++++++++++++++++++++++++++++++++-
>  1 file changed, 37 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/scsi/aacraid/commsup.c b/drivers/scsi/aacraid/commsup.c
> index 56090f5..6220b47 100644
> --- a/drivers/scsi/aacraid/commsup.c
> +++ b/drivers/scsi/aacraid/commsup.c
> @@ -461,6 +461,30 @@ int aac_queue_get(struct aac_dev * dev, u32 * index, u32 
> qid, struct hw_fib * hw
>       return 0;
>  }

Please do

> +#ifdef CONFIG_EEH
> +static inline int aac_check_eeh_failure(struct aac_dev *dev)
> +{
> +     /* Check for an EEH failure for the given
> +      * device node. Function eeh_dev_check_failure()
> +      * returns 0 if there has not been an EEH error
> +      * otherwise returns a non-zero value.
> +      *
> +      * Need to be called before any PCI operation,
> +      * i.e.,before aac_adapter_check_health()
> +      */
> +     struct eeh_dev *edev = pci_dev_to_eeh_dev(dev->pdev);
> +
> +     if (eeh_dev_check_failure(edev)) {
> +             /* The EEH mechanisms will handle this
> +              * error and reset the device if
> +              * necessary.
> +              */
> +             return 1;
> +     }
> +     return 0;
> +}

  #else
  static inline int aac_check_eeh_failure(struct aac_dev *dev)
  {
        return 0;
  }

> +#endif
> +

[...]

> +
> +#if defined(CONFIG_EEH)
> +                             if (aac_check_eeh_failure(dev))
> +                                     return -EFAULT;
> +#endif
> +

So the #if defined() blocks become unnecessary.

Thanks,
        Johannes
-- 
Johannes Thumshirn                                          Storage
jthumsh...@suse.de                                +49 911 74053 689
SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg
GF: Felix Imendörffer, Jane Smithard, Graham Norton
HRB 21284 (AG Nürnberg)
Key fingerprint = EC38 9CAB C2C4 F25D 8600 D0D0 0393 969D 2D76 0850

Reply via email to