Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'irq-urgent-2021-03-21' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Pull irq fix from Ingo Molnar:
"A change to robustify force-threaded IRQ handlers to always disable
interrupts, plus a DocBook fix.

The force-threaded IRQ handler change has been accelerated from the
normal schedule of such a change to keep the bad pattern/workaround of
spin_lock_irqsave() in handlers or IRQF_NOTHREAD as a kludge from
spreading"

* tag 'irq-urgent-2021-03-21' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
genirq: Disable interrupts for force threaded handlers
genirq/irq_sim: Fix typos in kernel doc (fnode -> fwnode)

+6 -2
+2 -2
kernel/irq/irq_sim.c
··· 159 159 * irq_domain_create_sim - Create a new interrupt simulator irq_domain and 160 160 * allocate a range of dummy interrupts. 161 161 * 162 - * @fnode: struct fwnode_handle to be associated with this domain. 162 + * @fwnode: struct fwnode_handle to be associated with this domain. 163 163 * @num_irqs: Number of interrupts to allocate. 164 164 * 165 165 * On success: return a new irq_domain object. ··· 228 228 * a managed device. 229 229 * 230 230 * @dev: Device to initialize the simulator object for. 231 - * @fnode: struct fwnode_handle to be associated with this domain. 231 + * @fwnode: struct fwnode_handle to be associated with this domain. 232 232 * @num_irqs: Number of interrupts to allocate 233 233 * 234 234 * On success: return a new irq_domain object.
+4
kernel/irq/manage.c
··· 1142 1142 irqreturn_t ret; 1143 1143 1144 1144 local_bh_disable(); 1145 + if (!IS_ENABLED(CONFIG_PREEMPT_RT)) 1146 + local_irq_disable(); 1145 1147 ret = action->thread_fn(action->irq, action->dev_id); 1146 1148 if (ret == IRQ_HANDLED) 1147 1149 atomic_inc(&desc->threads_handled); 1148 1150 1149 1151 irq_finalize_oneshot(desc, action); 1152 + if (!IS_ENABLED(CONFIG_PREEMPT_RT)) 1153 + local_irq_enable(); 1150 1154 local_bh_enable(); 1151 1155 return ret; 1152 1156 }