mirror of
https://github.com/torvalds/linux.git
synced 2026-07-27 17:47:41 +02:00
Merge branch 'irq/urgent' into irq/drivers
Pick up fixes so subsequent changes apply.
This commit is contained in:
commit
0ed645812f
|
|
@ -24,7 +24,7 @@
|
|||
|
||||
#define IRQ_IN_COMBINER 8
|
||||
|
||||
static DEFINE_SPINLOCK(irq_controller_lock);
|
||||
static DEFINE_RAW_SPINLOCK(irq_controller_lock);
|
||||
|
||||
struct combiner_chip_data {
|
||||
unsigned int hwirq_offset;
|
||||
|
|
@ -72,9 +72,9 @@ static void combiner_handle_cascade_irq(struct irq_desc *desc)
|
|||
|
||||
chained_irq_enter(chip, desc);
|
||||
|
||||
spin_lock(&irq_controller_lock);
|
||||
raw_spin_lock(&irq_controller_lock);
|
||||
status = readl_relaxed(chip_data->base + COMBINER_INT_STATUS);
|
||||
spin_unlock(&irq_controller_lock);
|
||||
raw_spin_unlock(&irq_controller_lock);
|
||||
status &= chip_data->irq_mask;
|
||||
|
||||
if (status == 0)
|
||||
|
|
|
|||
|
|
@ -265,7 +265,7 @@ static int rzt2h_icu_init(struct platform_device *pdev, struct device_node *pare
|
|||
irq_domain = irq_domain_create_hierarchy(parent_domain, 0, RZT2H_ICU_NUM_IRQ,
|
||||
dev_fwnode(dev), &rzt2h_icu_domain_ops, priv);
|
||||
if (!irq_domain) {
|
||||
pm_runtime_put(dev);
|
||||
pm_runtime_put_sync(dev);
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -158,6 +158,8 @@ static int imsic_dying_cpu(unsigned int cpu)
|
|||
/* Cleanup IPIs */
|
||||
imsic_ipi_dying_cpu();
|
||||
|
||||
imsic_local_sync_all(false);
|
||||
|
||||
/* Mark per-CPU IMSIC state as offline */
|
||||
imsic_state_offline();
|
||||
|
||||
|
|
|
|||
|
|
@ -292,6 +292,12 @@ void irq_work_sync(struct irq_work *work)
|
|||
!arch_irq_work_has_interrupt()) {
|
||||
rcuwait_wait_event(&work->irqwait, !irq_work_is_busy(work),
|
||||
TASK_UNINTERRUPTIBLE);
|
||||
/*
|
||||
* Ensure irq_work_single() does not access @work
|
||||
* after removing IRQ_WORK_BUSY. It is always
|
||||
* accessed within a RCU-read section.
|
||||
*/
|
||||
synchronize_rcu();
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -302,6 +308,7 @@ EXPORT_SYMBOL_GPL(irq_work_sync);
|
|||
|
||||
static void run_irq_workd(unsigned int cpu)
|
||||
{
|
||||
guard(rcu)();
|
||||
irq_work_run_list(this_cpu_ptr(&lazy_list));
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user