Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

mce: acpi/apei: Add a boot option to disable ff mode for corrected errors

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>

authored by

Naveen N. Rao and committed by
Tony Luck
9ad95879 c3d1fb56

+14 -1
+5
Documentation/x86/x86_64/boot-options.txt
··· 176 176 177 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 + 179 184 PCI 180 185 181 186 pci=off Don't use PCI
+2
arch/x86/include/asm/acpi.h
··· 86 86 extern int acpi_skip_timer_override; 87 87 extern int acpi_use_timer_override; 88 88 extern int acpi_fix_pin2_polarity; 89 + extern int acpi_disable_cmcff; 89 90 90 91 extern u8 acpi_sci_flags; 91 92 extern int acpi_sci_override_gsi; ··· 169 168 170 169 #define acpi_lapic 0 171 170 #define acpi_ioapic 0 171 + #define acpi_disable_cmcff 0 172 172 static inline void acpi_noirq_set(void) { } 173 173 static inline void acpi_disable_pci(void) { } 174 174 static inline void disable_acpi(void) { }
+5
arch/x86/kernel/acpi/boot.c
··· 66 66 int acpi_lapic; 67 67 int acpi_ioapic; 68 68 int acpi_strict; 69 + int acpi_disable_cmcff; 69 70 70 71 u8 acpi_sci_flags __initdata; 71 72 int acpi_sci_override_gsi __initdata; ··· 1620 1619 /* "acpi=copy_dsdt" copys DSDT */ 1621 1620 else if (strcmp(arg, "copy_dsdt") == 0) { 1622 1621 acpi_gbl_copy_dsdt_locally = 1; 1622 + } 1623 + /* "acpi=nocmcff" disables FF mode for corrected errors */ 1624 + else if (strcmp(arg, "nocmcff") == 0) { 1625 + acpi_disable_cmcff = 1; 1623 1626 } else { 1624 1627 /* Core will printk when we return error. */ 1625 1628 return -EINVAL;
+2 -1
drivers/acpi/apei/hest.c
··· 262 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 268 if (!ghes_disable) { 268 269 rc = apei_hest_parse(hest_parse_ghes_count, &ghes_count);