[PATCH 19/39] irqdomain: Implement irq_domain_clear_mapping() with irq_domain_set_mapping()

From: Marc Zyngier
Date: Thu May 20 2021 - 12:59:23 EST


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@xxxxxxxxxx>
---
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