|
@@ -293,6 +293,7 @@ void fixup_irqs(void)
|
|
|
static int warned;
|
|
|
struct irq_desc *desc;
|
|
|
struct irq_data *data;
|
|
|
+ struct irq_chip *chip;
|
|
|
|
|
|
for_each_irq_desc(irq, desc) {
|
|
|
int break_affinity = 0;
|
|
@@ -307,7 +308,7 @@ void fixup_irqs(void)
|
|
|
/* interrupt's are disabled at this point */
|
|
|
raw_spin_lock(&desc->lock);
|
|
|
|
|
|
- data = &desc->irq_data;
|
|
|
+ data = irq_desc_get_irq_data(desc);
|
|
|
affinity = data->affinity;
|
|
|
if (!irq_has_action(irq) ||
|
|
|
cpumask_subset(affinity, cpu_online_mask)) {
|
|
@@ -327,16 +328,17 @@ void fixup_irqs(void)
|
|
|
affinity = cpu_all_mask;
|
|
|
}
|
|
|
|
|
|
- if (!(desc->status & IRQ_MOVE_PCNTXT) && data->chip->irq_mask)
|
|
|
- data->chip->irq_mask(data);
|
|
|
+ chip = irq_data_get_irq_chip(data);
|
|
|
+ if (!irqd_can_move_in_process_context(data) && chip->irq_mask)
|
|
|
+ chip->irq_mask(data);
|
|
|
|
|
|
- if (data->chip->irq_set_affinity)
|
|
|
- data->chip->irq_set_affinity(data, affinity, true);
|
|
|
+ if (chip->irq_set_affinity)
|
|
|
+ chip->irq_set_affinity(data, affinity, true);
|
|
|
else if (!(warned++))
|
|
|
set_affinity = 0;
|
|
|
|
|
|
- if (!(desc->status & IRQ_MOVE_PCNTXT) && data->chip->irq_unmask)
|
|
|
- data->chip->irq_unmask(data);
|
|
|
+ if (!irqd_can_move_in_process_context(data) && chip->irq_unmask)
|
|
|
+ chip->irq_unmask(data);
|
|
|
|
|
|
raw_spin_unlock(&desc->lock);
|
|
|
|
|
@@ -368,10 +370,11 @@ void fixup_irqs(void)
|
|
|
irq = __this_cpu_read(vector_irq[vector]);
|
|
|
|
|
|
desc = irq_to_desc(irq);
|
|
|
- data = &desc->irq_data;
|
|
|
+ data = irq_desc_get_irq_data(desc);
|
|
|
+ chip = irq_data_get_irq_chip(data);
|
|
|
raw_spin_lock(&desc->lock);
|
|
|
- if (data->chip->irq_retrigger)
|
|
|
- data->chip->irq_retrigger(data);
|
|
|
+ if (chip->irq_retrigger)
|
|
|
+ chip->irq_retrigger(data);
|
|
|
raw_spin_unlock(&desc->lock);
|
|
|
}
|
|
|
}
|