All of lore.kernel.org
 help / color / mirror / Atom feed
From: Huang Ying <ying.huang@intel.com>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: Len Brown <lenb@kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	Andi Kleen <andi@firstfloor.org>,
	"Luck, Tony" <tony.luck@intel.com>,
	"linux-acpi@vger.kernel.org" <linux-acpi@vger.kernel.org>,
	Peter Zijlstra <peterz@infradead.org>,
	Linus Torvalds <torvalds@linux-foundation.org>,
	Ingo Molnar <mingo@elte.hu>
Subject: Re: [PATCH -v2 2/3] ACPI, APEI, Add APEI generic error status print support
Date: Tue, 30 Nov 2010 11:29:12 +0800	[thread overview]
Message-ID: <1291087752.12648.95.camel@yhuang-dev> (raw)
In-Reply-To: <20101129190343.7d7cea12.akpm@linux-foundation.org>

On Tue, 2010-11-30 at 11:03 +0800, Andrew Morton wrote:
> On Tue, 30 Nov 2010 10:51:40 +0800 Huang Ying <ying.huang@intel.com> wrote:
> 
> > printk is one of the methods to report hardware errors to user space.
> > Hardware error information reported by firmware to Linux kernel is in
> > the format of APEI generic error status (struct
> > acpi_hes_generic_status).  This patch adds print support for the
> > format, so that the corresponding hardware error information can be
> > reported to user space via printk.
> > 
> > PCIe AER information print is not implemented yet.  Will refactor the
> > original PCIe AER information printing code to avoid code duplicating.
> > 
> > ...
> >  
> > +#define pr_pfx(pfx, fmt, ...)			\
> > +	printk("%s" fmt, pfx, ##__VA_ARGS__)
> 
> hm, why does so much code create little printk helper macros.  Isn't
> there something generic somewhere?

Sorry, I do not find the generic code for this helper. But I think this
macro may be helpful for others too, who need to determine the log level
only at runtime. Here corrected errors should have log level:
KERN_WARNING, while uncorrected errors should have log level: KERN_ERR.

Do you think it is a good idea to make this macro generic?

> >  /*
> >   * CPER record ID need to be unique even after reboot, because record
> >   * ID is used as index for ERST storage, while CPER records from
> > @@ -46,6 +49,302 @@ u64 cper_next_record_id(void)
> >  }
> >  EXPORT_SYMBOL_GPL(cper_next_record_id);
> >  
> > +static const char *cper_severity_strs[] = {
> > +	[CPER_SEV_RECOVERABLE]		= "recoverable",
> > +	[CPER_SEV_FATAL]		=  "fatal",
> > +	[CPER_SEV_CORRECTED]		= "corrected",
> > +	[CPER_SEV_INFORMATIONAL]	= "info",
> > +};
> > +
> > +static const char *cper_severity_str(unsigned int severity)
> > +{
> > +	return severity < ARRAY_SIZE(cper_severity_strs) ?
> > +		cper_severity_strs[severity] : "unknown";
> > +}
> 
> This code will explode nastily if CPER_SEV_RECOVERABLE .. 
> CPER_SEV_INFORMATIONAL do not exactly have the values 0, 1, 2 and 3. 
> They do have those values, but it would be a bit safer if they were
> enumerated types and not #defines..

OK. I will change this.

> > +static void cper_print_bits(const char *pfx, unsigned int bits,
> > +			    const char *strs[], unsigned int strs_size)
> > +{
> > +	int i, len = 0;
> > +	const char *str;
> > +
> > +	for (i = 0; i < strs_size; i++) {
> > +		if (!(bits & (1U << i)))
> > +			continue;
> > +		str = strs[i];
> > +		if (len && len + strlen(str) + 2 > 80) {
> > +			printk("\n");
> > +			len = 0;
> > +		}
> > +		if (!len)
> > +			len = pr_pfx(pfx, "%s", str);
> > +		else
> > +			len += printk(", %s", str);
> > +	}
> > +	if (len)
> > +		printk("\n");
> > +}
> 
> geeze, that's the sort of code you have to execute to find out what it
> does.  Or ask the author to document it.

OK. I will add comments for all necessary functions in the patch.

> This patchset appears to implement a new kernel->userspace interface. 
> But that interface isn't actually described anywhere, so reviewers must
> reverse-engineer the interface from the implementation to be able to
> review the interface.  Nobody bothers doing that so we end up with an
> unreviewed interface, which we must maintain for eternity.
> 
> Please fully document all proposed interfaces?

Sorry. I don't realize that printk-ing something means implementing a
new kernel->userspace interface. I think the messages resulted are
self-explaining for human. Is it sufficient just to add example messages
in patch description?

Best Regards,
Huang Ying



  reply	other threads:[~2010-11-30  3:29 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-11-30  2:51 [PATCH -v2 0/3] Report APEI GHES error information via printk Huang Ying
2010-11-30  2:51 ` [PATCH -v2 1/3] Add CPER PCIe error section structure and constants definition Huang Ying
2010-11-30  2:51 ` [PATCH -v2 2/3] ACPI, APEI, Add APEI generic error status print support Huang Ying
2010-11-30  3:03   ` Andrew Morton
2010-11-30  3:29     ` Huang Ying [this message]
2010-11-30  3:40       ` Andrew Morton
2010-11-30  7:00         ` Huang Ying
2010-11-30 23:49           ` Andrew Morton
2010-12-01  0:04             ` huang ying
2010-12-01  0:04               ` huang ying
2010-11-30 18:00     ` Luck, Tony
2010-11-30 18:17       ` Andrew Morton
2010-11-30 23:56       ` huang ying
2010-11-30 23:56         ` huang ying
2010-11-30  2:51 ` [PATCH -v2 3/3] ACPI, APEI, report GHES error information via printk Huang Ying
2010-11-30  3:07   ` Andrew Morton
2010-11-30  3:35     ` Huang Ying
2010-11-30  5:47       ` KOSAKI Motohiro
2010-11-30  6:20         ` Huang Ying

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1291087752.12648.95.camel@yhuang-dev \
    --to=ying.huang@intel.com \
    --cc=akpm@linux-foundation.org \
    --cc=andi@firstfloor.org \
    --cc=lenb@kernel.org \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=peterz@infradead.org \
    --cc=tony.luck@intel.com \
    --cc=torvalds@linux-foundation.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.