Merge git://git.infradead.org/mtd-2.6
[linux-block.git] / arch / x86 / kernel / cpu / mcheck / mce-internal.h
CommitLineData
cebe1820 1#include <linux/sysdev.h>
817f32d0
AK
2#include <asm/mce.h>
3
4enum severity_level {
5 MCE_NO_SEVERITY,
ed7290d0 6 MCE_KEEP_SEVERITY,
817f32d0 7 MCE_SOME_SEVERITY,
ed7290d0 8 MCE_AO_SEVERITY,
817f32d0 9 MCE_UC_SEVERITY,
ed7290d0 10 MCE_AR_SEVERITY,
817f32d0
AK
11 MCE_PANIC_SEVERITY,
12};
13
cebe1820
AK
14#define ATTR_LEN 16
15
16/* One object for each MCE bank, shared by all CPUs */
17struct mce_bank {
18 u64 ctl; /* subevents to enable */
19 unsigned char init; /* initialise bank? */
20 struct sysdev_attribute attr; /* sysdev attribute */
21 char attrname[ATTR_LEN]; /* attribute name */
22};
23
817f32d0 24int mce_severity(struct mce *a, int tolerant, char **msg);
5be9ed25 25struct dentry *mce_get_debugfs_dir(void);
ed7290d0
AK
26
27extern int mce_ser;
cebe1820
AK
28
29extern struct mce_bank *mce_banks;
30
482908b4
HY
31#ifdef CONFIG_ACPI_APEI
32int apei_write_mce(struct mce *m);
33ssize_t apei_read_mce(struct mce *m, u64 *record_id);
34int apei_check_mce(void);
35int apei_clear_mce(u64 record_id);
36#else
37static inline int apei_write_mce(struct mce *m)
38{
39 return -EINVAL;
40}
41static inline ssize_t apei_read_mce(struct mce *m, u64 *record_id)
42{
43 return 0;
44}
45static inline int apei_check_mce(void)
46{
47 return 0;
48}
49static inline int apei_clear_mce(u64 record_id)
50{
51 return -EINVAL;
52}
53#endif