cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

nmi.h (1411B)


      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 */