| .. | .. |
|---|
| 24 | 24 | |
|---|
| 25 | 25 | #define IRQ_IN_COMBINER 8 |
|---|
| 26 | 26 | |
|---|
| 27 | | -static DEFINE_SPINLOCK(irq_controller_lock); |
|---|
| 27 | +static DEFINE_HARD_SPINLOCK(irq_controller_lock); |
|---|
| 28 | 28 | |
|---|
| 29 | 29 | struct combiner_chip_data { |
|---|
| 30 | 30 | unsigned int hwirq_offset; |
|---|
| .. | .. |
|---|
| 71 | 71 | |
|---|
| 72 | 72 | chained_irq_enter(chip, desc); |
|---|
| 73 | 73 | |
|---|
| 74 | | - spin_lock(&irq_controller_lock); |
|---|
| 74 | + raw_spin_lock(&irq_controller_lock); |
|---|
| 75 | 75 | status = readl_relaxed(chip_data->base + COMBINER_INT_STATUS); |
|---|
| 76 | | - spin_unlock(&irq_controller_lock); |
|---|
| 76 | + raw_spin_unlock(&irq_controller_lock); |
|---|
| 77 | 77 | status &= chip_data->irq_mask; |
|---|
| 78 | 78 | |
|---|
| 79 | 79 | if (status == 0) |
|---|
| .. | .. |
|---|
| 113 | 113 | #ifdef CONFIG_SMP |
|---|
| 114 | 114 | .irq_set_affinity = combiner_set_affinity, |
|---|
| 115 | 115 | #endif |
|---|
| 116 | + .flags = IRQCHIP_PIPELINE_SAFE, |
|---|
| 116 | 117 | }; |
|---|
| 117 | 118 | |
|---|
| 118 | 119 | static void __init combiner_cascade_irq(struct combiner_chip_data *combiner_data, |
|---|