Messages in this thread Patch in this message | | | From | Marc Zyngier <> | Subject | [PATCH 19/39] irqdomain: Implement irq_domain_clear_mapping() with irq_domain_set_mapping() | Date | Thu, 20 May 2021 17:37:31 +0100 |
| |
Now that we only deal with irq_data pointers, it is pretty obvious that irq_domain_clear_mapping() and irq_domain_set_mapping() are almost the exact same thing.
Implement one it terms of the other.
Signed-off-by: Marc Zyngier <maz@kernel.org> --- kernel/irq/irqdomain.c | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-)
diff --git a/kernel/irq/irqdomain.c b/kernel/irq/irqdomain.c index 7a4e38804487..ed2ffffc6fc6 100644 --- a/kernel/irq/irqdomain.c +++ b/kernel/irq/irqdomain.c @@ -498,21 +498,6 @@ static bool irq_domain_is_nomap(struct irq_domain *domain) (domain->flags & IRQ_DOMAIN_FLAG_NO_MAP); } -static void irq_domain_clear_mapping(struct irq_domain *domain, - irq_hw_number_t hwirq) -{ - if (irq_domain_is_nomap(domain)) - return; - - if (hwirq < domain->revmap_size) { - domain->revmap[hwirq] = NULL; - } else { - mutex_lock(&domain->revmap_tree_mutex); - radix_tree_delete(&domain->revmap_tree, hwirq); - mutex_unlock(&domain->revmap_tree_mutex); - } -} - static void irq_domain_set_mapping(struct irq_domain *domain, irq_hw_number_t hwirq, struct irq_data *irq_data) @@ -529,6 +514,12 @@ static void irq_domain_set_mapping(struct irq_domain *domain, } } +static void irq_domain_clear_mapping(struct irq_domain *domain, + irq_hw_number_t hwirq) +{ + irq_domain_set_mapping(domain, hwirq, NULL); +} + static void irq_domain_disassociate(struct irq_domain *domain, unsigned int irq) { struct irq_data *irq_data = irq_get_irq_data(irq); -- 2.30.2
| |