You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
Merge branch 'irq-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull irq fixes from Ingo Molnar: "Misc irq fixes: - two driver fixes - a Xen regression fix - a nested irq thread crash fix" * 'irq-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: irqchip/gicv3-its: Fix mapping of LPIs to collections genirq: Prevent resend to interrupts marked IRQ_NESTED_THREAD genirq: Revert sparse irq locking around __cpu_up() and move it to x86 for now gpio/davinci: Fix race in installing chained irq handler
This commit is contained in:
@@ -527,18 +527,9 @@ static int _cpu_up(unsigned int cpu, int tasks_frozen)
|
||||
goto out_notify;
|
||||
}
|
||||
|
||||
/*
|
||||
* Some architectures have to walk the irq descriptors to
|
||||
* setup the vector space for the cpu which comes online.
|
||||
* Prevent irq alloc/free across the bringup.
|
||||
*/
|
||||
irq_lock_sparse();
|
||||
|
||||
/* Arch-specific enabling code. */
|
||||
ret = __cpu_up(cpu, idle);
|
||||
|
||||
irq_unlock_sparse();
|
||||
|
||||
if (ret != 0)
|
||||
goto out_notify;
|
||||
BUG_ON(!cpu_online(cpu));
|
||||
|
||||
+13
-5
@@ -75,13 +75,21 @@ void check_irq_resend(struct irq_desc *desc, unsigned int irq)
|
||||
!desc->irq_data.chip->irq_retrigger(&desc->irq_data)) {
|
||||
#ifdef CONFIG_HARDIRQS_SW_RESEND
|
||||
/*
|
||||
* If the interrupt has a parent irq and runs
|
||||
* in the thread context of the parent irq,
|
||||
* retrigger the parent.
|
||||
* If the interrupt is running in the thread
|
||||
* context of the parent irq we need to be
|
||||
* careful, because we cannot trigger it
|
||||
* directly.
|
||||
*/
|
||||
if (desc->parent_irq &&
|
||||
irq_settings_is_nested_thread(desc))
|
||||
if (irq_settings_is_nested_thread(desc)) {
|
||||
/*
|
||||
* If the parent_irq is valid, we
|
||||
* retrigger the parent, otherwise we
|
||||
* do nothing.
|
||||
*/
|
||||
if (!desc->parent_irq)
|
||||
return;
|
||||
irq = desc->parent_irq;
|
||||
}
|
||||
/* Set it pending and activate the softirq: */
|
||||
set_bit(irq, irqs_resend);
|
||||
tasklet_schedule(&resend_tasklet);
|
||||
|
||||
Reference in New Issue
Block a user