From: Andrew Morton <akpm@linux-foundation.org>
To: Huang Ying <ying.huang@intel.com>
Cc: Len Brown <lenb@kernel.org>,
linux-kernel@vger.kernel.org, Andi Kleen <andi@firstfloor.org>,
Tony Luck <tony.luck@intel.com>,
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: Mon, 29 Nov 2010 19:03:43 -0800 [thread overview]
Message-ID: <20101129190343.7d7cea12.akpm@linux-foundation.org> (raw)
In-Reply-To: <1291085501-31494-3-git-send-email-ying.huang@intel.com>
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?
> /*
> * 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..
> +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.
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?
next prev parent reply other threads:[~2010-11-30 3:04 UTC|newest]
Thread overview: 17+ 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 [this message]
2010-11-30 3:29 ` Huang Ying
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-11-30 18:00 ` Luck, Tony
2010-11-30 18:17 ` Andrew Morton
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=20101129190343.7d7cea12.akpm@linux-foundation.org \
--to=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 \
--cc=ying.huang@intel.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox