.. | .. |
---|
72 | 72 | _TIF_NEED_RESCHED | _TIF_PATCH_PENDING | _TIF_NOTIFY_SIGNAL | \ |
---|
73 | 73 | ARCH_EXIT_TO_USER_MODE_WORK) |
---|
74 | 74 | |
---|
| 75 | +/* |
---|
| 76 | + * Status codes of syscall entry when Dovetail is enabled. Must not |
---|
| 77 | + * conflict with valid syscall numbers. And with -1 which seccomp uses |
---|
| 78 | + * to skip an syscall. |
---|
| 79 | + */ |
---|
| 80 | +#define EXIT_SYSCALL_OOB (-2) |
---|
| 81 | +#define EXIT_SYSCALL_TAIL (-3) |
---|
| 82 | + |
---|
75 | 83 | /** |
---|
76 | 84 | * arch_check_user_regs - Architecture specific sanity check for user mode regs |
---|
77 | 85 | * @regs: Pointer to currents pt_regs |
---|
.. | .. |
---|
181 | 189 | #ifndef local_irq_enable_exit_to_user |
---|
182 | 190 | static inline void local_irq_enable_exit_to_user(unsigned long ti_work) |
---|
183 | 191 | { |
---|
184 | | - local_irq_enable(); |
---|
| 192 | + local_irq_enable_full(); |
---|
185 | 193 | } |
---|
186 | 194 | #endif |
---|
187 | 195 | |
---|
.. | .. |
---|
196 | 204 | #ifndef local_irq_disable_exit_to_user |
---|
197 | 205 | static inline void local_irq_disable_exit_to_user(void) |
---|
198 | 206 | { |
---|
199 | | - local_irq_disable(); |
---|
| 207 | + local_irq_disable_full(); |
---|
200 | 208 | } |
---|
201 | 209 | #endif |
---|
202 | 210 | |
---|
.. | .. |
---|
341 | 349 | */ |
---|
342 | 350 | void irqentry_exit_to_user_mode(struct pt_regs *regs); |
---|
343 | 351 | |
---|
| 352 | +enum irqentry_info { |
---|
| 353 | + IRQENTRY_INBAND_UNSTALLED = 0, |
---|
| 354 | + IRQENTRY_INBAND_STALLED, |
---|
| 355 | + IRQENTRY_OOB, |
---|
| 356 | +}; |
---|
| 357 | + |
---|
344 | 358 | #ifndef irqentry_state |
---|
345 | 359 | /** |
---|
346 | 360 | * struct irqentry_state - Opaque object for exception state storage |
---|
.. | .. |
---|
348 | 362 | * exit path has to invoke rcu_irq_exit(). |
---|
349 | 363 | * @lockdep: Used exclusively in the irqentry_nmi_*() calls; ensures that |
---|
350 | 364 | * lockdep state is restored correctly on exit from nmi. |
---|
| 365 | + * @stage_info: Information about pipeline state and current stage on IRQ entry. |
---|
351 | 366 | * |
---|
352 | 367 | * This opaque object is filled in by the irqentry_*_enter() functions and |
---|
353 | 368 | * must be passed back into the corresponding irqentry_*_exit() functions |
---|
.. | .. |
---|
362 | 377 | bool exit_rcu; |
---|
363 | 378 | bool lockdep; |
---|
364 | 379 | }; |
---|
| 380 | +#ifdef CONFIG_IRQ_PIPELINE |
---|
| 381 | + enum irqentry_info stage_info; |
---|
| 382 | +#endif |
---|
365 | 383 | } irqentry_state_t; |
---|
366 | 384 | #endif |
---|
367 | 385 | |
---|