On 05.05.2014 13:44, Borislav Petkov wrote:
On Wed, Apr 09, 2014 at 05:14:29PM +0200, Tomasz Nowicki wrote:
This commit is dealing with MCE code in:
- hest.c
Move acpi_disable_cmcff flag to hest_parse_cmc() and makes that depend on CONFIG_X86_MCE so that we do not have to maintain acpi_disable_cmcff for architectures which do not support MCE. Also, wrap architectural MCE header inside #ifdef CONFIG_X86_MCE.
- ghes.c
Wrap architectural MCE header inside #ifdef CONFIG_X86_MCE similar to rest of the MCE code in this file.
Signed-off-by: Tomasz Nowicki tomasz.nowicki@linaro.org
drivers/acpi/apei/ghes.c | 2 ++ drivers/acpi/apei/hest.c | 8 ++++++-- 2 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/drivers/acpi/apei/ghes.c b/drivers/acpi/apei/ghes.c index dab7cb7..f7edffc 100644 --- a/drivers/acpi/apei/ghes.c +++ b/drivers/acpi/apei/ghes.c @@ -49,7 +49,9 @@ #include <linux/aer.h>
#include <acpi/ghes.h> +#ifdef CONFIG_X86_MCE #include <asm/mce.h> +#endif #include <asm/tlbflush.h> #include <asm/nmi.h>
diff --git a/drivers/acpi/apei/hest.c b/drivers/acpi/apei/hest.c index f5e37f3..98db702 100644 --- a/drivers/acpi/apei/hest.c +++ b/drivers/acpi/apei/hest.c @@ -36,7 +36,9 @@ #include <linux/io.h> #include <linux/platform_device.h> #include <acpi/apei.h> +#ifdef CONFIG_X86_MCE #include <asm/mce.h> +#endif
Actually, I would prefer if you wrapped all the arch-specific calls into arch-specific functions, say, convert
apei_mce_report_mem_error -> apei_arch_report_mem_error
and have default empty functions for arches which don't use that functionality.
This way you can save yourself the ugly ifdeffery around the place.
True, this can be improved as you suggested.
#include "apei-internal.h"
@@ -133,6 +135,9 @@ static int __init hest_parse_cmc(struct acpi_hest_header *hest_hdr, void *data) struct acpi_hest_ia_corrected *cmc; struct acpi_hest_ia_error_bank *mc_bank;
- if (acpi_disable_cmcff)
return 1;
This could be
if (arch_disable_cmcff()) return 1;
with the default stub being
static inline bool arch_disable_cmcff(void) { return false; }
and so on, like it is done in many other places in the kernel.
acpi_disable_cmcff as global value can switch off/on MC entries analysing via kernel args. This glob value resides in x86 ACPI code and has meaning only for MCE related mechanism, that is why I have moved it under hest_parse_cmc.
Thanks.
Tomasz