From: Bartosz Golaszewski <brgl@bgdev.pl>
To: Linus Walleij <linus.walleij@linaro.org>,
Jonathan Cameron <jic23@kernel.org>,
Hartmut Knaack <knaack.h@gmx.de>,
Lars-Peter Clausen <lars@metafoo.de>,
Peter Meerwald-Stadler <pmeerw@pmeerw.net>,
Thomas Gleixner <tglx@linutronix.de>,
Jason Cooper <jason@lakedaemon.net>,
Marc Zyngier <maz@kernel.org>
Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-iio@vger.kernel.org,
Bartosz Golaszewski <bgolaszewski@baylibre.com>
Subject: [PATCH v2 5/6] irq/domain: provide irq_domain_dispose_mappings() helper
Date: Tue, 11 Feb 2020 14:12:39 +0100 [thread overview]
Message-ID: <20200211131240.15853-6-brgl@bgdev.pl> (raw)
In-Reply-To: <20200211131240.15853-1-brgl@bgdev.pl>
From: Bartosz Golaszewski <bgolaszewski@baylibre.com>
Unmapping all interrupts before removing an irq_domain is a common
use-case. Provide an appropriate helper that can also be used with
the remove() callback in irq_domain ops.
Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
---
include/linux/irqdomain.h | 2 ++
kernel/irq/irqdomain.c | 17 +++++++++++++++++
2 files changed, 19 insertions(+)
diff --git a/include/linux/irqdomain.h b/include/linux/irqdomain.h
index fbc25f464f62..8fd27614dafd 100644
--- a/include/linux/irqdomain.h
+++ b/include/linux/irqdomain.h
@@ -390,6 +390,7 @@ extern unsigned int irq_create_mapping(struct irq_domain *host,
irq_hw_number_t hwirq);
extern unsigned int irq_create_fwspec_mapping(struct irq_fwspec *fwspec);
extern void irq_dispose_mapping(unsigned int virq);
+extern void irq_domain_dispose_mappings(struct irq_domain *domain);
/**
* irq_linear_revmap() - Find a linux irq from a hw irq number.
@@ -594,6 +595,7 @@ irq_domain_hierarchical_is_msi_remap(struct irq_domain *domain)
#else /* CONFIG_IRQ_DOMAIN */
static inline void irq_dispose_mapping(unsigned int virq) { }
+static inline void irq_domain_dispose_mappings(struct irq_domain *domain) { }
static inline struct irq_domain *irq_find_matching_fwnode(
struct fwnode_handle *fwnode, enum irq_domain_bus_token bus_token)
{
diff --git a/kernel/irq/irqdomain.c b/kernel/irq/irqdomain.c
index b391d2e65bdd..d09de9f2411a 100644
--- a/kernel/irq/irqdomain.c
+++ b/kernel/irq/irqdomain.c
@@ -888,6 +888,23 @@ void irq_dispose_mapping(unsigned int virq)
}
EXPORT_SYMBOL_GPL(irq_dispose_mapping);
+/**
+ * irq_domain_dispose_mappings() - Unmap all interrupts
+ * @domain: domain for which to unmap all interrupts
+ */
+void irq_domain_dispose_mappings(struct irq_domain *domain)
+{
+ unsigned int virq;
+ int i;
+
+ for (i = 0; i < domain->hwirq_max; i++) {
+ virq = irq_find_mapping(domain, i);
+ if (virq)
+ irq_dispose_mapping(virq);
+ }
+}
+EXPORT_SYMBOL_GPL(irq_domain_dispose_mappings);
+
/**
* irq_find_mapping() - Find a linux irq from a hw irq number.
* @domain: domain owning this hardware interrupt
--
2.25.0
next prev parent reply other threads:[~2020-02-11 13:13 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-02-11 13:12 [PATCH v2 0/6] irq/irq_sim: try to improve the API Bartosz Golaszewski
2020-02-11 13:12 ` [PATCH v2 1/6] irq: make irq_domain_reset_irq_data() available even for non-V2 users Bartosz Golaszewski
2020-02-14 9:02 ` Thomas Gleixner
2020-02-14 9:31 ` Bartosz Golaszewski
2020-02-11 13:12 ` [PATCH v2 2/6] irq/irq_sim: simplify the API Bartosz Golaszewski
2020-02-11 13:12 ` [PATCH v2 3/6] irq/domain: add a new callback to domain ops Bartosz Golaszewski
2020-03-08 13:51 ` Marc Zyngier
2020-03-08 17:59 ` Bartosz Golaszewski
2020-03-12 8:15 ` Bartosz Golaszewski
2020-03-20 9:38 ` Bartosz Golaszewski
2020-02-11 13:12 ` [PATCH v2 4/6] irq/irq_sim: remove irq_domain_remove_sim() Bartosz Golaszewski
2020-02-11 13:12 ` Bartosz Golaszewski [this message]
2020-02-11 13:12 ` [PATCH v2 6/6] irqchip: keystone: use irq_domain_dispose_mappings() Bartosz Golaszewski
2020-03-03 7:57 ` [PATCH v2 0/6] irq/irq_sim: try to improve the API Bartosz Golaszewski
2020-04-13 17:07 ` Jonathan Cameron
2020-04-14 8:37 ` Bartosz Golaszewski
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200211131240.15853-6-brgl@bgdev.pl \
--to=brgl@bgdev.pl \
--cc=bgolaszewski@baylibre.com \
--cc=jason@lakedaemon.net \
--cc=jic23@kernel.org \
--cc=knaack.h@gmx.de \
--cc=lars@metafoo.de \
--cc=linus.walleij@linaro.org \
--cc=linux-gpio@vger.kernel.org \
--cc=linux-iio@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=maz@kernel.org \
--cc=pmeerw@pmeerw.net \
--cc=tglx@linutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.