| .. | .. |
|---|
| 24 | 24 | #include "internals.h" |
|---|
| 25 | 25 | |
|---|
| 26 | 26 | #ifdef CONFIG_IRQ_FORCED_THREADING |
|---|
| 27 | +# ifndef CONFIG_PREEMPT_RT_BASE |
|---|
| 27 | 28 | __read_mostly bool force_irqthreads; |
|---|
| 28 | 29 | EXPORT_SYMBOL_GPL(force_irqthreads); |
|---|
| 29 | 30 | |
|---|
| .. | .. |
|---|
| 33 | 34 | return 0; |
|---|
| 34 | 35 | } |
|---|
| 35 | 36 | early_param("threadirqs", setup_forced_irqthreads); |
|---|
| 37 | +# endif |
|---|
| 36 | 38 | #endif |
|---|
| 37 | 39 | |
|---|
| 38 | 40 | static void __synchronize_hardirq(struct irq_desc *desc, bool sync_chip) |
|---|
| .. | .. |
|---|
| 1095 | 1097 | if (action_ret == IRQ_WAKE_THREAD) |
|---|
| 1096 | 1098 | irq_wake_secondary(desc, action); |
|---|
| 1097 | 1099 | |
|---|
| 1100 | +#ifdef CONFIG_PREEMPT_RT_FULL |
|---|
| 1101 | + migrate_disable(); |
|---|
| 1102 | + add_interrupt_randomness(action->irq, 0, |
|---|
| 1103 | + desc->random_ip ^ (unsigned long) action); |
|---|
| 1104 | + migrate_enable(); |
|---|
| 1105 | +#endif |
|---|
| 1098 | 1106 | wake_threads_waitq(desc); |
|---|
| 1099 | 1107 | } |
|---|
| 1100 | 1108 | |
|---|
| .. | .. |
|---|
| 1506 | 1514 | irq_settings_set_no_balancing(desc); |
|---|
| 1507 | 1515 | irqd_set(&desc->irq_data, IRQD_NO_BALANCING); |
|---|
| 1508 | 1516 | } |
|---|
| 1517 | + |
|---|
| 1518 | + if (new->flags & IRQF_NO_SOFTIRQ_CALL) |
|---|
| 1519 | + irq_settings_set_no_softirq_call(desc); |
|---|
| 1509 | 1520 | |
|---|
| 1510 | 1521 | if (irq_settings_can_autoenable(desc)) { |
|---|
| 1511 | 1522 | irq_startup(desc, IRQ_RESEND, IRQ_START_COND); |
|---|
| .. | .. |
|---|
| 2312 | 2323 | * This call sets the internal irqchip state of an interrupt, |
|---|
| 2313 | 2324 | * depending on the value of @which. |
|---|
| 2314 | 2325 | * |
|---|
| 2315 | | - * This function should be called with preemption disabled if the |
|---|
| 2326 | + * This function should be called with migration disabled if the |
|---|
| 2316 | 2327 | * interrupt controller has per-cpu registers. |
|---|
| 2317 | 2328 | */ |
|---|
| 2318 | 2329 | int irq_set_irqchip_state(unsigned int irq, enum irqchip_irq_state which, |
|---|