Re: [PATCH] PCI: aer_inject: Log actual error causes

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Jan 26, 2016 at 09:52:05AM +0100, Jean Delvare (by way of Jean Delvare <jdelvare@xxxxxxx>) wrote:
> The aer_inject driver is very quiet. In most cases, it merely returns
> an error code to user-space, leaving the user with little clue about
> the actual reason for the failure.
> 
> So, log error messages for 4 of the most frequent causes of failure:
> * Can't find the root port of the specified device.
> * Device doesn't support AER.
> * Root port doesn't support AER.
> * AER device not found.
> This gives the user a chance to understand why aer-inject failed.
> 
> Based on a preliminary patch by Thomas Renninger.
> 
> Signed-off-by: Jean Delvare <jdelvare@xxxxxxx>
> Cc: Thomas Renninger <trenn@xxxxxxx>
> Cc: Bjorn Helgaas <bhelgaas@xxxxxxxxxx>
> ---
>  drivers/pci/pcie/aer/aer_inject.c |    8 +++++++-
>  1 file changed, 7 insertions(+), 1 deletion(-)
> 
> --- linux-4.5-rc0.orig/drivers/pci/pcie/aer/aer_inject.c	2016-01-20 09:25:54.815852332 +0100
> +++ linux-4.5-rc0/drivers/pci/pcie/aer/aer_inject.c	2016-01-26 09:41:17.361994839 +0100
> @@ -334,12 +334,14 @@ static int aer_inject(struct aer_error_i
>  		return -ENODEV;
>  	rpdev = pcie_find_root_port(dev);
>  	if (!rpdev) {
> +		dev_err(&dev->dev, "aer_inject: Root port not found\n");
>  		ret = -ENODEV;
>  		goto out_put;
>  	}
>  
>  	pos_cap_err = pci_find_ext_capability(dev, PCI_EXT_CAP_ID_ERR);
>  	if (!pos_cap_err) {
> +		dev_err(&dev->dev, "aer_inject: Device doesn't support AER\n");
>  		ret = -EPERM;

Btw, this -EPERM looks wrong - if we're checking for capabilities, we
shouldn't be returning -EPERM but maybe something like -ENODEV or so.

>  		goto out_put;
>  	}
> @@ -350,6 +352,8 @@ static int aer_inject(struct aer_error_i
>  
>  	rp_pos_cap_err = pci_find_ext_capability(rpdev, PCI_EXT_CAP_ID_ERR);
>  	if (!rp_pos_cap_err) {
> +		dev_err(&rpdev->dev,
> +			"aer_inject: Root port doesn't support AER\n");
>  		ret = -EPERM;

Ditto.

>  		goto out_put;
>  	}
> @@ -462,8 +466,10 @@ static int aer_inject(struct aer_error_i
>  			goto out_put;
>  		}
>  		aer_irq(-1, edev);
> -	} else
> +	} else {
> +		dev_err(&rpdev->dev, "aer_inject: AER device not found\n");

So other error prints in that function do printk(KERN_WARNING. Why
dev_err()?

Why not pr_err() and define pr_fmt to "aer_inject: " and then drop
that prefix from the messages?

Thanks.

-- 
Regards/Gruss,
    Boris.

SUSE Linux GmbH, GF: Felix Imendörffer, Jane Smithard, Graham Norton, HRB 21284 (AG Nürnberg)
-- 
--
To unsubscribe from this list: send the line "unsubscribe linux-pci" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [DMA Engine]     [Linux Coverity]     [Linux USB]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Greybus]

  Powered by Linux