aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Documentation/x86/x86_64/boot-options.txt5
-rw-r--r--arch/x86/include/asm/acpi.h2
-rw-r--r--arch/x86/kernel/acpi/boot.c5
-rw-r--r--drivers/acpi/apei/hest.c3
4 files changed, 14 insertions, 1 deletions
diff --git a/Documentation/x86/x86_64/boot-options.txt b/Documentation/x86/x86_64/boot-options.txt
index e9e8ddbbf376..1228b22e142b 100644
--- a/Documentation/x86/x86_64/boot-options.txt
+++ b/Documentation/x86/x86_64/boot-options.txt
@@ -176,6 +176,11 @@ ACPI
176 176
177 acpi=noirq Don't route interrupts 177 acpi=noirq Don't route interrupts
178 178
179 acpi=nocmcff Disable firmware first mode for corrected errors. This
180 disables parsing the HEST CMC error source to check if
181 firmware has set the FF flag. This may result in
182 duplicate corrected error reports.
183
179PCI 184PCI
180 185
181 pci=off Don't use PCI 186 pci=off Don't use PCI
diff --git a/arch/x86/include/asm/acpi.h b/arch/x86/include/asm/acpi.h
index b31bf97775fc..42db2b88953b 100644
--- a/arch/x86/include/asm/acpi.h
+++ b/arch/x86/include/asm/acpi.h
@@ -86,6 +86,7 @@ extern int acpi_pci_disabled;
86extern int acpi_skip_timer_override; 86extern int acpi_skip_timer_override;
87extern int acpi_use_timer_override; 87extern int acpi_use_timer_override;
88extern int acpi_fix_pin2_polarity; 88extern int acpi_fix_pin2_polarity;
89extern int acpi_disable_cmcff;
89 90
90extern u8 acpi_sci_flags; 91extern u8 acpi_sci_flags;
91extern int acpi_sci_override_gsi; 92extern int acpi_sci_override_gsi;
@@ -168,6 +169,7 @@ static inline void arch_acpi_set_pdc_bits(u32 *buf)
168 169
169#define acpi_lapic 0 170#define acpi_lapic 0
170#define acpi_ioapic 0 171#define acpi_ioapic 0
172#define acpi_disable_cmcff 0
171static inline void acpi_noirq_set(void) { } 173static inline void acpi_noirq_set(void) { }
172static inline void acpi_disable_pci(void) { } 174static inline void acpi_disable_pci(void) { }
173static inline void disable_acpi(void) { } 175static inline void disable_acpi(void) { }
diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c
index 230c8ea878e5..d1998d580080 100644
--- a/arch/x86/kernel/acpi/boot.c
+++ b/arch/x86/kernel/acpi/boot.c
@@ -66,6 +66,7 @@ EXPORT_SYMBOL(acpi_pci_disabled);
66int acpi_lapic; 66int acpi_lapic;
67int acpi_ioapic; 67int acpi_ioapic;
68int acpi_strict; 68int acpi_strict;
69int acpi_disable_cmcff;
69 70
70u8 acpi_sci_flags __initdata; 71u8 acpi_sci_flags __initdata;
71int acpi_sci_override_gsi __initdata; 72int acpi_sci_override_gsi __initdata;
@@ -1619,6 +1620,10 @@ static int __init parse_acpi(char *arg)
1619 /* "acpi=copy_dsdt" copys DSDT */ 1620 /* "acpi=copy_dsdt" copys DSDT */
1620 else if (strcmp(arg, "copy_dsdt") == 0) { 1621 else if (strcmp(arg, "copy_dsdt") == 0) {
1621 acpi_gbl_copy_dsdt_locally = 1; 1622 acpi_gbl_copy_dsdt_locally = 1;
1623 }
1624 /* "acpi=nocmcff" disables FF mode for corrected errors */
1625 else if (strcmp(arg, "nocmcff") == 0) {
1626 acpi_disable_cmcff = 1;
1622 } else { 1627 } else {
1623 /* Core will printk when we return error. */ 1628 /* Core will printk when we return error. */
1624 return -EINVAL; 1629 return -EINVAL;
diff --git a/drivers/acpi/apei/hest.c b/drivers/acpi/apei/hest.c
index b108b116bf28..502024502b13 100644
--- a/drivers/acpi/apei/hest.c
+++ b/drivers/acpi/apei/hest.c
@@ -262,7 +262,8 @@ void __init acpi_hest_init(void)
262 goto err; 262 goto err;
263 } 263 }
264 264
265 apei_hest_parse(hest_parse_cmc, NULL); 265 if (!acpi_disable_cmcff)
266 apei_hest_parse(hest_parse_cmc, NULL);
266 267
267 if (!ghes_disable) { 268 if (!ghes_disable) {
268 rc = apei_hest_parse(hest_parse_ghes_count, &ghes_count); 269 rc = apei_hest_parse(hest_parse_ghes_count, &ghes_count);