Re: [Patch] MCE, APEI: Don't enable CMCI when Firmware First mode is set in HEST for corrected machine checks

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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




[Index of Archives]     [Linux IBM ACPI]     [Linux Power Management]     [Linux Kernel]     [Linux Laptop]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]

  Powered by Linux