| .. | .. |
|---|
| 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 | |
|---|