Messages in this thread Patch in this message | | | Date | Thu, 12 Aug 2021 15:13:03 -0000 | From | "irqchip-bot for Valentin Schneider" <> | Subject | [irqchip: irq/irqchip-next] genirq: Employ ack_irq() and eoi_irq() where relevant |
| |
The following commit has been merged into the irq/irqchip-next branch of irqchip:
Commit-ID: 1b7a900c4da182de2022bee7cbf347d84291dda3 Gitweb: https://git.kernel.org/pub/scm/linux/kernel/git/maz/arm-platforms/1b7a900c4da182de2022bee7cbf347d84291dda3 Author: Valentin Schneider <valentin.schneider@arm.com> AuthorDate: Tue, 29 Jun 2021 13:50:00 +01:00 Committer: Marc Zyngier <maz@kernel.org> CommitterDate: Thu, 12 Aug 2021 15:48:20 +01:00
genirq: Employ ack_irq() and eoi_irq() where relevant
This can easily be coccinelle'd to replace all existing chip->irq_{ack, eoi} callsites, however not all callsites benefit from this replacement: fasteoi flow handlers for instance only deal with an ->irq_eoi() callback. Instead, only patch callsites that can benefit from the added functionality.
Signed-off-by: Valentin Schneider <valentin.schneider@arm.com> Signed-off-by: Marc Zyngier <maz@kernel.org> Link: https://lore.kernel.org/r/20210629125010.458872-4-valentin.schneider@arm.com --- kernel/irq/chip.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-)
diff --git a/kernel/irq/chip.c b/kernel/irq/chip.c index 793dbd8..4d3bde5 100644 --- a/kernel/irq/chip.c +++ b/kernel/irq/chip.c @@ -429,10 +429,12 @@ static inline void mask_ack_irq(struct irq_desc *desc) if (desc->irq_data.chip->irq_mask_ack) { desc->irq_data.chip->irq_mask_ack(&desc->irq_data); irq_state_set_masked(desc); + if (desc->irq_data.chip->flags & IRQCHIP_AUTOMASKS_FLOW) + irq_state_set_flow_masked(desc); } else { mask_irq(desc); if (desc->irq_data.chip->irq_ack) - desc->irq_data.chip->irq_ack(&desc->irq_data); + ack_irq(desc); } } @@ -463,7 +465,7 @@ void unmask_threaded_irq(struct irq_desc *desc) struct irq_chip *chip = desc->irq_data.chip; if (chip->flags & IRQCHIP_EOI_THREADED) - chip->irq_eoi(&desc->irq_data); + eoi_irq(desc); unmask_irq(desc); } @@ -680,7 +682,7 @@ EXPORT_SYMBOL_GPL(handle_level_irq); static void cond_unmask_eoi_irq(struct irq_desc *desc, struct irq_chip *chip) { if (!(desc->istate & IRQS_ONESHOT)) { - chip->irq_eoi(&desc->irq_data); + eoi_irq(desc); return; } /* @@ -691,10 +693,10 @@ static void cond_unmask_eoi_irq(struct irq_desc *desc, struct irq_chip *chip) */ if (!irqd_irq_disabled(&desc->irq_data) && irqd_irq_masked(&desc->irq_data) && !desc->threads_oneshot) { - chip->irq_eoi(&desc->irq_data); + eoi_irq(desc); unmask_irq(desc); } else if (!(chip->flags & IRQCHIP_EOI_THREADED)) { - chip->irq_eoi(&desc->irq_data); + eoi_irq(desc); } }
| |