summaryrefslogtreecommitdiffstats
path: root/include/linux/irqdomain.h
diff options
context:
space:
mode:
authorMarc Zyngier <maz@kernel.org>2021-04-05 11:46:53 +0100
committerMarc Zyngier <maz@kernel.org>2021-06-10 13:09:18 +0100
commit48b15a7921d60680babe59f64e127816585a585c (patch)
treef98cf345ef64188bfa4e05f235acbbdf49c56ecc /include/linux/irqdomain.h
parent426fa316148bccabf48f9c91a13c387ee911eadc (diff)
downloadlinux-stable-48b15a7921d60680babe59f64e127816585a585c.tar.gz
linux-stable-48b15a7921d60680babe59f64e127816585a585c.tar.bz2
linux-stable-48b15a7921d60680babe59f64e127816585a585c.zip
irqdomain: Cache irq_data instead of a virq number in the revmap
Caching a virq number in the revmap is pretty inefficient, as it means we will need to convert it back to either an irq_data or irq_desc to do anything with it. It is also a bit odd, as the radix tree does cache irq_data pointers. Change the revmap type to be an irq_data pointer instead of an unsigned int, and preserve the current API for now. Signed-off-by: Marc Zyngier <maz@kernel.org>
Diffstat (limited to 'include/linux/irqdomain.h')
-rw-r--r--include/linux/irqdomain.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/include/linux/irqdomain.h b/include/linux/irqdomain.h
index 0916cf9c6e20..340cc04611dd 100644
--- a/include/linux/irqdomain.h
+++ b/include/linux/irqdomain.h
@@ -151,7 +151,7 @@ struct irq_domain_chip_generic;
* Revmap data, used internally by irq_domain
* @revmap_size: Size of the linear map table @revmap[]
* @revmap_tree: Radix map tree for hwirqs that don't fit in the linear map
- * @revmap: Linear table of hwirq->virq reverse mappings
+ * @revmap: Linear table of irq_data pointers
*/
struct irq_domain {
struct list_head link;
@@ -174,7 +174,7 @@ struct irq_domain {
unsigned int revmap_size;
struct radix_tree_root revmap_tree;
struct mutex revmap_tree_mutex;
- unsigned int revmap[];
+ struct irq_data *revmap[];
};
/* Irq domain flags */