Patchwork [v6,3/3] aerdrv: Cleanup log output for CPER based AER

login
register
mail settings
Submitter Lance Ortiz
Date Dec. 4, 2012, 5:04 p.m.
Message ID <20121204170442.31397.21190.stgit@grignak.americas.hpqcorp.net>
Download mbox | patch
Permalink /patch/203692/
State Superseded
Headers show

Comments

Lance Ortiz - Dec. 4, 2012, 5:04 p.m.
These changes make cper_print_aer more consistent with aer_print_error
which is called in the AER interrupt case. The string in the variable
'prefix' is printed at the beginning of each print statement in
cper_print_aer(). The prefix is a string containing the driver name
and the device's slot location.  From the callers the value of prefix
is never assigned and is NULL, so when cper_print_aer prints data the
initial string does not get printed.  This string is important because
it identifies the device that the error is on.

v1-v2 fix some compile errors withinn the #ifdef
v3-v4 remove agent id stuff and kept print the same to avoid
compatibility issues

Signed-off-by: Lance Ortiz <lance.ortiz@hp.com>
---

 0 files changed, 0 insertions(+), 0 deletions(-)


--
To unsubscribe from this list: send the line "unsubscribe linux-pci" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Joe Perches - Dec. 4, 2012, 5:39 p.m.
On Tue, 2012-12-04 at 10:04 -0700, Lance Ortiz wrote:
> These changes make cper_print_aer more consistent with aer_print_error
> which is called in the AER interrupt case. The string in the variable
> 'prefix' is printed at the beginning of each print statement in
> cper_print_aer(). The prefix is a string containing the driver name
> and the device's slot location.  From the callers the value of prefix
> is never assigned and is NULL, so when cper_print_aer prints data the
> initial string does not get printed.  This string is important because
> it identifies the device that the error is on.

Hi again Lance.

> diff --git a/drivers/pci/pcie/aer/aerdrv_errprint.c b/drivers/pci/pcie/aer/aerdrv_errprint.c
[]
> @@ -228,9 +228,14 @@ void cper_print_aer(struct pci_dev *dev, int cper_severity,
>  	int aer_severity, layer, agent, status_strs_size, tlp_header_valid = 0;
>  	u32 status, mask;
>  	const char **status_strs;
> -	char *prefix = NULL;
> +	char prefix[44];
>  
>  	aer_severity = cper_severity_to_aer(cper_severity);
> +	snprintf(prefix, sizeof(prefix), "%s%s %s: ",
> +		(aer_severity == AER_CORRECTABLE) ?
> +		KERN_WARNING : KERN_ERR,
> +		dev_driver_string(&dev->dev), dev_name(&dev->dev));
> +
>  	if (aer_severity == AER_CORRECTABLE) {
>  		status = aer->cor_status;
>  		mask = aer->cor_mask;

Perhaps this would be better just using dev_printk
instead of snprintf into a prefix with printk to
emulate dev_printk.

Also, perhaps KERN_NOTICE is preferable to KERN_WARNING
in the CORRECTABLE case.

Maybe something like:

	const char *level = KERN_ERR;
	if (aer_severity == AER_CORRECTABLE)
		level = KERN_NOTICE;

	...

	dev_printk(level, &dev->dev, etc...);

Maybe do this after this series of patches is accepted.
Enough with the revisions for awhile...

--
To unsubscribe from this list: send the line "unsubscribe linux-pci" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Ortiz, Lance E - Dec. 4, 2012, 8:06 p.m.
> Hi again Lance.
> 
> > diff --git a/drivers/pci/pcie/aer/aerdrv_errprint.c
> b/drivers/pci/pcie/aer/aerdrv_errprint.c
> []
> > @@ -228,9 +228,14 @@ void cper_print_aer(struct pci_dev *dev, int
> cper_severity,
> >  	int aer_severity, layer, agent, status_strs_size,
> tlp_header_valid = 0;
> >  	u32 status, mask;
> >  	const char **status_strs;
> > -	char *prefix = NULL;
> > +	char prefix[44];
> >
> >  	aer_severity = cper_severity_to_aer(cper_severity);
> > +	snprintf(prefix, sizeof(prefix), "%s%s %s: ",
> > +		(aer_severity == AER_CORRECTABLE) ?
> > +		KERN_WARNING : KERN_ERR,
> > +		dev_driver_string(&dev->dev), dev_name(&dev->dev));
> > +
> >  	if (aer_severity == AER_CORRECTABLE) {
> >  		status = aer->cor_status;
> >  		mask = aer->cor_mask;
> 
> Perhaps this would be better just using dev_printk
> instead of snprintf into a prefix with printk to
> emulate dev_printk.
> 
> Also, perhaps KERN_NOTICE is preferable to KERN_WARNING
> in the CORRECTABLE case.
> 
> Maybe something like:
> 
> 	const char *level = KERN_ERR;
> 	if (aer_severity == AER_CORRECTABLE)
> 		level = KERN_NOTICE;
> 
> 	...
> 
> 	dev_printk(level, &dev->dev, etc...);
> 
> Maybe do this after this series of patches is accepted.
> Enough with the revisions for awhile...

Hi Joe,

The reason I did it this way was I was trying to be consistent with what was done for the AER interrupt case.  The function aer_print_error()in the same file uses sprintf this way.  I'm not sure why they chose that instead of dev_printk.  I think if we did make the change we should do it in both places to keep them the same.  

Lance
--
To unsubscribe from this list: send the line "unsubscribe linux-pci" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch

diff --git a/drivers/pci/pcie/aer/aerdrv_errprint.c b/drivers/pci/pcie/aer/aerdrv_errprint.c
index 34d96e4..58ff4c0 100644
--- a/drivers/pci/pcie/aer/aerdrv_errprint.c
+++ b/drivers/pci/pcie/aer/aerdrv_errprint.c
@@ -228,9 +228,14 @@  void cper_print_aer(struct pci_dev *dev, int cper_severity,
 	int aer_severity, layer, agent, status_strs_size, tlp_header_valid = 0;
 	u32 status, mask;
 	const char **status_strs;
-	char *prefix = NULL;
+	char prefix[44];
 
 	aer_severity = cper_severity_to_aer(cper_severity);
+	snprintf(prefix, sizeof(prefix), "%s%s %s: ",
+		(aer_severity == AER_CORRECTABLE) ?
+		KERN_WARNING : KERN_ERR,
+		dev_driver_string(&dev->dev), dev_name(&dev->dev));
+
 	if (aer_severity == AER_CORRECTABLE) {
 		status = aer->cor_status;
 		mask = aer->cor_mask;