RE: [PATCH 03/16] aacraid: Fix for excessive prints on EEH

Raghava Aditya Renukunta
2017-02-15T18:07:22Z

> 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.Renukunta@microsemi.com>
> > Reviewed-by: David Carroll <David.Carroll@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.
Yes I can do that.

Regards,
Raghava Aditya

> Thanks,
> Johannes
> --
> Johannes Thumshirn Storage
> jthumshirn@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