diff options
| -rw-r--r-- | kernel/irq/chip.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/kernel/irq/chip.c b/kernel/irq/chip.c index 09c1a4493440..c8648a83b80a 100644 --- a/kernel/irq/chip.c +++ b/kernel/irq/chip.c | |||
| @@ -345,6 +345,11 @@ static void compat_irq_mask_ack(struct irq_data *data) | |||
| 345 | data->chip->mask_ack(data->irq); | 345 | data->chip->mask_ack(data->irq); |
| 346 | } | 346 | } |
| 347 | 347 | ||
| 348 | static void compat_irq_eoi(struct irq_data *data) | ||
| 349 | { | ||
| 350 | data->chip->eoi(data->irq); | ||
| 351 | } | ||
| 352 | |||
| 348 | static void compat_bus_lock(struct irq_data *data) | 353 | static void compat_bus_lock(struct irq_data *data) |
| 349 | { | 354 | { |
| 350 | data->chip->bus_lock(data->irq); | 355 | data->chip->bus_lock(data->irq); |
| @@ -390,6 +395,8 @@ void irq_chip_set_defaults(struct irq_chip *chip) | |||
| 390 | chip->irq_ack = compat_irq_ack; | 395 | chip->irq_ack = compat_irq_ack; |
| 391 | if (chip->mask_ack) | 396 | if (chip->mask_ack) |
| 392 | chip->irq_mask_ack = compat_irq_mask_ack; | 397 | chip->irq_mask_ack = compat_irq_mask_ack; |
| 398 | if (chip->eoi) | ||
| 399 | chip->irq_eoi = compat_irq_eoi; | ||
| 393 | } | 400 | } |
| 394 | 401 | ||
| 395 | static inline void mask_ack_irq(struct irq_desc *desc) | 402 | static inline void mask_ack_irq(struct irq_desc *desc) |
| @@ -596,7 +603,7 @@ handle_fasteoi_irq(unsigned int irq, struct irq_desc *desc) | |||
| 596 | raw_spin_lock(&desc->lock); | 603 | raw_spin_lock(&desc->lock); |
| 597 | desc->status &= ~IRQ_INPROGRESS; | 604 | desc->status &= ~IRQ_INPROGRESS; |
| 598 | out: | 605 | out: |
| 599 | desc->irq_data.chip->eoi(irq); | 606 | desc->irq_data.chip->irq_eoi(&desc->irq_data); |
| 600 | 607 | ||
| 601 | raw_spin_unlock(&desc->lock); | 608 | raw_spin_unlock(&desc->lock); |
| 602 | } | 609 | } |
| @@ -698,8 +705,8 @@ handle_percpu_irq(unsigned int irq, struct irq_desc *desc) | |||
| 698 | if (!noirqdebug) | 705 | if (!noirqdebug) |
| 699 | note_interrupt(irq, desc, action_ret); | 706 | note_interrupt(irq, desc, action_ret); |
| 700 | 707 | ||
| 701 | if (desc->irq_data.chip->eoi) | 708 | if (desc->irq_data.chip->irq_eoi) |
| 702 | desc->irq_data.chip->eoi(irq); | 709 | desc->irq_data.chip->irq_eoi(&desc->irq_data); |
| 703 | } | 710 | } |
| 704 | 711 | ||
| 705 | void | 712 | void |
