aboutsummaryrefslogtreecommitdiffstats
path: root/include/acpi/apei.h
diff options
context:
space:
mode:
authorHuang Ying <ying.huang@intel.com>2010-05-18 02:35:21 -0400
committerLen Brown <len.brown@intel.com>2010-05-19 22:41:31 -0400
commita08f82d08053fb6e3aa3635c2c26456d96337c8b (patch)
treeed68e8951610b66c6971cdb1fc446eb9e53e0422 /include/acpi/apei.h
parentd334a49113a4a33109fd24e46073280ecd1bea0d (diff)
ACPI, APEI, Error Record Serialization Table (ERST) support
ERST is a way provided by APEI to save and retrieve hardware error record to and from some simple persistent storage (such as flash). The Linux kernel support implementation is quite simple and workable in NMI context. So it can be used to save hardware error record into flash in hardware error exception or NMI handler, where other more complex persistent storage such as disk is not usable. After saving hardware error records via ERST in hardware error exception or NMI handler, the error records can be retrieved and logged into disk or network after a clean reboot. For more information about ERST, please refer to ACPI Specification version 4.0, section 17.4. This patch incorporate fixes from Jin Dongming. Signed-off-by: Huang Ying <ying.huang@intel.com> Signed-off-by: Andi Kleen <ak@linux.intel.com> CC: Jin Dongming <jin.dongming@np.css.fujitsu.com> Signed-off-by: Len Brown <len.brown@intel.com>
Diffstat (limited to 'include/acpi/apei.h')
-rw-r--r--include/acpi/apei.h21
1 files changed, 21 insertions, 0 deletions
diff --git a/include/acpi/apei.h b/include/acpi/apei.h
index 631a1ad2d108..b3365025ff8d 100644
--- a/include/acpi/apei.h
+++ b/include/acpi/apei.h
@@ -5,9 +5,30 @@
5#ifndef ACPI_APEI_H 5#ifndef ACPI_APEI_H
6#define ACPI_APEI_H 6#define ACPI_APEI_H
7 7
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
8extern int hest_disable; 19extern int hest_disable;
20extern int erst_disable;
9 21
10typedef int (*apei_hest_func_t)(struct acpi_hest_header *hest_hdr, void *data); 22typedef int (*apei_hest_func_t)(struct acpi_hest_header *hest_hdr, void *data);
11int apei_hest_parse(apei_hest_func_t func, void *data); 23int apei_hest_parse(apei_hest_func_t func, void *data);
12 24
25int erst_write(const struct cper_record_header *record);
26ssize_t erst_get_record_count(void);
27int erst_get_next_record_id(u64 *record_id);
28ssize_t erst_read(u64 record_id, struct cper_record_header *record,
29 size_t buflen);
30ssize_t erst_read_next(struct cper_record_header *record, size_t buflen);
31int erst_clear(u64 record_id);
32
33#endif
13#endif 34#endif