linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Huang Ying <ying.huang@intel.com>
To: Len Brown <lenb@kernel.org>
Cc: linux-kernel@vger.kernel.org, Tony Luck <tony.luck@intel.com>,
	ying.huang@intel.com, linux-acpi@vger.kernel.org
Subject: [PATCH 8/8] ACPI, APEI, GHES, Distinguish interleaved error report in kernel log
Date: Tue, 20 Sep 2011 09:39:01 +0800	[thread overview]
Message-ID: <1316482741-21799-9-git-send-email-ying.huang@intel.com> (raw)
In-Reply-To: <1316482741-21799-1-git-send-email-ying.huang@intel.com>

In most cases, printk only guarantees messages from different printk
calling will not be interleaved between each other.  But, one APEI
GHES hardware error report will involve multiple printk calling,
normally each for one line.  So it is possible that the hardware error
report comes from different generic hardware error source will be
interleaved.

In this patch, a sequence number is prefixed to each line of error
report.  So that, even if they are interleaved, they still can be
distinguished by the prefixed sequence number.

Signed-off-by: Huang Ying <ying.huang@intel.com>
---
 drivers/acpi/apei/ghes.c |   16 +++++++++++-----
 1 file changed, 11 insertions(+), 5 deletions(-)

--- a/drivers/acpi/apei/ghes.c
+++ b/drivers/acpi/apei/ghes.c
@@ -505,16 +505,22 @@ static void __ghes_print_estatus(const c
 				 const struct acpi_hest_generic *generic,
 				 const struct acpi_hest_generic_status *estatus)
 {
+	static atomic_t seqno;
+	int curr_seqno;
+	char pfx_seq[64];
+
 	if (pfx == NULL) {
 		if (ghes_severity(estatus->error_severity) <=
 		    GHES_SEV_CORRECTED)
-			pfx = KERN_WARNING HW_ERR;
+			pfx = KERN_WARNING;
 		else
-			pfx = KERN_ERR HW_ERR;
+			pfx = KERN_ERR;
 	}
+	curr_seqno = atomic_inc_return(&seqno);
+	snprintf(pfx_seq, sizeof(pfx_seq), "%s{%d}" HW_ERR, pfx, curr_seqno);
 	printk("%s""Hardware error from APEI Generic Hardware Error Source: %d\n",
-	       pfx, generic->header.source_id);
-	apei_estatus_print(pfx, estatus);
+	       pfx_seq, generic->header.source_id);
+	apei_estatus_print(pfx_seq, estatus);
 }
 
 static int ghes_print_estatus(const char *pfx,
@@ -801,7 +807,7 @@ static int ghes_notify_nmi(struct notifi
 
 	if (sev_global >= GHES_SEV_PANIC) {
 		oops_begin();
-		__ghes_print_estatus(KERN_EMERG HW_ERR, ghes_global->generic,
+		__ghes_print_estatus(KERN_EMERG, ghes_global->generic,
 				     ghes_global->estatus);
 		/* reboot to log the error! */
 		if (panic_timeout == 0)

      parent reply	other threads:[~2011-09-20  1:39 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-09-20  1:38 [PATCH 0/8] ACPI, APEI patches for 3.2 Huang Ying
2011-09-20  1:38 ` [PATCH 1/8] ACPI, APEI, Print resource errors in conventional format Huang Ying
2011-09-20  1:38 ` [PATCH 2/8] ACPI, APEI, Remove table not found message Huang Ying
2011-09-20  1:38 ` [PATCH 3/8] ACPI, Record ACPI NVS regions Huang Ying
2011-09-20  1:38 ` [PATCH 4/8] ACPI, APEI, Resolve false conflict between ACPI NVS and APEI Huang Ying
2011-09-20  2:09   ` Bjorn Helgaas
2011-09-20  2:34     ` Huang Ying
2011-09-20 16:26       ` Bjorn Helgaas
2011-09-21  1:43         ` Huang Ying
2011-09-21  4:23           ` Bjorn Helgaas
2011-09-20  1:38 ` [PATCH 5/8] ACPI, APEI, EINJ, Fix resource conflict on some machine Huang Ying
2011-09-20  2:58   ` Chen Gong
2011-09-20  1:38 ` [PATCH 6/8] ACPI, Add RAM mapping support to ACPI atomic IO support Huang Ying
2011-09-20  1:39 ` [PATCH 7/8] ACPI, APEI, GHES: Add PCIe AER recovery support Huang Ying
2011-09-20  1:39 ` Huang Ying [this message]

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=1316482741-21799-9-git-send-email-ying.huang@intel.com \
    --to=ying.huang@intel.com \
    --cc=lenb@kernel.org \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=tony.luck@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;
as well as URLs for NNTP newsgroup(s).