Huang Ying | 9dc9666 | 2010-05-18 14:35:13 +0800 | [diff] [blame] | 1 | /* |
| 2 | * apei.h - ACPI Platform Error Interface |
| 3 | */ |
| 4 | |
| 5 | #ifndef ACPI_APEI_H |
| 6 | #define ACPI_APEI_H |
| 7 | |
Huang Ying | a08f82d | 2010-05-18 14:35:21 +0800 | [diff] [blame] | 8 | #include <linux/acpi.h> |
| 9 | #include <linux/cper.h> |
| 10 | #include <asm/ioctls.h> |
| 11 | |
| 12 | #define APEI_ERST_INVALID_RECORD_ID 0xffffffffffffffffULL |
| 13 | |
| 14 | #define APEI_ERST_CLEAR_RECORD _IOW('E', 1, u64) |
| 15 | #define APEI_ERST_GET_RECORD_COUNT _IOR('E', 2, u32) |
| 16 | |
| 17 | #ifdef __KERNEL__ |
| 18 | |
Huang Ying | 9dc9666 | 2010-05-18 14:35:13 +0800 | [diff] [blame] | 19 | extern int hest_disable; |
Huang Ying | a08f82d | 2010-05-18 14:35:21 +0800 | [diff] [blame] | 20 | extern int erst_disable; |
Len Brown | a7e09d4 | 2011-07-16 18:14:21 -0400 | [diff] [blame] | 21 | #ifdef CONFIG_ACPI_APEI_GHES |
Huang Ying | b6a9501 | 2011-07-13 13:14:19 +0800 | [diff] [blame] | 22 | extern int ghes_disable; |
Len Brown | a7e09d4 | 2011-07-16 18:14:21 -0400 | [diff] [blame] | 23 | #else |
| 24 | #define ghes_disable 1 |
| 25 | #endif |
Huang Ying | 9dc9666 | 2010-05-18 14:35:13 +0800 | [diff] [blame] | 26 | |
Rafael J. Wysocki | 415e12b | 2011-01-07 00:55:09 +0100 | [diff] [blame] | 27 | #ifdef CONFIG_ACPI_APEI |
| 28 | void __init acpi_hest_init(void); |
| 29 | #else |
| 30 | static inline void acpi_hest_init(void) { return; } |
| 31 | #endif |
| 32 | |
Huang Ying | 9dc9666 | 2010-05-18 14:35:13 +0800 | [diff] [blame] | 33 | typedef int (*apei_hest_func_t)(struct acpi_hest_header *hest_hdr, void *data); |
| 34 | int apei_hest_parse(apei_hest_func_t func, void *data); |
| 35 | |
Huang Ying | a08f82d | 2010-05-18 14:35:21 +0800 | [diff] [blame] | 36 | int erst_write(const struct cper_record_header *record); |
| 37 | ssize_t erst_get_record_count(void); |
Huang Ying | 885b976 | 2011-02-21 13:54:41 +0800 | [diff] [blame] | 38 | int erst_get_record_id_begin(int *pos); |
| 39 | int erst_get_record_id_next(int *pos, u64 *record_id); |
| 40 | void erst_get_record_id_end(void); |
Huang Ying | a08f82d | 2010-05-18 14:35:21 +0800 | [diff] [blame] | 41 | ssize_t erst_read(u64 record_id, struct cper_record_header *record, |
| 42 | size_t buflen); |
Huang Ying | a08f82d | 2010-05-18 14:35:21 +0800 | [diff] [blame] | 43 | int erst_clear(u64 record_id); |
| 44 | |
| 45 | #endif |
Huang Ying | 9dc9666 | 2010-05-18 14:35:13 +0800 | [diff] [blame] | 46 | #endif |