-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
apei, mce: Factor out APEI architecture specific MCE calls.
This commit abstracts MCE calls and provides weak corresponding default implementation for those architectures which do not need arch specific actions. Each platform willing to do additional architectural actions should provides desired function definition. It allows us to avoid wrap code into #ifdef in generic code and prevent new platform from introducing dummy stub function too. Initially, there are two APEI arch-specific calls: - arch_apei_enable_cmcff() - arch_apei_report_mem_error() Both interact with MCE driver for X86 architecture. Signed-off-by: Tomasz Nowicki <tomasz.nowicki@linaro.org> Acked-by: Borislav Petkov <bp@suse.de> Signed-off-by: Tony Luck <tony.luck@intel.com>
- Loading branch information
Tomasz Nowicki
authored and
Tony Luck
committed
Jul 22, 2014
1 parent
9a3c414
commit 9dae3d0
Showing
6 changed files
with
76 additions
and
32 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
/* | ||
* Arch-specific APEI-related functions. | ||
* | ||
* This program is free software; you can redistribute it and/or modify | ||
* it under the terms of the GNU General Public License as published by | ||
* the Free Software Foundation; either version 2 of the License, or | ||
* (at your option) any later version. | ||
* | ||
* This program is distributed in the hope that it will be useful, | ||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
* GNU General Public License for more details. | ||
*/ | ||
|
||
#include <acpi/apei.h> | ||
|
||
#include <asm/mce.h> | ||
|
||
int arch_apei_enable_cmcff(struct acpi_hest_header *hest_hdr, void *data) | ||
{ | ||
#ifdef CONFIG_X86_MCE | ||
int i; | ||
struct acpi_hest_ia_corrected *cmc; | ||
struct acpi_hest_ia_error_bank *mc_bank; | ||
|
||
if (hest_hdr->type != ACPI_HEST_TYPE_IA32_CORRECTED_CHECK) | ||
return 0; | ||
|
||
cmc = (struct acpi_hest_ia_corrected *)hest_hdr; | ||
if (!cmc->enabled) | ||
return 0; | ||
|
||
/* | ||
* We expect HEST to provide a list of MC banks that report errors | ||
* in firmware first mode. Otherwise, return non-zero value to | ||
* indicate that we are done parsing HEST. | ||
*/ | ||
if (!(cmc->flags & ACPI_HEST_FIRMWARE_FIRST) || | ||
!cmc->num_hardware_banks) | ||
return 1; | ||
|
||
pr_info("HEST: Enabling Firmware First mode for corrected errors.\n"); | ||
|
||
mc_bank = (struct acpi_hest_ia_error_bank *)(cmc + 1); | ||
for (i = 0; i < cmc->num_hardware_banks; i++, mc_bank++) | ||
mce_disable_bank(mc_bank->bank_number); | ||
#endif | ||
return 1; | ||
} | ||
|
||
void arch_apei_report_mem_error(int sev, struct cper_sec_mem_err *mem_err) | ||
{ | ||
#ifdef CONFIG_X86_MCE | ||
apei_mce_report_mem_error(sev, mem_err); | ||
#endif | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters