forked from luck/tmp_suning_uos_patched
9dae3d0d9e
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>
50 lines
1.2 KiB
C
50 lines
1.2 KiB
C
/*
|
|
* apei.h - ACPI Platform Error Interface
|
|
*/
|
|
|
|
#ifndef ACPI_APEI_H
|
|
#define ACPI_APEI_H
|
|
|
|
#include <linux/acpi.h>
|
|
#include <linux/cper.h>
|
|
#include <asm/ioctls.h>
|
|
|
|
#define APEI_ERST_INVALID_RECORD_ID 0xffffffffffffffffULL
|
|
|
|
#define APEI_ERST_CLEAR_RECORD _IOW('E', 1, u64)
|
|
#define APEI_ERST_GET_RECORD_COUNT _IOR('E', 2, u32)
|
|
|
|
#ifdef __KERNEL__
|
|
|
|
extern bool hest_disable;
|
|
extern int erst_disable;
|
|
#ifdef CONFIG_ACPI_APEI_GHES
|
|
extern bool ghes_disable;
|
|
#else
|
|
#define ghes_disable 1
|
|
#endif
|
|
|
|
#ifdef CONFIG_ACPI_APEI
|
|
void __init acpi_hest_init(void);
|
|
#else
|
|
static inline void acpi_hest_init(void) { return; }
|
|
#endif
|
|
|
|
typedef int (*apei_hest_func_t)(struct acpi_hest_header *hest_hdr, void *data);
|
|
int apei_hest_parse(apei_hest_func_t func, void *data);
|
|
|
|
int erst_write(const struct cper_record_header *record);
|
|
ssize_t erst_get_record_count(void);
|
|
int erst_get_record_id_begin(int *pos);
|
|
int erst_get_record_id_next(int *pos, u64 *record_id);
|
|
void erst_get_record_id_end(void);
|
|
ssize_t erst_read(u64 record_id, struct cper_record_header *record,
|
|
size_t buflen);
|
|
int erst_clear(u64 record_id);
|
|
|
|
int arch_apei_enable_cmcff(struct acpi_hest_header *hest_hdr, void *data);
|
|
void arch_apei_report_mem_error(int sev, struct cper_sec_mem_err *mem_err);
|
|
|
|
#endif
|
|
#endif
|