This source file includes following definitions.
- sdei_mask_local_cpu
- sdei_unmask_local_cpu
1
2
3 #ifndef __LINUX_ARM_SDEI_H
4 #define __LINUX_ARM_SDEI_H
5
6 #include <uapi/linux/arm_sdei.h>
7
8 enum sdei_conduit_types {
9 CONDUIT_INVALID = 0,
10 CONDUIT_SMC,
11 CONDUIT_HVC,
12 };
13
14 #include <acpi/ghes.h>
15
16 #ifdef CONFIG_ARM_SDE_INTERFACE
17 #include <asm/sdei.h>
18 #endif
19
20
21 #ifndef sdei_arch_get_entry_point
22 #define sdei_arch_get_entry_point(conduit) (0)
23 #endif
24
25
26
27
28
29 typedef int (sdei_event_callback)(u32 event, struct pt_regs *regs, void *arg);
30
31
32
33
34
35 int sdei_event_register(u32 event_num, sdei_event_callback *cb, void *arg);
36
37
38
39
40
41 int sdei_event_unregister(u32 event_num);
42
43 int sdei_event_enable(u32 event_num);
44 int sdei_event_disable(u32 event_num);
45
46
47 int sdei_register_ghes(struct ghes *ghes, sdei_event_callback *normal_cb,
48 sdei_event_callback *critical_cb);
49 int sdei_unregister_ghes(struct ghes *ghes);
50
51 #ifdef CONFIG_ARM_SDE_INTERFACE
52
53 int sdei_mask_local_cpu(void);
54 int sdei_unmask_local_cpu(void);
55 #else
56 static inline int sdei_mask_local_cpu(void) { return 0; }
57 static inline int sdei_unmask_local_cpu(void) { return 0; }
58 #endif
59
60
61
62
63
64
65
66
67
68
69
70
71 struct sdei_registered_event {
72
73 struct pt_regs interrupted_regs;
74
75 sdei_event_callback *callback;
76 void *callback_arg;
77 u32 event_num;
78 u8 priority;
79 };
80
81
82 int notrace sdei_event_handler(struct pt_regs *regs,
83 struct sdei_registered_event *arg);
84
85
86 int sdei_api_event_context(u32 query, u64 *result);
87
88 #endif