.. | .. |
---|
88 | 88 | #define TIF_USER_RETURN_NOTIFY 11 /* notify kernel of userspace return */ |
---|
89 | 89 | #define TIF_UPROBE 12 /* breakpointed or singlestepping */ |
---|
90 | 90 | #define TIF_PATCH_PENDING 13 /* pending live patching update */ |
---|
| 91 | +#define TIF_NEED_FPU_LOAD 14 /* load FPU on return to userspace */ |
---|
91 | 92 | #define TIF_NOCPUID 15 /* CPUID is not accessible in userland */ |
---|
92 | 93 | #define TIF_NOTSC 16 /* TSC is not accessible in userland */ |
---|
93 | 94 | #define TIF_IA32 17 /* IA32 compatibility process */ |
---|
94 | | -#define TIF_NOHZ 19 /* in adaptive nohz mode */ |
---|
| 95 | +#define TIF_SLD 18 /* Restore split lock detection on context switch */ |
---|
| 96 | +#define TIF_NOTIFY_SIGNAL 19 /* signal notifications exist */ |
---|
95 | 97 | #define TIF_MEMDIE 20 /* is terminating due to OOM killer */ |
---|
96 | 98 | #define TIF_POLLING_NRFLAG 21 /* idle is polling for TIF_NEED_RESCHED */ |
---|
97 | 99 | #define TIF_IO_BITMAP 22 /* uses I/O bitmap */ |
---|
.. | .. |
---|
101 | 103 | #define TIF_SYSCALL_TRACEPOINT 28 /* syscall tracepoint instrumentation */ |
---|
102 | 104 | #define TIF_ADDR32 29 /* 32-bit address space on 64 bits */ |
---|
103 | 105 | #define TIF_X32 30 /* 32-bit native x86-64 binary */ |
---|
104 | | -#define TIF_FSCHECK 31 /* Check FS is USER_DS on return */ |
---|
105 | 106 | |
---|
106 | 107 | #define _TIF_SYSCALL_TRACE (1 << TIF_SYSCALL_TRACE) |
---|
107 | 108 | #define _TIF_NOTIFY_RESUME (1 << TIF_NOTIFY_RESUME) |
---|
.. | .. |
---|
117 | 118 | #define _TIF_USER_RETURN_NOTIFY (1 << TIF_USER_RETURN_NOTIFY) |
---|
118 | 119 | #define _TIF_UPROBE (1 << TIF_UPROBE) |
---|
119 | 120 | #define _TIF_PATCH_PENDING (1 << TIF_PATCH_PENDING) |
---|
| 121 | +#define _TIF_NEED_FPU_LOAD (1 << TIF_NEED_FPU_LOAD) |
---|
120 | 122 | #define _TIF_NOCPUID (1 << TIF_NOCPUID) |
---|
121 | 123 | #define _TIF_NOTSC (1 << TIF_NOTSC) |
---|
122 | 124 | #define _TIF_IA32 (1 << TIF_IA32) |
---|
123 | | -#define _TIF_NOHZ (1 << TIF_NOHZ) |
---|
| 125 | +#define _TIF_NOTIFY_SIGNAL (1 << TIF_NOTIFY_SIGNAL) |
---|
| 126 | +#define _TIF_SLD (1 << TIF_SLD) |
---|
124 | 127 | #define _TIF_POLLING_NRFLAG (1 << TIF_POLLING_NRFLAG) |
---|
125 | 128 | #define _TIF_IO_BITMAP (1 << TIF_IO_BITMAP) |
---|
126 | 129 | #define _TIF_FORCED_TF (1 << TIF_FORCED_TF) |
---|
.. | .. |
---|
129 | 132 | #define _TIF_SYSCALL_TRACEPOINT (1 << TIF_SYSCALL_TRACEPOINT) |
---|
130 | 133 | #define _TIF_ADDR32 (1 << TIF_ADDR32) |
---|
131 | 134 | #define _TIF_X32 (1 << TIF_X32) |
---|
132 | | -#define _TIF_FSCHECK (1 << TIF_FSCHECK) |
---|
133 | | - |
---|
134 | | -/* |
---|
135 | | - * work to do in syscall_trace_enter(). Also includes TIF_NOHZ for |
---|
136 | | - * enter_from_user_mode() |
---|
137 | | - */ |
---|
138 | | -#define _TIF_WORK_SYSCALL_ENTRY \ |
---|
139 | | - (_TIF_SYSCALL_TRACE | _TIF_SYSCALL_EMU | _TIF_SYSCALL_AUDIT | \ |
---|
140 | | - _TIF_SECCOMP | _TIF_SYSCALL_TRACEPOINT | \ |
---|
141 | | - _TIF_NOHZ) |
---|
142 | | - |
---|
143 | | -/* work to do on any return to user space */ |
---|
144 | | -#define _TIF_ALLWORK_MASK \ |
---|
145 | | - (_TIF_SYSCALL_TRACE | _TIF_NOTIFY_RESUME | _TIF_SIGPENDING | \ |
---|
146 | | - _TIF_NEED_RESCHED | _TIF_SINGLESTEP | _TIF_SYSCALL_EMU | \ |
---|
147 | | - _TIF_SYSCALL_AUDIT | _TIF_USER_RETURN_NOTIFY | _TIF_UPROBE | \ |
---|
148 | | - _TIF_PATCH_PENDING | _TIF_NOHZ | _TIF_SYSCALL_TRACEPOINT | \ |
---|
149 | | - _TIF_FSCHECK) |
---|
150 | 135 | |
---|
151 | 136 | /* flags to check in __switch_to() */ |
---|
152 | | -#define _TIF_WORK_CTXSW_BASE \ |
---|
153 | | - (_TIF_IO_BITMAP|_TIF_NOCPUID|_TIF_NOTSC|_TIF_BLOCKSTEP| \ |
---|
154 | | - _TIF_SSBD | _TIF_SPEC_FORCE_UPDATE) |
---|
| 137 | +#define _TIF_WORK_CTXSW_BASE \ |
---|
| 138 | + (_TIF_NOCPUID | _TIF_NOTSC | _TIF_BLOCKSTEP | \ |
---|
| 139 | + _TIF_SSBD | _TIF_SPEC_FORCE_UPDATE | _TIF_SLD) |
---|
155 | 140 | |
---|
156 | 141 | /* |
---|
157 | 142 | * Avoid calls to __switch_to_xtra() on UP as STIBP is not evaluated. |
---|
.. | .. |
---|
162 | 147 | # define _TIF_WORK_CTXSW (_TIF_WORK_CTXSW_BASE) |
---|
163 | 148 | #endif |
---|
164 | 149 | |
---|
165 | | -#define _TIF_WORK_CTXSW_PREV (_TIF_WORK_CTXSW|_TIF_USER_RETURN_NOTIFY) |
---|
166 | | -#define _TIF_WORK_CTXSW_NEXT (_TIF_WORK_CTXSW) |
---|
| 150 | +#ifdef CONFIG_X86_IOPL_IOPERM |
---|
| 151 | +# define _TIF_WORK_CTXSW_PREV (_TIF_WORK_CTXSW| _TIF_USER_RETURN_NOTIFY | \ |
---|
| 152 | + _TIF_IO_BITMAP) |
---|
| 153 | +#else |
---|
| 154 | +# define _TIF_WORK_CTXSW_PREV (_TIF_WORK_CTXSW| _TIF_USER_RETURN_NOTIFY) |
---|
| 155 | +#endif |
---|
| 156 | + |
---|
| 157 | +#define _TIF_WORK_CTXSW_NEXT (_TIF_WORK_CTXSW) |
---|
167 | 158 | |
---|
168 | 159 | #define STACK_WARN (THREAD_SIZE/8) |
---|
169 | 160 | |
---|
.. | .. |
---|
259 | 250 | #define in_ia32_syscall() (IS_ENABLED(CONFIG_IA32_EMULATION) && \ |
---|
260 | 251 | current_thread_info()->status & TS_COMPAT) |
---|
261 | 252 | #endif |
---|
262 | | - |
---|
263 | | -/* |
---|
264 | | - * Force syscall return via IRET by making it look as if there was |
---|
265 | | - * some work pending. IRET is our most capable (but slowest) syscall |
---|
266 | | - * return path, which is able to restore modified SS, CS and certain |
---|
267 | | - * EFLAGS values that other (fast) syscall return instructions |
---|
268 | | - * are not able to restore properly. |
---|
269 | | - */ |
---|
270 | | -#define force_iret() set_thread_flag(TIF_NOTIFY_RESUME) |
---|
271 | 253 | |
---|
272 | 254 | extern void arch_task_cache_init(void); |
---|
273 | 255 | extern int arch_dup_task_struct(struct task_struct *dst, struct task_struct *src); |
---|