Skip to contentSkip to conversation

irqdomain: Export irq_domain_free_irqs_common

PATCH In review Axel Lin 4 participants 6 messages Mar 17, 2016 – Mar 31, 2016

Subsystems (3)
lore
Share & tools
lore

Axel Lin

author
#0 lore raw

PATCH 1/2 irqdomain: Export irq_domain_free_irqs_common

Export irq_domain_free_irqs_common so it can be used by modules.

---
 kernel/irq/irqdomain.c | 1 +
 1 file changed, 1 insertion(+)
kernel/irq/irqdomain.c +1 -0
index 3a519a0..245a485 100644
@@ -1099,6 +1099,7 @@ void irq_domain_free_irqs_common(struct irq_domain *domain, unsigned int virq,
 	}
 	irq_domain_free_irqs_parent(domain, virq, nr_irqs);
 }
+EXPORT_SYMBOL_GPL(irq_domain_free_irqs_common);
 
 /**
  * irq_domain_free_irqs_top - Clear handler and handler data, clear irqdata and free parent
Signature · 1 line
2.1.4
author
#1 lore raw

PATCH 2/2 gpio: xgene-sb: Use irq_domain_free_irqs_common instead of open coded

Current code calls irq_domain_alloc_irqs_parent() in .alloc, so it should call irq_domain_free_irqs_parent() accordingly in .free. Fix it by switching to use irq_domain_free_irqs_common() instead.

---
 drivers/gpio/gpio-xgene-sb.c | 15 +--------------
 1 file changed, 1 insertion(+), 14 deletions(-)
drivers/gpio/gpio-xgene-sb.c +1 -14
index 31cbcb8..0332586 100644
@@ -216,23 +216,10 @@ static int xgene_gpio_sb_domain_alloc(struct irq_domain *domain,
 			&parent_fwspec);
 }
 
-static void xgene_gpio_sb_domain_free(struct irq_domain *domain,
-		unsigned int virq,
-		unsigned int nr_irqs)
-{
-	struct irq_data *d;
-	unsigned int i;
-
-	for (i = 0; i < nr_irqs; i++) {
-		d = irq_domain_get_irq_data(domain, virq + i);
-		irq_domain_reset_irq_data(d);
-	}
-}
-
 static const struct irq_domain_ops xgene_gpio_sb_domain_ops = {
 	.translate      = xgene_gpio_sb_domain_translate,
 	.alloc          = xgene_gpio_sb_domain_alloc,
-	.free           = xgene_gpio_sb_domain_free,
+	.free           = irq_domain_free_irqs_common,
 	.activate	= xgene_gpio_sb_domain_activate,
 	.deactivate	= xgene_gpio_sb_domain_deactivate,
 };
Signature · 1 line
2.1.4
Acked-by on v1 2/2
#2 lore raw

Re: [PATCH 2/2] gpio: xgene-sb: Use irq_domain_free_irqs_common instead of open coded

Quoted 29 lines · Axel Lin

Current code calls irq_domain_alloc_irqs_parent() in .alloc, so it should call irq_domain_free_irqs_parent() accordingly in .free. Fix it by switching to use irq_domain_free_irqs_common() instead.

---
 drivers/gpio/gpio-xgene-sb.c | 15 +--------------
 1 file changed, 1 insertion(+), 14 deletions(-)
drivers/gpio/gpio-xgene-sb.c +0 -11
index 31cbcb8..0332586 100644
@@ -216,23 +216,10 @@ static int xgene_gpio_sb_domain_alloc(struct irq_domain *domain,
 			&parent_fwspec);
 }
 
-static void xgene_gpio_sb_domain_free(struct irq_domain *domain,
-		unsigned int virq,
-		unsigned int nr_irqs)
-{
-	struct irq_data *d;
-	unsigned int i;
-
-	for (i = 0; i < nr_irqs; i++) {
-		d = irq_domain_get_irq_data(domain, virq + i);
-		irq_domain_reset_irq_data(d);
-	}

drivers/gpio/gpio-xgene-sb.c static int xgene_gpio_sb_domain_alloc(struct irq_domain *domain, · line 225

Quoted 10 lines
drivers/gpio/gpio-xgene-sb.c +1 -3
-}
-
 static const struct irq_domain_ops xgene_gpio_sb_domain_ops = {
 	.translate      = xgene_gpio_sb_domain_translate,
 	.alloc          = xgene_gpio_sb_domain_alloc,
-	.free           = xgene_gpio_sb_domain_free,
+	.free           = irq_domain_free_irqs_common,
 	.activate	= xgene_gpio_sb_domain_activate,
 	.deactivate	= xgene_gpio_sb_domain_deactivate,
 };

Ah, nice catch. For both patches:

Thanks,

	M.
Signature · 1 line
Jazz is not dead. It just smells funny...
#3 lore raw

Re: [PATCH 2/2] gpio: xgene-sb: Use irq_domain_free_irqs_common instead of open coded

In reply to Axel Lin
Quoted 5 lines · Axel Lin

Current code calls irq_domain_alloc_irqs_parent() in .alloc, so it should call irq_domain_free_irqs_parent() accordingly in .free. Fix it by switching to use irq_domain_free_irqs_common() instead.

Patch applied with Marc's ACK.

Yours,
Linus Walleij

Acked-by on v1 1/2
#4 lore raw
In reply to Axel Lin
Quoted 12 lines · Axel Lin

Export irq_domain_free_irqs_common so it can be used by modules.

---
 kernel/irq/irqdomain.c | 1 +
 1 file changed, 1 insertion(+)
kernel/irq/irqdomain.c +0 -0
index 3a519a0..245a485 100644

kernel/irq/irqdomain.c void irq_domain_free_irqs_common(struct irq_domain *domain, unsigned int virq, · line 1102

Quoted 4 lines
kernel/irq/irqdomain.c +1 -0
@@ -1099,6 +1099,7 @@ void irq_domain_free_irqs_common(struct irq_domain *domain, unsigned int virq,
 	}
 	irq_domain_free_irqs_parent(domain, virq, nr_irqs);
 }
+EXPORT_SYMBOL_GPL(irq_domain_free_irqs_common);