]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/blame - arch/x86/kernel/cpu/mcheck/mce-internal.h
Merge branches 'acpi-scan', 'acpi-utils' and 'acpi-pm'
[mirror_ubuntu-bionic-kernel.git] / arch / x86 / kernel / cpu / mcheck / mce-internal.h
CommitLineData
8a25a2fd 1#include <linux/device.h>
817f32d0
AK
2#include <asm/mce.h>
3
4enum severity_level {
5 MCE_NO_SEVERITY,
e3480271
CY
6 MCE_DEFERRED_SEVERITY,
7 MCE_UCNA_SEVERITY = MCE_DEFERRED_SEVERITY,
ed7290d0 8 MCE_KEEP_SEVERITY,
817f32d0 9 MCE_SOME_SEVERITY,
ed7290d0 10 MCE_AO_SEVERITY,
817f32d0 11 MCE_UC_SEVERITY,
ed7290d0 12 MCE_AR_SEVERITY,
817f32d0
AK
13 MCE_PANIC_SEVERITY,
14};
15
cebe1820
AK
16#define ATTR_LEN 16
17
18/* One object for each MCE bank, shared by all CPUs */
19struct mce_bank {
20 u64 ctl; /* subevents to enable */
21 unsigned char init; /* initialise bank? */
8a25a2fd 22 struct device_attribute attr; /* device attribute */
cebe1820
AK
23 char attrname[ATTR_LEN]; /* attribute name */
24};
25
e3480271 26int mce_severity(struct mce *a, int tolerant, char **msg, bool is_excp);
5be9ed25 27struct dentry *mce_get_debugfs_dir(void);
ed7290d0 28
cebe1820 29extern struct mce_bank *mce_banks;
c3d1fb56 30extern mce_banks_t mce_banks_ce_disabled;
cebe1820 31
55babd8f
CG
32#ifdef CONFIG_X86_MCE_INTEL
33unsigned long mce_intel_adjust_timer(unsigned long interval);
34void mce_intel_cmci_poll(void);
35void mce_intel_hcpu_update(unsigned long cpu);
c3d1fb56 36void cmci_disable_bank(int bank);
55babd8f
CG
37#else
38# define mce_intel_adjust_timer mce_adjust_timer_default
39static inline void mce_intel_cmci_poll(void) { }
40static inline void mce_intel_hcpu_update(unsigned long cpu) { }
c3d1fb56 41static inline void cmci_disable_bank(int bank) { }
55babd8f
CG
42#endif
43
44void mce_timer_kick(unsigned long interval);
45
482908b4
HY
46#ifdef CONFIG_ACPI_APEI
47int apei_write_mce(struct mce *m);
48ssize_t apei_read_mce(struct mce *m, u64 *record_id);
49int apei_check_mce(void);
50int apei_clear_mce(u64 record_id);
51#else
52static inline int apei_write_mce(struct mce *m)
53{
54 return -EINVAL;
55}
56static inline ssize_t apei_read_mce(struct mce *m, u64 *record_id)
57{
58 return 0;
59}
60static inline int apei_check_mce(void)
61{
62 return 0;
63}
64static inline int apei_clear_mce(u64 record_id)
65{
66 return -EINVAL;
67}
68#endif