Message ID | 20121204170442.31397.21190.stgit@grignak.americas.hpqcorp.net (mailing list archive) |
---|---|
State | New, archived |
Delegated to: | Bjorn Helgaas |
Headers | show |
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
> 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
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;
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