Linux Audio

Check our new training course

Loading...
v4.6
 
 1#ifndef _ASM_X86_NMI_H
 2#define _ASM_X86_NMI_H
 3
 4#include <linux/irq_work.h>
 5#include <linux/pm.h>
 6#include <asm/irq.h>
 7#include <asm/io.h>
 8
 9#ifdef CONFIG_X86_LOCAL_APIC
10
11extern int avail_to_resrv_perfctr_nmi_bit(unsigned int);
12extern int reserve_perfctr_nmi(unsigned int);
13extern void release_perfctr_nmi(unsigned int);
14extern int reserve_evntsel_nmi(unsigned int);
15extern void release_evntsel_nmi(unsigned int);
16
17struct ctl_table;
18extern int proc_nmi_enabled(struct ctl_table *, int ,
19			void __user *, size_t *, loff_t *);
20extern int unknown_nmi_panic;
21
22#endif /* CONFIG_X86_LOCAL_APIC */
23
24#define NMI_FLAG_FIRST	1
25
26enum {
27	NMI_LOCAL=0,
28	NMI_UNKNOWN,
29	NMI_SERR,
30	NMI_IO_CHECK,
31	NMI_MAX
32};
33
34#define NMI_DONE	0
35#define NMI_HANDLED	1
36
37typedef int (*nmi_handler_t)(unsigned int, struct pt_regs *);
38
39struct nmiaction {
40	struct list_head	list;
41	nmi_handler_t		handler;
42	u64			max_duration;
43	struct irq_work		irq_work;
44	unsigned long		flags;
45	const char		*name;
46};
47
48#define register_nmi_handler(t, fn, fg, n, init...)	\
49({							\
50	static struct nmiaction init fn##_na = {	\
 
51		.handler = (fn),			\
52		.name = (n),				\
53		.flags = (fg),				\
54	};						\
55	__register_nmi_handler((t), &fn##_na);		\
56})
57
58int __register_nmi_handler(unsigned int, struct nmiaction *);
59
60void unregister_nmi_handler(unsigned int, const char *);
61
62void stop_nmi(void);
63void restart_nmi(void);
64void local_touch_nmi(void);
65
66#endif /* _ASM_X86_NMI_H */
v6.8
 1/* SPDX-License-Identifier: GPL-2.0 */
 2#ifndef _ASM_X86_NMI_H
 3#define _ASM_X86_NMI_H
 4
 5#include <linux/irq_work.h>
 6#include <linux/pm.h>
 7#include <asm/irq.h>
 8#include <asm/io.h>
 9
10#ifdef CONFIG_X86_LOCAL_APIC
11
 
12extern int reserve_perfctr_nmi(unsigned int);
13extern void release_perfctr_nmi(unsigned int);
14extern int reserve_evntsel_nmi(unsigned int);
15extern void release_evntsel_nmi(unsigned int);
16
17struct ctl_table;
18extern int proc_nmi_enabled(struct ctl_table *, int ,
19			void __user *, size_t *, loff_t *);
20extern int unknown_nmi_panic;
21
22#endif /* CONFIG_X86_LOCAL_APIC */
23
24#define NMI_FLAG_FIRST	1
25
26enum {
27	NMI_LOCAL=0,
28	NMI_UNKNOWN,
29	NMI_SERR,
30	NMI_IO_CHECK,
31	NMI_MAX
32};
33
34#define NMI_DONE	0
35#define NMI_HANDLED	1
36
37typedef int (*nmi_handler_t)(unsigned int, struct pt_regs *);
38
39struct nmiaction {
40	struct list_head	list;
41	nmi_handler_t		handler;
42	u64			max_duration;
 
43	unsigned long		flags;
44	const char		*name;
45};
46
47#define register_nmi_handler(t, fn, fg, n, init...)	\
48({							\
49	static struct nmiaction init fn##_na = {	\
50		.list = LIST_HEAD_INIT(fn##_na.list),	\
51		.handler = (fn),			\
52		.name = (n),				\
53		.flags = (fg),				\
54	};						\
55	__register_nmi_handler((t), &fn##_na);		\
56})
57
58int __register_nmi_handler(unsigned int, struct nmiaction *);
59
60void unregister_nmi_handler(unsigned int, const char *);
61
62void stop_nmi(void);
63void restart_nmi(void);
64void local_touch_nmi(void);
65
66#endif /* _ASM_X86_NMI_H */