trace, eMCA: Add a knob to adjust where to save event log
authorChen, Gong <gong.chen@linux.intel.com>
Wed, 11 Jun 2014 08:34:50 +0000 (04:34 -0400)
committerTony Luck <tony.luck@intel.com>
Wed, 25 Jun 2014 20:27:12 +0000 (13:27 -0700)
To avoid saving two copies for one H/W event, add a new
file under debugfs to control how to save event log.
Once this file is opened, the perf/trace will be used,
in the meanwhile, kernel will stop printing event log
to the console. On the other hand, if this file is closed,
kernel will print event log to the console again.

Signed-off-by: Chen, Gong <gong.chen@linux.intel.com>
Acked-by: Borislav Petkov <bp@suse.de>
Signed-off-by: Tony Luck <tony.luck@intel.com>
drivers/acpi/acpi_extlog.c

index e61da957f30f14c1e4917b450179e78afa994a1d..a99d4a6156dcacaab5770fce845f88a2fa7a7766 100644 (file)
@@ -12,6 +12,7 @@
 #include <linux/cper.h>
 #include <linux/ratelimit.h>
 #include <linux/edac.h>
+#include <linux/ras.h>
 #include <asm/cpu.h>
 #include <asm/mce.h>
 
@@ -154,7 +155,11 @@ static int extlog_print(struct notifier_block *nb, unsigned long val,
        estatus->block_status = 0;
 
        tmp = (struct acpi_generic_status *)elog_buf;
-       print_extlog_rcd(NULL, tmp, cpu);
+
+       if (!ras_userspace_consumers()) {
+               print_extlog_rcd(NULL, tmp, cpu);
+               goto out;
+       }
 
        /* log event via trace */
        err_seq++;
@@ -171,6 +176,7 @@ static int extlog_print(struct notifier_block *nb, unsigned long val,
                                               (u8)gdata->error_severity);
        }
 
+out:
        return NOTIFY_STOP;
 }