]>
Commit | Line | Data |
---|---|---|
1 | /* SPDX-License-Identifier: GPL-2.0 */ | |
2 | /* | |
3 | * apei.h - ACPI Platform Error Interface | |
4 | */ | |
5 | ||
6 | #ifndef ACPI_APEI_H | |
7 | #define ACPI_APEI_H | |
8 | ||
9 | #include <linux/acpi.h> | |
10 | #include <linux/cper.h> | |
11 | #include <asm/ioctls.h> | |
12 | ||
13 | #define APEI_ERST_INVALID_RECORD_ID 0xffffffffffffffffULL | |
14 | ||
15 | #define APEI_ERST_CLEAR_RECORD _IOW('E', 1, u64) | |
16 | #define APEI_ERST_GET_RECORD_COUNT _IOR('E', 2, u32) | |
17 | ||
18 | #ifdef __KERNEL__ | |
19 | ||
20 | enum hest_status { | |
21 | HEST_ENABLED, | |
22 | HEST_DISABLED, | |
23 | HEST_NOT_FOUND, | |
24 | }; | |
25 | ||
26 | extern int hest_disable; | |
27 | extern int erst_disable; | |
28 | #ifdef CONFIG_ACPI_APEI_GHES | |
29 | extern bool ghes_disable; | |
30 | #else | |
31 | #define ghes_disable 1 | |
32 | #endif | |
33 | ||
34 | #ifdef CONFIG_ACPI_APEI | |
35 | void __init acpi_hest_init(void); | |
36 | #else | |
37 | static inline void acpi_hest_init(void) { return; } | |
38 | #endif | |
39 | ||
40 | typedef int (*apei_hest_func_t)(struct acpi_hest_header *hest_hdr, void *data); | |
41 | int apei_hest_parse(apei_hest_func_t func, void *data); | |
42 | ||
43 | int erst_write(const struct cper_record_header *record); | |
44 | ssize_t erst_get_record_count(void); | |
45 | int erst_get_record_id_begin(int *pos); | |
46 | int erst_get_record_id_next(int *pos, u64 *record_id); | |
47 | void erst_get_record_id_end(void); | |
48 | ssize_t erst_read(u64 record_id, struct cper_record_header *record, | |
49 | size_t buflen); | |
50 | int erst_clear(u64 record_id); | |
51 | ||
52 | int arch_apei_enable_cmcff(struct acpi_hest_header *hest_hdr, void *data); | |
53 | void arch_apei_report_mem_error(int sev, struct cper_sec_mem_err *mem_err); | |
54 | ||
55 | #endif | |
56 | #endif |