diff options
Diffstat (limited to 'arch/x86/kernel/irq.c')
| -rw-r--r-- | arch/x86/kernel/irq.c | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/arch/x86/kernel/irq.c b/arch/x86/kernel/irq.c index 91fd0c70a18a..d765bdc48074 100644 --- a/arch/x86/kernel/irq.c +++ b/arch/x86/kernel/irq.c | |||
| @@ -159,7 +159,7 @@ int show_interrupts(struct seq_file *p, void *v) | |||
| 159 | seq_printf(p, "%*d: ", prec, i); | 159 | seq_printf(p, "%*d: ", prec, i); |
| 160 | for_each_online_cpu(j) | 160 | for_each_online_cpu(j) |
| 161 | seq_printf(p, "%10u ", kstat_irqs_cpu(i, j)); | 161 | seq_printf(p, "%10u ", kstat_irqs_cpu(i, j)); |
| 162 | seq_printf(p, " %8s", desc->chip->name); | 162 | seq_printf(p, " %8s", desc->irq_data.chip->name); |
| 163 | seq_printf(p, "-%-8s", desc->name); | 163 | seq_printf(p, "-%-8s", desc->name); |
| 164 | 164 | ||
| 165 | if (action) { | 165 | if (action) { |
| @@ -282,6 +282,7 @@ void fixup_irqs(void) | |||
| 282 | unsigned int irq, vector; | 282 | unsigned int irq, vector; |
| 283 | static int warned; | 283 | static int warned; |
| 284 | struct irq_desc *desc; | 284 | struct irq_desc *desc; |
| 285 | struct irq_data *data; | ||
| 285 | 286 | ||
| 286 | for_each_irq_desc(irq, desc) { | 287 | for_each_irq_desc(irq, desc) { |
| 287 | int break_affinity = 0; | 288 | int break_affinity = 0; |
| @@ -296,7 +297,8 @@ void fixup_irqs(void) | |||
| 296 | /* interrupt's are disabled at this point */ | 297 | /* interrupt's are disabled at this point */ |
| 297 | raw_spin_lock(&desc->lock); | 298 | raw_spin_lock(&desc->lock); |
| 298 | 299 | ||
| 299 | affinity = desc->affinity; | 300 | data = &desc->irq_data; |
| 301 | affinity = data->affinity; | ||
| 300 | if (!irq_has_action(irq) || | 302 | if (!irq_has_action(irq) || |
| 301 | cpumask_equal(affinity, cpu_online_mask)) { | 303 | cpumask_equal(affinity, cpu_online_mask)) { |
| 302 | raw_spin_unlock(&desc->lock); | 304 | raw_spin_unlock(&desc->lock); |
| @@ -315,16 +317,16 @@ void fixup_irqs(void) | |||
| 315 | affinity = cpu_all_mask; | 317 | affinity = cpu_all_mask; |
| 316 | } | 318 | } |
| 317 | 319 | ||
| 318 | if (!(desc->status & IRQ_MOVE_PCNTXT) && desc->chip->mask) | 320 | if (!(desc->status & IRQ_MOVE_PCNTXT) && data->chip->irq_mask) |
| 319 | desc->chip->mask(irq); | 321 | data->chip->irq_mask(data); |
| 320 | 322 | ||
| 321 | if (desc->chip->set_affinity) | 323 | if (data->chip->irq_set_affinity) |
| 322 | desc->chip->set_affinity(irq, affinity); | 324 | data->chip->irq_set_affinity(data, affinity, true); |
| 323 | else if (!(warned++)) | 325 | else if (!(warned++)) |
| 324 | set_affinity = 0; | 326 | set_affinity = 0; |
| 325 | 327 | ||
| 326 | if (!(desc->status & IRQ_MOVE_PCNTXT) && desc->chip->unmask) | 328 | if (!(desc->status & IRQ_MOVE_PCNTXT) && data->chip->irq_unmask) |
| 327 | desc->chip->unmask(irq); | 329 | data->chip->irq_unmask(data); |
| 328 | 330 | ||
| 329 | raw_spin_unlock(&desc->lock); | 331 | raw_spin_unlock(&desc->lock); |
| 330 | 332 | ||
| @@ -355,10 +357,10 @@ void fixup_irqs(void) | |||
| 355 | if (irr & (1 << (vector % 32))) { | 357 | if (irr & (1 << (vector % 32))) { |
| 356 | irq = __get_cpu_var(vector_irq)[vector]; | 358 | irq = __get_cpu_var(vector_irq)[vector]; |
| 357 | 359 | ||
| 358 | desc = irq_to_desc(irq); | 360 | data = irq_get_irq_data(irq); |
| 359 | raw_spin_lock(&desc->lock); | 361 | raw_spin_lock(&desc->lock); |
| 360 | if (desc->chip->retrigger) | 362 | if (data->chip->irq_retrigger) |
| 361 | desc->chip->retrigger(irq); | 363 | data->chip->irq_retrigger(data); |
| 362 | raw_spin_unlock(&desc->lock); | 364 | raw_spin_unlock(&desc->lock); |
| 363 | } | 365 | } |
| 364 | } | 366 | } |
