On Tue, May 07, 2013 at 08:40:14AM -0700, Max Asbock wrote: > So something like the following patch might be closer: Yep, we're getting there. [ … ] > +static bool cmc_firmware_first; Why the global variable? You can pass it as a pointer to apei_hest_parse so that check_cmc_firmware_first can set its value. See below: > +static int check_cmc_firmware_first(struct acpi_hest_header *hest_hdr, void *d) > +{ > + if (hest_hdr->type == ACPI_HEST_TYPE_IA32_CORRECTED_CHECK) { > + struct acpi_hest_ia_corrected *cmc; > + > + cmc = (struct acpi_hest_ia_corrected *)hest_hdr; > + if (cmc->flags & ACPI_HEST_FIRMWARE_FIRST) { > + cmc_firmware_first = true; > + return 1; > + } > + } > + return 0; > +} > + > +static void disable_cmci(void *data) > +{ > + if (!mce_available(__this_cpu_ptr(&cpu_info))) > + return; > + cmci_clear(); > +} > + > +static __init int honor_cmc_firmware_first(void) > +{ > + apei_hest_parse(check_cmc_firmware_first, NULL); > + > + if (cmc_firmware_first && !mca_cfg.cmci_disabled) { > + on_each_cpu(disable_cmci, NULL, 1); > + mca_cfg.cmci_disabled = true; Well, in looking at the code more, there's set_cmci_disabled() in mce.c. You can make a helper which contains only the meat of this function without the buffer parsing and export it to users. This way you don't need to touch anything else in mce.c - only this helper. IOW, I think it can be as simple as this: static __init int honor_cmc_firmware_first(void) { bool ff = false; /* * XXX: you need to check error code here and return early accordingly */ apei_hest_parse(check_cmc_firmware_first, &ff); if (ff) disable_cmci(); /* <--- helper */ /* * Perhaps an informational message here: */ pr_info("APEI: Switching to Firmware-First mode.\n"); return 0; } late_initcall(honor_cmc_firmware_first); And this chunk should be in drivers/acpi/apei/ and not in arch/x86/. Thanks. -- Regards/Gruss, Boris. Sent from a fat crate under my desk. Formatting is fine. -- -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html