mce: acpi/apei: Add a boot option to disable ff mode for corrected errors
authorNaveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
Mon, 1 Jul 2013 15:38:54 +0000 (21:08 +0530)
committerTony Luck <tony.luck@intel.com>
Mon, 8 Jul 2013 18:54:28 +0000 (11:54 -0700)
Add a boot option to disable firmware first mode for corrected errors.

Signed-off-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
Acked-by: Borislav Petkov <bp@suse.de>
Signed-off-by: Tony Luck <tony.luck@intel.com>
Documentation/x86/x86_64/boot-options.txt
arch/x86/include/asm/acpi.h
arch/x86/kernel/acpi/boot.c
drivers/acpi/apei/hest.c

index e9e8ddb..1228b22 100644 (file)
@@ -176,6 +176,11 @@ ACPI
 
   acpi=noirq   Don't route interrupts
 
+  acpi=nocmcff Disable firmware first mode for corrected errors. This
+               disables parsing the HEST CMC error source to check if
+               firmware has set the FF flag. This may result in
+               duplicate corrected error reports.
+
 PCI
 
   pci=off              Don't use PCI
index b31bf97..42db2b8 100644 (file)
@@ -86,6 +86,7 @@ extern int acpi_pci_disabled;
 extern int acpi_skip_timer_override;
 extern int acpi_use_timer_override;
 extern int acpi_fix_pin2_polarity;
+extern int acpi_disable_cmcff;
 
 extern u8 acpi_sci_flags;
 extern int acpi_sci_override_gsi;
@@ -168,6 +169,7 @@ static inline void arch_acpi_set_pdc_bits(u32 *buf)
 
 #define acpi_lapic 0
 #define acpi_ioapic 0
+#define acpi_disable_cmcff 0
 static inline void acpi_noirq_set(void) { }
 static inline void acpi_disable_pci(void) { }
 static inline void disable_acpi(void) { }
index 230c8ea..d1998d5 100644 (file)
@@ -66,6 +66,7 @@ EXPORT_SYMBOL(acpi_pci_disabled);
 int acpi_lapic;
 int acpi_ioapic;
 int acpi_strict;
+int acpi_disable_cmcff;
 
 u8 acpi_sci_flags __initdata;
 int acpi_sci_override_gsi __initdata;
@@ -1619,6 +1620,10 @@ static int __init parse_acpi(char *arg)
        /* "acpi=copy_dsdt" copys DSDT */
        else if (strcmp(arg, "copy_dsdt") == 0) {
                acpi_gbl_copy_dsdt_locally = 1;
+       }
+       /* "acpi=nocmcff" disables FF mode for corrected errors */
+       else if (strcmp(arg, "nocmcff") == 0) {
+               acpi_disable_cmcff = 1;
        } else {
                /* Core will printk when we return error. */
                return -EINVAL;
index b108b11..5020245 100644 (file)
@@ -262,7 +262,8 @@ void __init acpi_hest_init(void)
                goto err;
        }
 
-       apei_hest_parse(hest_parse_cmc, NULL);
+       if (!acpi_disable_cmcff)
+               apei_hest_parse(hest_parse_cmc, NULL);
 
        if (!ghes_disable) {
                rc = apei_hest_parse(hest_parse_ghes_count, &ghes_count);