.. | .. |
---|
18 | 18 | void asm_call_irq_on_stack(void *sp, void (*func)(struct irq_desc *desc), |
---|
19 | 19 | struct irq_desc *desc); |
---|
20 | 20 | |
---|
| 21 | +/* |
---|
| 22 | + * IRQ pipeline: only in-band (soft-)irq handlers have to run on the |
---|
| 23 | + * irqstack, oob irq handlers must be lean by design therefore can run |
---|
| 24 | + * directly over the preempted context. Therefore, the guarantee that |
---|
| 25 | + * the in-band stage is currently stalled on the current CPU is enough |
---|
| 26 | + * to update irq_count atomically. |
---|
| 27 | + */ |
---|
21 | 28 | static __always_inline void __run_on_irqstack(void (*func)(void)) |
---|
22 | 29 | { |
---|
23 | 30 | void *tos = __this_cpu_read(hardirq_stack_ptr); |
---|