* [PATCH v2 39/57] irqdomain: ppc: Switch irq_domain_add_nomap() to use fwnode
2025-03-19 9:28 [PATCH v2 00/57] irqdomain: Cleanups and Documentation Jiri Slaby (SUSE)
@ 2025-03-19 9:29 ` Jiri Slaby (SUSE)
2025-03-19 9:29 ` [PATCH v2 40/57] irqdomain: Drop irq_domain_add_*() functions Jiri Slaby (SUSE)
` (11 subsequent siblings)
12 siblings, 0 replies; 20+ messages in thread
From: Jiri Slaby (SUSE) @ 2025-03-19 9:29 UTC (permalink / raw)
To: tglx
Cc: maz, linux-kernel, Jiri Slaby (SUSE), Alex Shi, Yanteng Si,
Dongliang Mu, Madhavan Srinivasan, Michael Ellerman,
Nicholas Piggin, Christophe Leroy, Naveen N Rao, Geoff Levand,
linuxppc-dev, Jonathan Corbet, linux-doc
All irq_domain_add_*() functions are going away. PowerPC is the only
user of irq_domain_add_nomap() and there is no irq_domain_create_nomap()
complement.
Therefore, to align with the rest of kernel, rename
irq_domain_add_nomap() to irq_domain_create_nomap() and accept
fwnode_handle instead of device_node.
Signed-off-by: Jiri Slaby (SUSE) <jirislaby@kernel.org>
Cc: Alex Shi <alexs@kernel.org>
Cc: Yanteng Si <si.yanteng@linux.dev>
Cc: Dongliang Mu <dzm91@hust.edu.cn>
Cc: Madhavan Srinivasan <maddy@linux.ibm.com>
Cc: Michael Ellerman <mpe@ellerman.id.au>
Cc: Nicholas Piggin <npiggin@gmail.com>
Cc: Christophe Leroy <christophe.leroy@csgroup.eu>
Cc: Naveen N Rao <naveen@kernel.org>
Cc: Geoff Levand <geoff@infradead.org>
Cc: linuxppc-dev@lists.ozlabs.org
Cc: Jonathan Corbet <corbet@lwn.net>
Cc: linux-doc@vger.kernel.org
---
Documentation/core-api/irq/irq-domain.rst | 2 +-
Documentation/translations/zh_CN/core-api/irq/irq-domain.rst | 2 +-
arch/powerpc/platforms/powermac/smp.c | 2 +-
arch/powerpc/platforms/ps3/interrupt.c | 2 +-
include/linux/irqdomain.h | 4 ++--
5 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/Documentation/core-api/irq/irq-domain.rst b/Documentation/core-api/irq/irq-domain.rst
index f88a6ee67a35..44f4ba5480df 100644
--- a/Documentation/core-api/irq/irq-domain.rst
+++ b/Documentation/core-api/irq/irq-domain.rst
@@ -141,7 +141,7 @@ No Map
::
- irq_domain_add_nomap()
+ irq_domain_create_nomap()
The No Map mapping is to be used when the hwirq number is
programmable in the hardware. In this case it is best to program the
diff --git a/Documentation/translations/zh_CN/core-api/irq/irq-domain.rst b/Documentation/translations/zh_CN/core-api/irq/irq-domain.rst
index 9174fce12c1b..ecb23cfbc9fc 100644
--- a/Documentation/translations/zh_CN/core-api/irq/irq-domain.rst
+++ b/Documentation/translations/zh_CN/core-api/irq/irq-domain.rst
@@ -124,7 +124,7 @@ irq_domain_add_tree()和irq_domain_create_tree()在功能上是等价的,除
::
- irq_domain_add_nomap()
+ irq_domain_create_nomap()
当硬件中的hwirq号是可编程的时候,就可以采用无映射类型。 在这种情况下,最好将
Linux IRQ号编入硬件本身,这样就不需要映射了。 调用irq_create_direct_mapping()
diff --git a/arch/powerpc/platforms/powermac/smp.c b/arch/powerpc/platforms/powermac/smp.c
index 09e7fe24fac1..88e92af8acf9 100644
--- a/arch/powerpc/platforms/powermac/smp.c
+++ b/arch/powerpc/platforms/powermac/smp.c
@@ -190,7 +190,7 @@ static int __init psurge_secondary_ipi_init(void)
{
int rc = -ENOMEM;
- psurge_host = irq_domain_add_nomap(NULL, ~0, &psurge_host_ops, NULL);
+ psurge_host = irq_domain_create_nomap(NULL, ~0, &psurge_host_ops, NULL);
if (psurge_host)
psurge_secondary_virq = irq_create_direct_mapping(psurge_host);
diff --git a/arch/powerpc/platforms/ps3/interrupt.c b/arch/powerpc/platforms/ps3/interrupt.c
index 95e96bd61a20..a4ad4b49eef7 100644
--- a/arch/powerpc/platforms/ps3/interrupt.c
+++ b/arch/powerpc/platforms/ps3/interrupt.c
@@ -743,7 +743,7 @@ void __init ps3_init_IRQ(void)
unsigned cpu;
struct irq_domain *host;
- host = irq_domain_add_nomap(NULL, PS3_PLUG_MAX + 1, &ps3_host_ops, NULL);
+ host = irq_domain_create_nomap(NULL, PS3_PLUG_MAX + 1, &ps3_host_ops, NULL);
irq_set_default_domain(host);
for_each_possible_cpu(cpu) {
diff --git a/include/linux/irqdomain.h b/include/linux/irqdomain.h
index 1480951a690b..984d0188f9ec 100644
--- a/include/linux/irqdomain.h
+++ b/include/linux/irqdomain.h
@@ -431,13 +431,13 @@ static inline struct irq_domain *irq_domain_add_linear(struct device_node *of_no
}
#ifdef CONFIG_IRQ_DOMAIN_NOMAP
-static inline struct irq_domain *irq_domain_add_nomap(struct device_node *of_node,
+static inline struct irq_domain *irq_domain_create_nomap(struct fwnode_handle *fwnode,
unsigned int max_irq,
const struct irq_domain_ops *ops,
void *host_data)
{
struct irq_domain_info info = {
- .fwnode = of_fwnode_handle(of_node),
+ .fwnode = fwnode,
.hwirq_max = max_irq,
.direct_max = max_irq,
.ops = ops,
--
2.49.0
^ permalink raw reply related [flat|nested] 20+ messages in thread* [PATCH v2 40/57] irqdomain: Drop irq_domain_add_*() functions
2025-03-19 9:28 [PATCH v2 00/57] irqdomain: Cleanups and Documentation Jiri Slaby (SUSE)
2025-03-19 9:29 ` [PATCH v2 39/57] irqdomain: ppc: Switch irq_domain_add_nomap() to use fwnode Jiri Slaby (SUSE)
@ 2025-03-19 9:29 ` Jiri Slaby (SUSE)
2025-03-19 9:29 ` [PATCH v2 49/57] irqdomain: Drop irq_linear_revmap() Jiri Slaby (SUSE)
` (10 subsequent siblings)
12 siblings, 0 replies; 20+ messages in thread
From: Jiri Slaby (SUSE) @ 2025-03-19 9:29 UTC (permalink / raw)
To: tglx
Cc: maz, linux-kernel, Jiri Slaby (SUSE), Alex Shi, Yanteng Si,
Dongliang Mu, Jonathan Corbet, linux-doc
irq_domain_add_*() functions are unused now, so drop them.
Note: The Chinese docs are touched but unfinished. I cannot parse those.
Signed-off-by: Jiri Slaby (SUSE) <jirislaby@kernel.org>
Cc: Alex Shi <alexs@kernel.org>
Cc: Yanteng Si <si.yanteng@linux.dev>
Cc: Dongliang Mu <dzm91@hust.edu.cn>
Cc: Jonathan Corbet <corbet@lwn.net>
Cc: linux-doc@vger.kernel.org
---
Documentation/core-api/irq/irq-domain.rst | 34 ++--------
.../zh_CN/core-api/irq/irq-domain.rst | 4 --
include/linux/irqdomain.h | 68 -------------------
kernel/irq/irqdomain.c | 27 --------
4 files changed, 7 insertions(+), 126 deletions(-)
diff --git a/Documentation/core-api/irq/irq-domain.rst b/Documentation/core-api/irq/irq-domain.rst
index 44f4ba5480df..e26ed303819d 100644
--- a/Documentation/core-api/irq/irq-domain.rst
+++ b/Documentation/core-api/irq/irq-domain.rst
@@ -92,7 +92,6 @@ Linear
::
- irq_domain_add_linear()
irq_domain_create_linear()
The linear reverse map maintains a fixed size table indexed by the
@@ -105,11 +104,6 @@ map are fixed time lookup for IRQ numbers, and irq_descs are only
allocated for in-use IRQs. The disadvantage is that the table must be
as large as the largest possible hwirq number.
-irq_domain_add_linear() and irq_domain_create_linear() are functionally
-equivalent, except for the first argument is different - the former
-accepts an Open Firmware specific 'struct device_node', while the latter
-accepts a more general abstraction 'struct fwnode_handle'.
-
The majority of drivers should use the linear map.
Tree
@@ -117,7 +111,6 @@ Tree
::
- irq_domain_add_tree()
irq_domain_create_tree()
The irq_domain maintains a radix tree map from hwirq numbers to Linux
@@ -129,11 +122,6 @@ since it doesn't need to allocate a table as large as the largest
hwirq number. The disadvantage is that hwirq to IRQ number lookup is
dependent on how many entries are in the table.
-irq_domain_add_tree() and irq_domain_create_tree() are functionally
-equivalent, except for the first argument is different - the former
-accepts an Open Firmware specific 'struct device_node', while the latter
-accepts a more general abstraction 'struct fwnode_handle'.
-
Very few drivers should need this mapping.
No Map
@@ -159,8 +147,6 @@ Legacy
::
- irq_domain_add_simple()
- irq_domain_add_legacy()
irq_domain_create_simple()
irq_domain_create_legacy()
@@ -189,13 +175,13 @@ supported. For example, ISA controllers would use the legacy map for
mapping Linux IRQs 0-15 so that existing ISA drivers get the correct IRQ
numbers.
-Most users of legacy mappings should use irq_domain_add_simple() or
-irq_domain_create_simple() which will use a legacy domain only if an IRQ range
-is supplied by the system and will otherwise use a linear domain mapping.
-The semantics of this call are such that if an IRQ range is specified then
-descriptors will be allocated on-the-fly for it, and if no range is
-specified it will fall through to irq_domain_add_linear() or
-irq_domain_create_linear() which means *no* irq descriptors will be allocated.
+Most users of legacy mappings should use irq_domain_create_simple()
+which will use a legacy domain only if an IRQ range is supplied by the
+system and will otherwise use a linear domain mapping. The semantics of
+this call are such that if an IRQ range is specified then descriptors
+will be allocated on-the-fly for it, and if no range is specified it
+will fall through to irq_domain_create_linear() which means *no* irq
+descriptors will be allocated.
A typical use case for simple domains is where an irqchip provider
is supporting both dynamic and static IRQ assignments.
@@ -206,12 +192,6 @@ that the driver using the simple domain call irq_create_mapping()
before any irq_find_mapping() since the latter will actually work
for the static IRQ assignment case.
-irq_domain_add_simple() and irq_domain_create_simple() as well as
-irq_domain_add_legacy() and irq_domain_create_legacy() are functionally
-equivalent, except for the first argument is different - the former
-accepts an Open Firmware specific 'struct device_node', while the latter
-accepts a more general abstraction 'struct fwnode_handle'.
-
Hierarchy IRQ domain
--------------------
diff --git a/Documentation/translations/zh_CN/core-api/irq/irq-domain.rst b/Documentation/translations/zh_CN/core-api/irq/irq-domain.rst
index ecb23cfbc9fc..913c3eda3f74 100644
--- a/Documentation/translations/zh_CN/core-api/irq/irq-domain.rst
+++ b/Documentation/translations/zh_CN/core-api/irq/irq-domain.rst
@@ -83,7 +83,6 @@ irq_domain映射的类型
::
- irq_domain_add_linear()
irq_domain_create_linear()
线性反向映射维护了一个固定大小的表,该表以hwirq号为索引。 当一个hwirq被映射
@@ -104,7 +103,6 @@ irq_domain_add_linear()和irq_domain_create_linear()在功能上是等价的,
::
- irq_domain_add_tree()
irq_domain_create_tree()
irq_domain维护着从hwirq号到Linux IRQ的radix的树状映射。 当一个hwirq被映射时,
@@ -138,8 +136,6 @@ Linux IRQ号编入硬件本身,这样就不需要映射了。 调用irq_create
::
- irq_domain_add_simple()
- irq_domain_add_legacy()
irq_domain_create_simple()
irq_domain_create_legacy()
diff --git a/include/linux/irqdomain.h b/include/linux/irqdomain.h
index 984d0188f9ec..bd02550df6e6 100644
--- a/include/linux/irqdomain.h
+++ b/include/linux/irqdomain.h
@@ -338,12 +338,6 @@ struct irq_domain *irq_domain_create_simple(struct fwnode_handle *fwnode,
unsigned int first_irq,
const struct irq_domain_ops *ops,
void *host_data);
-struct irq_domain *irq_domain_add_legacy(struct device_node *of_node,
- unsigned int size,
- unsigned int first_irq,
- irq_hw_number_t first_hwirq,
- const struct irq_domain_ops *ops,
- void *host_data);
struct irq_domain *irq_domain_create_legacy(struct fwnode_handle *fwnode,
unsigned int size,
unsigned int first_irq,
@@ -396,40 +390,6 @@ static inline struct irq_domain *irq_find_host(struct device_node *node)
return d;
}
-static inline struct irq_domain *irq_domain_add_simple(struct device_node *of_node,
- unsigned int size,
- unsigned int first_irq,
- const struct irq_domain_ops *ops,
- void *host_data)
-{
- return irq_domain_create_simple(of_fwnode_handle(of_node), size, first_irq, ops, host_data);
-}
-
-/**
- * irq_domain_add_linear() - Allocate and register a linear revmap irq_domain.
- * @of_node: pointer to interrupt controller's device tree node.
- * @size: Number of interrupts in the domain.
- * @ops: map/unmap domain callbacks
- * @host_data: Controller private data pointer
- */
-static inline struct irq_domain *irq_domain_add_linear(struct device_node *of_node,
- unsigned int size,
- const struct irq_domain_ops *ops,
- void *host_data)
-{
- struct irq_domain_info info = {
- .fwnode = of_fwnode_handle(of_node),
- .size = size,
- .hwirq_max = size,
- .ops = ops,
- .host_data = host_data,
- };
- struct irq_domain *d;
-
- d = irq_domain_instantiate(&info);
- return IS_ERR(d) ? NULL : d;
-}
-
#ifdef CONFIG_IRQ_DOMAIN_NOMAP
static inline struct irq_domain *irq_domain_create_nomap(struct fwnode_handle *fwnode,
unsigned int max_irq,
@@ -452,22 +412,6 @@ static inline struct irq_domain *irq_domain_create_nomap(struct fwnode_handle *f
unsigned int irq_create_direct_mapping(struct irq_domain *domain);
#endif
-static inline struct irq_domain *irq_domain_add_tree(struct device_node *of_node,
- const struct irq_domain_ops *ops,
- void *host_data)
-{
- struct irq_domain_info info = {
- .fwnode = of_fwnode_handle(of_node),
- .hwirq_max = ~0U,
- .ops = ops,
- .host_data = host_data,
- };
- struct irq_domain *d;
-
- d = irq_domain_instantiate(&info);
- return IS_ERR(d) ? NULL : d;
-}
-
static inline struct irq_domain *irq_domain_create_linear(struct fwnode_handle *fwnode,
unsigned int size,
const struct irq_domain_ops *ops,
@@ -631,18 +575,6 @@ static inline struct irq_domain *irq_domain_create_hierarchy(struct irq_domain *
return IS_ERR(d) ? NULL : d;
}
-static inline struct irq_domain *irq_domain_add_hierarchy(struct irq_domain *parent,
- unsigned int flags,
- unsigned int size,
- struct device_node *node,
- const struct irq_domain_ops *ops,
- void *host_data)
-{
- return irq_domain_create_hierarchy(parent, flags, size,
- of_fwnode_handle(node),
- ops, host_data);
-}
-
int __irq_domain_alloc_irqs(struct irq_domain *domain, int irq_base,
unsigned int nr_irqs, int node, void *arg,
bool realloc,
diff --git a/kernel/irq/irqdomain.c b/kernel/irq/irqdomain.c
index b5e111776285..5bb3d2bbe229 100644
--- a/kernel/irq/irqdomain.c
+++ b/kernel/irq/irqdomain.c
@@ -480,33 +480,6 @@ struct irq_domain *irq_domain_create_simple(struct fwnode_handle *fwnode,
}
EXPORT_SYMBOL_GPL(irq_domain_create_simple);
-/**
- * irq_domain_add_legacy() - Allocate and register a legacy revmap irq_domain.
- * @of_node: pointer to interrupt controller's device tree node.
- * @size: total number of irqs in legacy mapping
- * @first_irq: first number of irq block assigned to the domain
- * @first_hwirq: first hwirq number to use for the translation. Should normally
- * be '0', but a positive integer can be used if the effective
- * hwirqs numbering does not begin at zero.
- * @ops: map/unmap domain callbacks
- * @host_data: Controller private data pointer
- *
- * Note: the map() callback will be called before this function returns
- * for all legacy interrupts except 0 (which is always the invalid irq for
- * a legacy controller).
- */
-struct irq_domain *irq_domain_add_legacy(struct device_node *of_node,
- unsigned int size,
- unsigned int first_irq,
- irq_hw_number_t first_hwirq,
- const struct irq_domain_ops *ops,
- void *host_data)
-{
- return irq_domain_create_legacy(of_fwnode_handle(of_node), size,
- first_irq, first_hwirq, ops, host_data);
-}
-EXPORT_SYMBOL_GPL(irq_domain_add_legacy);
-
struct irq_domain *irq_domain_create_legacy(struct fwnode_handle *fwnode,
unsigned int size,
unsigned int first_irq,
--
2.49.0
^ permalink raw reply related [flat|nested] 20+ messages in thread* [PATCH v2 49/57] irqdomain: Drop irq_linear_revmap()
2025-03-19 9:28 [PATCH v2 00/57] irqdomain: Cleanups and Documentation Jiri Slaby (SUSE)
2025-03-19 9:29 ` [PATCH v2 39/57] irqdomain: ppc: Switch irq_domain_add_nomap() to use fwnode Jiri Slaby (SUSE)
2025-03-19 9:29 ` [PATCH v2 40/57] irqdomain: Drop irq_domain_add_*() functions Jiri Slaby (SUSE)
@ 2025-03-19 9:29 ` Jiri Slaby (SUSE)
2025-03-19 9:29 ` [PATCH v2 52/57] irqdomain.h: Improve kernel-docs of functions Jiri Slaby (SUSE)
` (9 subsequent siblings)
12 siblings, 0 replies; 20+ messages in thread
From: Jiri Slaby (SUSE) @ 2025-03-19 9:29 UTC (permalink / raw)
To: tglx
Cc: maz, linux-kernel, Jiri Slaby (SUSE), Alex Shi, Yanteng Si,
Dongliang Mu, Jonathan Corbet, linux-doc
irq_linear_revmap() is deprecated and unused now. So remove it.
Signed-off-by: Jiri Slaby (SUSE) <jirislaby@kernel.org>
Cc: Alex Shi <alexs@kernel.org>
Cc: Yanteng Si <si.yanteng@linux.dev>
Cc: Dongliang Mu <dzm91@hust.edu.cn>
Cc: Jonathan Corbet <corbet@lwn.net>
Cc: linux-doc@vger.kernel.org
---
Documentation/core-api/irq/irq-domain.rst | 2 --
.../translations/zh_CN/core-api/irq/irq-domain.rst | 2 --
include/linux/irqdomain.h | 6 ------
3 files changed, 10 deletions(-)
diff --git a/Documentation/core-api/irq/irq-domain.rst b/Documentation/core-api/irq/irq-domain.rst
index e26ed303819d..775dd43b3340 100644
--- a/Documentation/core-api/irq/irq-domain.rst
+++ b/Documentation/core-api/irq/irq-domain.rst
@@ -63,8 +63,6 @@ variety of methods:
mapping.
- irq_find_mapping() returns a Linux IRQ number for a given domain and
hwirq number, and 0 if there was no mapping
-- irq_linear_revmap() is now identical to irq_find_mapping(), and is
- deprecated
- generic_handle_domain_irq() handles an interrupt described by a
domain and a hwirq number
diff --git a/Documentation/translations/zh_CN/core-api/irq/irq-domain.rst b/Documentation/translations/zh_CN/core-api/irq/irq-domain.rst
index 913c3eda3f74..4a2d3b27aa4d 100644
--- a/Documentation/translations/zh_CN/core-api/irq/irq-domain.rst
+++ b/Documentation/translations/zh_CN/core-api/irq/irq-domain.rst
@@ -60,8 +60,6 @@ irq_domain和一个hwirq号作为参数。 如果hwirq的映射还不存在,
- irq_find_mapping()返回给定域和hwirq的Linux IRQ号,如果没有映射则返回0。
-- irq_linear_revmap()现与irq_find_mapping()相同,已被废弃。
-
- generic_handle_domain_irq()处理一个由域和hwirq号描述的中断。
请注意,irq域的查找必须发生在与RCU读临界区兼容的上下文中。
diff --git a/include/linux/irqdomain.h b/include/linux/irqdomain.h
index bd02550df6e6..d5c9e32ff0a2 100644
--- a/include/linux/irqdomain.h
+++ b/include/linux/irqdomain.h
@@ -492,12 +492,6 @@ static inline unsigned int irq_find_mapping(struct irq_domain *domain,
return 0;
}
-static inline unsigned int irq_linear_revmap(struct irq_domain *domain,
- irq_hw_number_t hwirq)
-{
- return irq_find_mapping(domain, hwirq);
-}
-
extern const struct irq_domain_ops irq_domain_simple_ops;
/* stock xlate functions */
--
2.49.0
^ permalink raw reply related [flat|nested] 20+ messages in thread* [PATCH v2 52/57] irqdomain.h: Improve kernel-docs of functions
2025-03-19 9:28 [PATCH v2 00/57] irqdomain: Cleanups and Documentation Jiri Slaby (SUSE)
` (2 preceding siblings ...)
2025-03-19 9:29 ` [PATCH v2 49/57] irqdomain: Drop irq_linear_revmap() Jiri Slaby (SUSE)
@ 2025-03-19 9:29 ` Jiri Slaby (SUSE)
2025-03-19 9:29 ` [PATCH v2 53/57] docs: irq/concepts: Add commas and reflow Jiri Slaby (SUSE)
` (8 subsequent siblings)
12 siblings, 0 replies; 20+ messages in thread
From: Jiri Slaby (SUSE) @ 2025-03-19 9:29 UTC (permalink / raw)
To: tglx
Cc: maz, linux-kernel, Jiri Slaby (SUSE), Jonathan Corbet, linux-doc,
Randy Dunlap
Many of irqdomain.h's functions are referenced in Documentation/ but are
not properly documented. Therefore, document these.
And use "Returns:" tag consistently, so that it is properly generated to
the resulting docs.
Signed-off-by: Jiri Slaby (SUSE) <jirislaby@kernel.org>
Cc: Jonathan Corbet <corbet@lwn.net>
Cc: linux-doc@vger.kernel.org
Cc: Randy Dunlap <rdunlap@infradead.org>
---
[v2] no () for functions names in the comments' headers
---
include/linux/irqdomain.h | 42 ++++++++++++++++++++++++++++++++++++++-
1 file changed, 41 insertions(+), 1 deletion(-)
diff --git a/include/linux/irqdomain.h b/include/linux/irqdomain.h
index 472f6bb91e9a..3e7103645c63 100644
--- a/include/linux/irqdomain.h
+++ b/include/linux/irqdomain.h
@@ -411,6 +411,15 @@ static inline struct irq_domain *irq_domain_create_nomap(struct fwnode_handle *f
unsigned int irq_create_direct_mapping(struct irq_domain *domain);
#endif
+/**
+ * irq_domain_create_linear - Allocate and register a linear revmap irq_domain.
+ * @fwnode: pointer to interrupt controller's FW node.
+ * @size: Number of interrupts in the domain.
+ * @ops: map/unmap domain callbacks
+ * @host_data: Controller private data pointer
+ *
+ * Returns: Newly created irq_domain
+ */
static inline struct irq_domain *irq_domain_create_linear(struct fwnode_handle *fwnode,
unsigned int size,
const struct irq_domain_ops *ops,
@@ -457,6 +466,18 @@ unsigned int irq_create_mapping_affinity(struct irq_domain *domain,
unsigned int irq_create_fwspec_mapping(struct irq_fwspec *fwspec);
void irq_dispose_mapping(unsigned int virq);
+/**
+ * irq_create_mapping - Map a hardware interrupt into linux irq space
+ * @domain: domain owning this hardware interrupt or NULL for default domain
+ * @hwirq: hardware irq number in that domain space
+ *
+ * Only one mapping per hardware interrupt is permitted.
+ *
+ * If the sense/trigger is to be specified, set_irq_type() should be called
+ * on the number returned from that call.
+ *
+ * Returns: Linux irq number or 0 on error
+ */
static inline unsigned int irq_create_mapping(struct irq_domain *domain,
irq_hw_number_t hwirq)
{
@@ -467,6 +488,13 @@ struct irq_desc *__irq_resolve_mapping(struct irq_domain *domain,
irq_hw_number_t hwirq,
unsigned int *irq);
+/**
+ * irq_resolve_mapping - Find a linux irq from a hw irq number.
+ * @domain: domain owning this hardware interrupt
+ * @hwirq: hardware irq number in that domain space
+ *
+ * Returns: Interrupt descriptor
+ */
static inline struct irq_desc *irq_resolve_mapping(struct irq_domain *domain,
irq_hw_number_t hwirq)
{
@@ -477,6 +505,8 @@ static inline struct irq_desc *irq_resolve_mapping(struct irq_domain *domain,
* irq_find_mapping() - Find a linux irq from a hw irq number.
* @domain: domain owning this hardware interrupt
* @hwirq: hardware irq number in that domain space
+ *
+ * Returns: Linux irq number or 0 if not found
*/
static inline unsigned int irq_find_mapping(struct irq_domain *domain,
irq_hw_number_t hwirq)
@@ -539,7 +569,8 @@ void irq_domain_reset_irq_data(struct irq_data *irq_data);
*
* If successful the parent is associated to the new domain and the
* domain flags are set.
- * Returns pointer to IRQ domain, or NULL on failure.
+ *
+ * Returns: A pointer to IRQ domain, or %NULL on failure.
*/
static inline struct irq_domain *irq_domain_create_hierarchy(struct irq_domain *parent,
unsigned int flags,
@@ -570,6 +601,15 @@ void irq_domain_free_irqs(unsigned int virq, unsigned int nr_irqs);
int irq_domain_activate_irq(struct irq_data *irq_data, bool early);
void irq_domain_deactivate_irq(struct irq_data *irq_data);
+/**
+ * irq_domain_alloc_irqs - Allocate IRQs from domain
+ * @domain: domain to allocate from
+ * @nr_irqs: number of IRQs to allocate
+ * @node: NUMA node id for memory allocation
+ * @arg: domain specific argument
+ *
+ * See __irq_domain_alloc_irqs()' documentation.
+ */
static inline int irq_domain_alloc_irqs(struct irq_domain *domain,
unsigned int nr_irqs, int node, void *arg)
{
--
2.49.0
^ permalink raw reply related [flat|nested] 20+ messages in thread* [PATCH v2 53/57] docs: irq/concepts: Add commas and reflow
2025-03-19 9:28 [PATCH v2 00/57] irqdomain: Cleanups and Documentation Jiri Slaby (SUSE)
` (3 preceding siblings ...)
2025-03-19 9:29 ` [PATCH v2 52/57] irqdomain.h: Improve kernel-docs of functions Jiri Slaby (SUSE)
@ 2025-03-19 9:29 ` Jiri Slaby (SUSE)
2025-03-19 9:29 ` [PATCH v2 54/57] docs: irq/concepts: Minor improvements Jiri Slaby (SUSE)
` (7 subsequent siblings)
12 siblings, 0 replies; 20+ messages in thread
From: Jiri Slaby (SUSE) @ 2025-03-19 9:29 UTC (permalink / raw)
To: tglx
Cc: maz, linux-kernel, Jiri Slaby (SUSE), Jonathan Corbet, linux-doc,
Randy Dunlap
For easier reading, it is always desired to add commas at some places in
text. Like before adverbs or after fronted sentences.
Signed-off-by: Jiri Slaby (SUSE) <jirislaby@kernel.org>
Cc: Jonathan Corbet <corbet@lwn.net>
Cc: linux-doc@vger.kernel.org
Cc: Randy Dunlap <rdunlap@infradead.org>
---
Documentation/core-api/irq/concepts.rst | 19 +++++++++----------
1 file changed, 9 insertions(+), 10 deletions(-)
diff --git a/Documentation/core-api/irq/concepts.rst b/Documentation/core-api/irq/concepts.rst
index 4273806a606b..f166006a81f6 100644
--- a/Documentation/core-api/irq/concepts.rst
+++ b/Documentation/core-api/irq/concepts.rst
@@ -2,23 +2,22 @@
What is an IRQ?
===============
-An IRQ is an interrupt request from a device.
-Currently they can come in over a pin, or over a packet.
-Several devices may be connected to the same pin thus
-sharing an IRQ.
+An IRQ is an interrupt request from a device. Currently, they can come
+in over a pin, or over a packet. Several devices may be connected to
+the same pin thus sharing an IRQ.
An IRQ number is a kernel identifier used to talk about a hardware
-interrupt source. Typically this is an index into the global irq_desc
-array, but except for what linux/interrupt.h implements the details
+interrupt source. Typically, this is an index into the global irq_desc
+array, but except for what linux/interrupt.h implements, the details
are architecture specific.
An IRQ number is an enumeration of the possible interrupt sources on a
-machine. Typically what is enumerated is the number of input pins on
-all of the interrupt controller in the system. In the case of ISA
+machine. Typically, what is enumerated is the number of input pins on
+all of the interrupt controllers in the system. In the case of ISA,
what is enumerated are the 16 input pins on the two i8259 interrupt
controllers.
Architectures can assign additional meaning to the IRQ numbers, and
-are encouraged to in the case where there is any manual configuration
-of the hardware involved. The ISA IRQs are a classic example of
+are encouraged to in the case where there is any manual configuration
+of the hardware involved. The ISA IRQs are a classic example of
assigning this kind of additional meaning.
--
2.49.0
^ permalink raw reply related [flat|nested] 20+ messages in thread* [PATCH v2 54/57] docs: irq/concepts: Minor improvements
2025-03-19 9:28 [PATCH v2 00/57] irqdomain: Cleanups and Documentation Jiri Slaby (SUSE)
` (4 preceding siblings ...)
2025-03-19 9:29 ` [PATCH v2 53/57] docs: irq/concepts: Add commas and reflow Jiri Slaby (SUSE)
@ 2025-03-19 9:29 ` Jiri Slaby (SUSE)
2025-03-19 9:29 ` [PATCH v2 55/57] docs: irq-domain.rst: Simple improvements Jiri Slaby (SUSE)
` (6 subsequent siblings)
12 siblings, 0 replies; 20+ messages in thread
From: Jiri Slaby (SUSE) @ 2025-03-19 9:29 UTC (permalink / raw)
To: tglx
Cc: maz, linux-kernel, Jiri Slaby (SUSE), Jonathan Corbet, linux-doc,
Randy Dunlap
Just note in the docs:
1) A PCI as an example for shared interrupts,
2) a sparse tree can be used for interrupts too, and
3) two i8259s have 8 pins.
Signed-off-by: Jiri Slaby (SUSE) <jirislaby@kernel.org>
Cc: Jonathan Corbet <corbet@lwn.net>
Cc: linux-doc@vger.kernel.org
Cc: Randy Dunlap <rdunlap@infradead.org>
---
Documentation/core-api/irq/concepts.rst | 12 +++++++-----
1 file changed, 7 insertions(+), 5 deletions(-)
diff --git a/Documentation/core-api/irq/concepts.rst b/Documentation/core-api/irq/concepts.rst
index f166006a81f6..7c4564f3cbdf 100644
--- a/Documentation/core-api/irq/concepts.rst
+++ b/Documentation/core-api/irq/concepts.rst
@@ -4,18 +4,20 @@ What is an IRQ?
An IRQ is an interrupt request from a device. Currently, they can come
in over a pin, or over a packet. Several devices may be connected to
-the same pin thus sharing an IRQ.
+the same pin thus sharing an IRQ. Such as on legacy PCI bus: All devices
+typically share 4 lanes/pins. Note that each device can request an
+interrupt on each of the lanes.
An IRQ number is a kernel identifier used to talk about a hardware
interrupt source. Typically, this is an index into the global irq_desc
-array, but except for what linux/interrupt.h implements, the details
-are architecture specific.
+array or sparse_irqs tree. But except for what linux/interrupt.h
+implements, the details are architecture specific.
An IRQ number is an enumeration of the possible interrupt sources on a
machine. Typically, what is enumerated is the number of input pins on
all of the interrupt controllers in the system. In the case of ISA,
-what is enumerated are the 16 input pins on the two i8259 interrupt
-controllers.
+what is enumerated are the 8 input pins on each of the two i8259
+interrupt controllers.
Architectures can assign additional meaning to the IRQ numbers, and
are encouraged to in the case where there is any manual configuration
--
2.49.0
^ permalink raw reply related [flat|nested] 20+ messages in thread* [PATCH v2 55/57] docs: irq-domain.rst: Simple improvements
2025-03-19 9:28 [PATCH v2 00/57] irqdomain: Cleanups and Documentation Jiri Slaby (SUSE)
` (5 preceding siblings ...)
2025-03-19 9:29 ` [PATCH v2 54/57] docs: irq/concepts: Minor improvements Jiri Slaby (SUSE)
@ 2025-03-19 9:29 ` Jiri Slaby (SUSE)
2025-03-19 17:54 ` Randy Dunlap
2025-03-19 9:29 ` [PATCH v2 56/57] docs: irqdomain: Update Jiri Slaby (SUSE)
` (5 subsequent siblings)
12 siblings, 1 reply; 20+ messages in thread
From: Jiri Slaby (SUSE) @ 2025-03-19 9:29 UTC (permalink / raw)
To: tglx
Cc: maz, linux-kernel, Jiri Slaby (SUSE), Jonathan Corbet, linux-doc,
Randy Dunlap
The improvements include:
* Capitals in headlines.
* Added commas: for easier reading, it is always desired to add commas
at some places in text. Like before adverbs or after fronted
sentences.
* 3rd person -> add 's' to verbs.
* End some sentences with period and start a new one. Avoid thus heavy
sentences.
Signed-off-by: Jiri Slaby (SUSE) <jirislaby@kernel.org>
Cc: Jonathan Corbet <corbet@lwn.net>
Cc: linux-doc@vger.kernel.org
Cc: Randy Dunlap <rdunlap@infradead.org>
---
Documentation/core-api/irq/irq-domain.rst | 22 +++++++++++-----------
1 file changed, 11 insertions(+), 11 deletions(-)
diff --git a/Documentation/core-api/irq/irq-domain.rst b/Documentation/core-api/irq/irq-domain.rst
index 775dd43b3340..c2f2728b1a35 100644
--- a/Documentation/core-api/irq/irq-domain.rst
+++ b/Documentation/core-api/irq/irq-domain.rst
@@ -1,19 +1,19 @@
===============================================
-The irq_domain interrupt number mapping library
+The irq_domain Interrupt Number Mapping Library
===============================================
The current design of the Linux kernel uses a single large number
space where each separate IRQ source is assigned a different number.
This is simple when there is only one interrupt controller, but in
-systems with multiple interrupt controllers the kernel must ensure
+systems with multiple interrupt controllers, the kernel must ensure
that each one gets assigned non-overlapping allocations of Linux
IRQ numbers.
The number of interrupt controllers registered as unique irqchips
-show a rising tendency: for example subdrivers of different kinds
+shows a rising tendency. For example, subdrivers of different kinds
such as GPIO controllers avoid reimplementing identical callback
mechanisms as the IRQ core system by modelling their interrupt
-handlers as irqchips, i.e. in effect cascading interrupt controllers.
+handlers as irqchips. I.e. in effect cascading interrupt controllers.
Here the interrupt number loose all kind of correspondence to
hardware interrupt numbers: whereas in the past, IRQ numbers could
@@ -21,15 +21,15 @@ be chosen so they matched the hardware IRQ line into the root
interrupt controller (i.e. the component actually fireing the
interrupt line to the CPU) nowadays this number is just a number.
-For this reason we need a mechanism to separate controller-local
-interrupt numbers, called hardware irq's, from Linux IRQ numbers.
+For this reason, we need a mechanism to separate controller-local
+interrupt numbers, called hardware IRQs, from Linux IRQ numbers.
The irq_alloc_desc*() and irq_free_desc*() APIs provide allocation of
irq numbers, but they don't provide any support for reverse mapping of
the controller-local IRQ (hwirq) number into the Linux IRQ number
space.
-The irq_domain library adds mapping between hwirq and IRQ numbers on
+The irq_domain library adds a mapping between hwirq and IRQ numbers on
top of the irq_alloc_desc*() API. An irq_domain to manage mapping is
preferred over interrupt controller drivers open coding their own
reverse mapping scheme.
@@ -38,7 +38,7 @@ irq_domain also implements translation from an abstract irq_fwspec
structure to hwirq numbers (Device Tree and ACPI GSI so far), and can
be easily extended to support other IRQ topology data sources.
-irq_domain usage
+irq_domain Usage
================
An interrupt controller driver creates and registers an irq_domain by
@@ -77,7 +77,7 @@ If the driver has the Linux IRQ number or the irq_data pointer, and
needs to know the associated hwirq number (such as in the irq_chip
callbacks) then it can be directly obtained from irq_data->hwirq.
-Types of irq_domain mappings
+Types of irq_domain Mappings
============================
There are several mechanisms available for reverse mapping from hwirq
@@ -102,7 +102,7 @@ map are fixed time lookup for IRQ numbers, and irq_descs are only
allocated for in-use IRQs. The disadvantage is that the table must be
as large as the largest possible hwirq number.
-The majority of drivers should use the linear map.
+The majority of drivers should use the Linear map.
Tree
----
@@ -190,7 +190,7 @@ that the driver using the simple domain call irq_create_mapping()
before any irq_find_mapping() since the latter will actually work
for the static IRQ assignment case.
-Hierarchy IRQ domain
+Hierarchy IRQ Domain
--------------------
On some architectures, there may be multiple interrupt controllers
--
2.49.0
^ permalink raw reply related [flat|nested] 20+ messages in thread* Re: [PATCH v2 55/57] docs: irq-domain.rst: Simple improvements
2025-03-19 9:29 ` [PATCH v2 55/57] docs: irq-domain.rst: Simple improvements Jiri Slaby (SUSE)
@ 2025-03-19 17:54 ` Randy Dunlap
2025-03-20 6:26 ` Jiri Slaby
0 siblings, 1 reply; 20+ messages in thread
From: Randy Dunlap @ 2025-03-19 17:54 UTC (permalink / raw)
To: Jiri Slaby (SUSE), tglx; +Cc: maz, linux-kernel, Jonathan Corbet, linux-doc
Hi,
On 3/19/25 2:29 AM, Jiri Slaby (SUSE) wrote:
> The improvements include:
> * Capitals in headlines.
> * Added commas: for easier reading, it is always desired to add commas
> at some places in text. Like before adverbs or after fronted
> sentences.
> * 3rd person -> add 's' to verbs.
> * End some sentences with period and start a new one. Avoid thus heavy
> sentences.
>
> Signed-off-by: Jiri Slaby (SUSE) <jirislaby@kernel.org>
> Cc: Jonathan Corbet <corbet@lwn.net>
> Cc: linux-doc@vger.kernel.org
> Cc: Randy Dunlap <rdunlap@infradead.org>
> ---
> Documentation/core-api/irq/irq-domain.rst | 22 +++++++++++-----------
> 1 file changed, 11 insertions(+), 11 deletions(-)
>
> diff --git a/Documentation/core-api/irq/irq-domain.rst b/Documentation/core-api/irq/irq-domain.rst
> index 775dd43b3340..c2f2728b1a35 100644
> --- a/Documentation/core-api/irq/irq-domain.rst
> +++ b/Documentation/core-api/irq/irq-domain.rst
> @@ -1,19 +1,19 @@
> ===============================================
> -The irq_domain interrupt number mapping library
> +The irq_domain Interrupt Number Mapping Library
> ===============================================
>
> The current design of the Linux kernel uses a single large number
> space where each separate IRQ source is assigned a different number.
> This is simple when there is only one interrupt controller, but in
> -systems with multiple interrupt controllers the kernel must ensure
> +systems with multiple interrupt controllers, the kernel must ensure
> that each one gets assigned non-overlapping allocations of Linux
> IRQ numbers.
>
(I'm OK with all of the changes here except this one:)
> The number of interrupt controllers registered as unique irqchips> -show a rising tendency: for example subdrivers of different kinds
> +shows a rising tendency. For example, subdrivers of different kinds
> such as GPIO controllers avoid reimplementing identical callback
> mechanisms as the IRQ core system by modelling their interrupt
> -handlers as irqchips, i.e. in effect cascading interrupt controllers.
> +handlers as irqchips. I.e. in effect cascading interrupt controllers.
I would just add a comma after "i.e.". In the new + line, the "I.e." part
is not a sentence.
>
> Here the interrupt number loose all kind of correspondence to
> hardware interrupt numbers: whereas in the past, IRQ numbers could
> @@ -21,15 +21,15 @@ be chosen so they matched the hardware IRQ line into the root
> interrupt controller (i.e. the component actually fireing the
> interrupt line to the CPU) nowadays this number is just a number.
>
> -For this reason we need a mechanism to separate controller-local
> -interrupt numbers, called hardware irq's, from Linux IRQ numbers.
> +For this reason, we need a mechanism to separate controller-local
> +interrupt numbers, called hardware IRQs, from Linux IRQ numbers.
>
> The irq_alloc_desc*() and irq_free_desc*() APIs provide allocation of
> irq numbers, but they don't provide any support for reverse mapping of
> the controller-local IRQ (hwirq) number into the Linux IRQ number
> space.
>
> -The irq_domain library adds mapping between hwirq and IRQ numbers on
> +The irq_domain library adds a mapping between hwirq and IRQ numbers on
> top of the irq_alloc_desc*() API. An irq_domain to manage mapping is
> preferred over interrupt controller drivers open coding their own
> reverse mapping scheme.
> @@ -38,7 +38,7 @@ irq_domain also implements translation from an abstract irq_fwspec
> structure to hwirq numbers (Device Tree and ACPI GSI so far), and can
> be easily extended to support other IRQ topology data sources.
>
> -irq_domain usage
> +irq_domain Usage
> ================
>
> An interrupt controller driver creates and registers an irq_domain by
> @@ -77,7 +77,7 @@ If the driver has the Linux IRQ number or the irq_data pointer, and
> needs to know the associated hwirq number (such as in the irq_chip
> callbacks) then it can be directly obtained from irq_data->hwirq.
>
> -Types of irq_domain mappings
> +Types of irq_domain Mappings
> ============================
>
> There are several mechanisms available for reverse mapping from hwirq
> @@ -102,7 +102,7 @@ map are fixed time lookup for IRQ numbers, and irq_descs are only
> allocated for in-use IRQs. The disadvantage is that the table must be
> as large as the largest possible hwirq number.
>
> -The majority of drivers should use the linear map.
> +The majority of drivers should use the Linear map.
>
> Tree
> ----
> @@ -190,7 +190,7 @@ that the driver using the simple domain call irq_create_mapping()
> before any irq_find_mapping() since the latter will actually work
> for the static IRQ assignment case.
>
> -Hierarchy IRQ domain
> +Hierarchy IRQ Domain
> --------------------
>
> On some architectures, there may be multiple interrupt controllers
thanks.
--
~Randy
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH v2 55/57] docs: irq-domain.rst: Simple improvements
2025-03-19 17:54 ` Randy Dunlap
@ 2025-03-20 6:26 ` Jiri Slaby
0 siblings, 0 replies; 20+ messages in thread
From: Jiri Slaby @ 2025-03-20 6:26 UTC (permalink / raw)
To: Randy Dunlap, tglx; +Cc: maz, linux-kernel, Jonathan Corbet, linux-doc
On 19. 03. 25, 18:54, Randy Dunlap wrote:
> Hi,
>
> On 3/19/25 2:29 AM, Jiri Slaby (SUSE) wrote:
>> The improvements include:
>> * Capitals in headlines.
>> * Added commas: for easier reading, it is always desired to add commas
>> at some places in text. Like before adverbs or after fronted
>> sentences.
>> * 3rd person -> add 's' to verbs.
>> * End some sentences with period and start a new one. Avoid thus heavy
>> sentences.
>>
>> Signed-off-by: Jiri Slaby (SUSE) <jirislaby@kernel.org>
>> Cc: Jonathan Corbet <corbet@lwn.net>
>> Cc: linux-doc@vger.kernel.org
>> Cc: Randy Dunlap <rdunlap@infradead.org>
>> ---
>> Documentation/core-api/irq/irq-domain.rst | 22 +++++++++++-----------
>> 1 file changed, 11 insertions(+), 11 deletions(-)
>>
>> diff --git a/Documentation/core-api/irq/irq-domain.rst b/Documentation/core-api/irq/irq-domain.rst
>> index 775dd43b3340..c2f2728b1a35 100644
>> --- a/Documentation/core-api/irq/irq-domain.rst
>> +++ b/Documentation/core-api/irq/irq-domain.rst
>> @@ -1,19 +1,19 @@
>> ===============================================
>> -The irq_domain interrupt number mapping library
>> +The irq_domain Interrupt Number Mapping Library
>> ===============================================
>>
>> The current design of the Linux kernel uses a single large number
>> space where each separate IRQ source is assigned a different number.
>> This is simple when there is only one interrupt controller, but in
>> -systems with multiple interrupt controllers the kernel must ensure
>> +systems with multiple interrupt controllers, the kernel must ensure
>> that each one gets assigned non-overlapping allocations of Linux
>> IRQ numbers.
>>
>
> (I'm OK with all of the changes here except this one:)
>
>> The number of interrupt controllers registered as unique irqchips> -show a rising tendency: for example subdrivers of different kinds
>> +shows a rising tendency. For example, subdrivers of different kinds
>> such as GPIO controllers avoid reimplementing identical callback
>> mechanisms as the IRQ core system by modelling their interrupt
>> -handlers as irqchips, i.e. in effect cascading interrupt controllers.
>> +handlers as irqchips. I.e. in effect cascading interrupt controllers.
>
> I would just add a comma after "i.e.". In the new + line, the "I.e." part
> is not a sentence.
Thanks. Of course, so now, I have:
The number of interrupt controllers registered as unique irqchips
shows a rising tendency. For example, subdrivers of different kinds
such as GPIO controllers avoid reimplementing identical callback
mechanisms as the IRQ core system by modelling their interrupt
handlers as irqchips, i.e., in effect cascading interrupt controllers.
--
js
suse labs
^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCH v2 56/57] docs: irqdomain: Update
2025-03-19 9:28 [PATCH v2 00/57] irqdomain: Cleanups and Documentation Jiri Slaby (SUSE)
` (6 preceding siblings ...)
2025-03-19 9:29 ` [PATCH v2 55/57] docs: irq-domain.rst: Simple improvements Jiri Slaby (SUSE)
@ 2025-03-19 9:29 ` Jiri Slaby (SUSE)
2025-03-19 18:01 ` Randy Dunlap
2025-03-19 9:29 ` [PATCH v2 57/57] irqdomain.c: Fix kernel-doc and add it to Documentation Jiri Slaby (SUSE)
` (4 subsequent siblings)
12 siblings, 1 reply; 20+ messages in thread
From: Jiri Slaby (SUSE) @ 2025-03-19 9:29 UTC (permalink / raw)
To: tglx
Cc: maz, linux-kernel, Jiri Slaby (SUSE), Jonathan Corbet, linux-doc,
Randy Dunlap
The irqdomain documentaion became obsolete over time. Update and extend
it a bit with respect to the current code and HW.
Most notably the doubled documentation of irq_domain (from .rst and .h)
was unified and let only in .rst. A reference link was added to .h.
Furthermore:
* Some 'struct' keywords added, so that the respective structs are
hyperlinked.
* :c:member: used where appropriate to mark a member of a struct.
* Some wording rephrased to improve readability/understanding.
Signed-off-by: Jiri Slaby (SUSE) <jirislaby@kernel.org>
Cc: Jonathan Corbet <corbet@lwn.net>
Cc: linux-doc@vger.kernel.org
Cc: Randy Dunlap <rdunlap@infradead.org>
---
Documentation/core-api/irq/irq-domain.rst | 122 +++++++++++++---------
include/linux/irqdomain.h | 26 +----
2 files changed, 76 insertions(+), 72 deletions(-)
diff --git a/Documentation/core-api/irq/irq-domain.rst b/Documentation/core-api/irq/irq-domain.rst
index c2f2728b1a35..7a418b3135de 100644
--- a/Documentation/core-api/irq/irq-domain.rst
+++ b/Documentation/core-api/irq/irq-domain.rst
@@ -3,8 +3,8 @@ The irq_domain Interrupt Number Mapping Library
===============================================
The current design of the Linux kernel uses a single large number
-space where each separate IRQ source is assigned a different number.
-This is simple when there is only one interrupt controller, but in
+space where each separate IRQ source is assigned a unique number.
+This is simple when there is only one interrupt controller. But in
systems with multiple interrupt controllers, the kernel must ensure
that each one gets assigned non-overlapping allocations of Linux
IRQ numbers.
@@ -15,45 +15,64 @@ such as GPIO controllers avoid reimplementing identical callback
mechanisms as the IRQ core system by modelling their interrupt
handlers as irqchips. I.e. in effect cascading interrupt controllers.
-Here the interrupt number loose all kind of correspondence to
-hardware interrupt numbers: whereas in the past, IRQ numbers could
-be chosen so they matched the hardware IRQ line into the root
-interrupt controller (i.e. the component actually fireing the
-interrupt line to the CPU) nowadays this number is just a number.
+So in the past, IRQ numbers could be chosen so that they match the
+hardware IRQ line into the root interrupt controller (i.e. the
+component actually firing the interrupt line to the CPU). Nowadays,
+this number is just a number and the number loose all kind of
+correspondence to hardware interrupt numbers.
For this reason, we need a mechanism to separate controller-local
interrupt numbers, called hardware IRQs, from Linux IRQ numbers.
The irq_alloc_desc*() and irq_free_desc*() APIs provide allocation of
-irq numbers, but they don't provide any support for reverse mapping of
+IRQ numbers, but they don't provide any support for reverse mapping of
the controller-local IRQ (hwirq) number into the Linux IRQ number
space.
The irq_domain library adds a mapping between hwirq and IRQ numbers on
-top of the irq_alloc_desc*() API. An irq_domain to manage mapping is
-preferred over interrupt controller drivers open coding their own
+top of the irq_alloc_desc*() API. An irq_domain to manage the mapping
+is preferred over interrupt controller drivers open coding their own
reverse mapping scheme.
-irq_domain also implements translation from an abstract irq_fwspec
-structure to hwirq numbers (Device Tree and ACPI GSI so far), and can
-be easily extended to support other IRQ topology data sources.
+irq_domain also implements a translation from an abstract struct
+irq_fwspec to hwirq numbers (Device Tree, non-DT firmware node, ACPI
+GSI, and software node so far), and can be easily extended to support
+other IRQ topology data sources. The implementation is performed
+without any extra platform support code.
irq_domain Usage
================
-An interrupt controller driver creates and registers an irq_domain by
-calling one of the irq_domain_add_*() or irq_domain_create_*() functions
-(each mapping method has a different allocator function, more on that later).
-The function will return a pointer to the irq_domain on success. The caller
-must provide the allocator function with an irq_domain_ops structure.
+struct irq_domain could be defined as an irq domain controller. That
+is, it handles the mapping between hardware and virtual interrupt
+numbers for a given interrupt domain. The domain structure is
+generally created by the PIC code for a given PIC instance (though a
+domain can cover more than one PIC if they have a flat number model).
+It is the domain callbacks that are responsible for setting the
+irq_chip on a given irq_desc after it has been mapped.
+
+The host code and data structures use a fwnode_handle pointer to
+identify the domain. In some cases, and in order to preserve source
+code compatibility, this fwnode pointer is "upgraded" to a DT
+device_node. For those firmware infrastructures that do not provide a
+unique identifier for an interrupt controller, the irq_domain code
+offers a fwnode allocator.
+
+An interrupt controller driver creates and registers a struct irq_domain
+by calling one of the irq_domain_create_*() functions (each mapping
+method has a different allocator function, more on that later). The
+function will return a pointer to the struct irq_domain on success. The
+caller must provide the allocator function with a struct irq_domain_ops
+pointer.
In most cases, the irq_domain will begin empty without any mappings
between hwirq and IRQ numbers. Mappings are added to the irq_domain
by calling irq_create_mapping() which accepts the irq_domain and a
-hwirq number as arguments. If a mapping for the hwirq doesn't already
-exist then it will allocate a new Linux irq_desc, associate it with
-the hwirq, and call the .map() callback so the driver can perform any
-required hardware setup.
+hwirq number as arguments. If a mapping for the hwirq doesn't already
+exist, irq_create_mapping() allocates a new Linux irq_desc, associates
+it with the hwirq, and calls the :c:member:`irq_domain_ops.map()`
+callback. In there, the driver can perform any required hardware
+setup.
Once a mapping has been established, it can be retrieved or used via a
variety of methods:
@@ -75,7 +94,8 @@ be allocated.
If the driver has the Linux IRQ number or the irq_data pointer, and
needs to know the associated hwirq number (such as in the irq_chip
-callbacks) then it can be directly obtained from irq_data->hwirq.
+callbacks) then it can be directly obtained from
+:c:member:`irq_data.hwirq`.
Types of irq_domain Mappings
============================
@@ -231,20 +251,40 @@ There are four major interfaces to use hierarchy irq_domain:
4) irq_domain_deactivate_irq(): deactivate interrupt controller hardware
to stop delivering the interrupt.
-Following changes are needed to support hierarchy irq_domain:
+The following is needed to support hierarchy irq_domain:
-1) a new field 'parent' is added to struct irq_domain; it's used to
+1) The :c:member:`parent` field in struct irq_domain is used to
maintain irq_domain hierarchy information.
-2) a new field 'parent_data' is added to struct irq_data; it's used to
- build hierarchy irq_data to match hierarchy irq_domains. The irq_data
- is used to store irq_domain pointer and hardware irq number.
-3) new callbacks are added to struct irq_domain_ops to support hierarchy
- irq_domain operations.
-
-With support of hierarchy irq_domain and hierarchy irq_data ready, an
-irq_domain structure is built for each interrupt controller, and an
+2) The :c:member:`parent_data` field in struct irq_data is used to
+ build hierarchy irq_data to match hierarchy irq_domains. The
+ irq_data is used to store irq_domain pointer and hardware irq
+ number.
+3) The :c:member:`alloc()`, :c:member:`free()`, and other callbacks in
+ struct irq_domain_ops to support hierarchy irq_domain operations.
+
+With the support of hierarchy irq_domain and hierarchy irq_data ready,
+an irq_domain structure is built for each interrupt controller, and an
irq_data structure is allocated for each irq_domain associated with an
-IRQ. Now we could go one step further to support stacked(hierarchy)
+IRQ.
+
+For an interrupt controller driver to support hierarchy irq_domain, it
+needs to:
+
+1) Implement irq_domain_ops.alloc() and irq_domain_ops.free()
+2) Optionally, implement irq_domain_ops.activate() and
+ irq_domain_ops.deactivate().
+3) Optionally, implement an irq_chip to manage the interrupt controller
+ hardware.
+4) There is no need to implement irq_domain_ops.map() and
+ irq_domain_ops.unmap(). They are unused with hierarchy irq_domain.
+
+Note the hierarchy irq_domain is in no way x86-specific, and is
+heavily used to support other architectures, such as ARM, ARM64 etc.
+
+Stacked irq_chip
+~~~~~~~~~~~~~~~~
+
+Now, we could go one step further to support stacked (hierarchy)
irq_chip. That is, an irq_chip is associated with each irq_data along
the hierarchy. A child irq_chip may implement a required action by
itself or by cooperating with its parent irq_chip.
@@ -254,20 +294,6 @@ with the hardware managed by itself and may ask for services from its
parent irq_chip when needed. So we could achieve a much cleaner
software architecture.
-For an interrupt controller driver to support hierarchy irq_domain, it
-needs to:
-
-1) Implement irq_domain_ops.alloc and irq_domain_ops.free
-2) Optionally implement irq_domain_ops.activate and
- irq_domain_ops.deactivate.
-3) Optionally implement an irq_chip to manage the interrupt controller
- hardware.
-4) No need to implement irq_domain_ops.map and irq_domain_ops.unmap,
- they are unused with hierarchy irq_domain.
-
-Hierarchy irq_domain is in no way x86 specific, and is heavily used to
-support other architectures, such as ARM, ARM64 etc.
-
Debugging
=========
diff --git a/include/linux/irqdomain.h b/include/linux/irqdomain.h
index 3e7103645c63..b8bb37cfcee2 100644
--- a/include/linux/irqdomain.h
+++ b/include/linux/irqdomain.h
@@ -1,30 +1,8 @@
/* SPDX-License-Identifier: GPL-2.0 */
/*
- * irq_domain - IRQ translation domains
+ * irq_domain - IRQ Translation Domains
*
- * Translation infrastructure between hw and linux irq numbers. This is
- * helpful for interrupt controllers to implement mapping between hardware
- * irq numbers and the Linux irq number space.
- *
- * irq_domains also have hooks for translating device tree or other
- * firmware interrupt representations into a hardware irq number that
- * can be mapped back to a Linux irq number without any extra platform
- * support code.
- *
- * Interrupt controller "domain" data structure. This could be defined as a
- * irq domain controller. That is, it handles the mapping between hardware
- * and virtual interrupt numbers for a given interrupt domain. The domain
- * structure is generally created by the PIC code for a given PIC instance
- * (though a domain can cover more than one PIC if they have a flat number
- * model). It's the domain callbacks that are responsible for setting the
- * irq_chip on a given irq_desc after it's been mapped.
- *
- * The host code and data structures use a fwnode_handle pointer to
- * identify the domain. In some cases, and in order to preserve source
- * code compatibility, this fwnode pointer is "upgraded" to a DT
- * device_node. For those firmware infrastructures that do not provide
- * a unique identifier for an interrupt controller, the irq_domain
- * code offers a fwnode allocator.
+ * See Documentation/core-api/irq/irq-domain.rst for the details.
*/
#ifndef _LINUX_IRQDOMAIN_H
--
2.49.0
^ permalink raw reply related [flat|nested] 20+ messages in thread* Re: [PATCH v2 56/57] docs: irqdomain: Update
2025-03-19 9:29 ` [PATCH v2 56/57] docs: irqdomain: Update Jiri Slaby (SUSE)
@ 2025-03-19 18:01 ` Randy Dunlap
2025-03-20 6:32 ` Jiri Slaby
0 siblings, 1 reply; 20+ messages in thread
From: Randy Dunlap @ 2025-03-19 18:01 UTC (permalink / raw)
To: Jiri Slaby (SUSE), tglx; +Cc: maz, linux-kernel, Jonathan Corbet, linux-doc
On 3/19/25 2:29 AM, Jiri Slaby (SUSE) wrote:
> The irqdomain documentaion became obsolete over time. Update and extend
> it a bit with respect to the current code and HW.
>
> Most notably the doubled documentation of irq_domain (from .rst and .h)
> was unified and let only in .rst. A reference link was added to .h.
>
> Furthermore:
> * Some 'struct' keywords added, so that the respective structs are
> hyperlinked.
> * :c:member: used where appropriate to mark a member of a struct.
> * Some wording rephrased to improve readability/understanding.
>
> Signed-off-by: Jiri Slaby (SUSE) <jirislaby@kernel.org>
> Cc: Jonathan Corbet <corbet@lwn.net>
> Cc: linux-doc@vger.kernel.org
> Cc: Randy Dunlap <rdunlap@infradead.org>
> ---
> Documentation/core-api/irq/irq-domain.rst | 122 +++++++++++++---------
> include/linux/irqdomain.h | 26 +----
> 2 files changed, 76 insertions(+), 72 deletions(-)
>
> diff --git a/Documentation/core-api/irq/irq-domain.rst b/Documentation/core-api/irq/irq-domain.rst
> index c2f2728b1a35..7a418b3135de 100644
> --- a/Documentation/core-api/irq/irq-domain.rst
> +++ b/Documentation/core-api/irq/irq-domain.rst
> @@ -3,8 +3,8 @@ The irq_domain Interrupt Number Mapping Library
> ===============================================
>
> The current design of the Linux kernel uses a single large number
> -space where each separate IRQ source is assigned a different number.
> -This is simple when there is only one interrupt controller, but in
> +space where each separate IRQ source is assigned a unique number.
> +This is simple when there is only one interrupt controller. But in
> systems with multiple interrupt controllers, the kernel must ensure
> that each one gets assigned non-overlapping allocations of Linux
> IRQ numbers.
> @@ -15,45 +15,64 @@ such as GPIO controllers avoid reimplementing identical callback
> mechanisms as the IRQ core system by modelling their interrupt
> handlers as irqchips. I.e. in effect cascading interrupt controllers.
>
> -Here the interrupt number loose all kind of correspondence to
> -hardware interrupt numbers: whereas in the past, IRQ numbers could
> -be chosen so they matched the hardware IRQ line into the root
> -interrupt controller (i.e. the component actually fireing the
> -interrupt line to the CPU) nowadays this number is just a number.
> +So in the past, IRQ numbers could be chosen so that they match the
> +hardware IRQ line into the root interrupt controller (i.e. the
> +component actually firing the interrupt line to the CPU). Nowadays,
> +this number is just a number and the number loose all kind of
loses
> +correspondence to hardware interrupt numbers.
>
[snip]
--
~Randy
^ permalink raw reply [flat|nested] 20+ messages in thread* Re: [PATCH v2 56/57] docs: irqdomain: Update
2025-03-19 18:01 ` Randy Dunlap
@ 2025-03-20 6:32 ` Jiri Slaby
0 siblings, 0 replies; 20+ messages in thread
From: Jiri Slaby @ 2025-03-20 6:32 UTC (permalink / raw)
To: Randy Dunlap, tglx; +Cc: maz, linux-kernel, Jonathan Corbet, linux-doc
On 19. 03. 25, 19:01, Randy Dunlap wrote:
>> @@ -15,45 +15,64 @@ such as GPIO controllers avoid reimplementing identical callback
>> mechanisms as the IRQ core system by modelling their interrupt
>> handlers as irqchips. I.e. in effect cascading interrupt controllers.
>>
>> -Here the interrupt number loose all kind of correspondence to
>> -hardware interrupt numbers: whereas in the past, IRQ numbers could
>> -be chosen so they matched the hardware IRQ line into the root
>> -interrupt controller (i.e. the component actually fireing the
>> -interrupt line to the CPU) nowadays this number is just a number.
>> +So in the past, IRQ numbers could be chosen so that they match the
>> +hardware IRQ line into the root interrupt controller (i.e. the
>> +component actually firing the interrupt line to the CPU). Nowadays,
>> +this number is just a number and the number loose all kind of
>
> loses
Thanks, fixed in 55/57 where I explicitly do "3rd person -> add 's' to
verbs.". Even though this was "loose" and not "lose" ;).
--
js
suse labs
^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCH v2 57/57] irqdomain.c: Fix kernel-doc and add it to Documentation
2025-03-19 9:28 [PATCH v2 00/57] irqdomain: Cleanups and Documentation Jiri Slaby (SUSE)
` (7 preceding siblings ...)
2025-03-19 9:29 ` [PATCH v2 56/57] docs: irqdomain: Update Jiri Slaby (SUSE)
@ 2025-03-19 9:29 ` Jiri Slaby (SUSE)
2025-03-19 10:21 ` [PATCH v2 00/57] irqdomain: Cleanups and Documentation Andy Shevchenko
` (3 subsequent siblings)
12 siblings, 0 replies; 20+ messages in thread
From: Jiri Slaby (SUSE) @ 2025-03-19 9:29 UTC (permalink / raw)
To: tglx
Cc: maz, linux-kernel, Jiri Slaby (SUSE), Jonathan Corbet, linux-doc,
Randy Dunlap
irqdomain.c's kernel-doc exists in that file, but is not plugged into
Documentation/ yet.
Before plugging it in, fix it first: irq_domain_get_irq_data() and
irq_domain_set_info() were documented twice. Identically, by both
definitions for CONFIG_IRQ_DOMAIN_HIERARCHY and
!CONFIG_IRQ_DOMAIN_HIERARCHY. Therefore, switch the second kernel-doc
into an ordinary comment -- change "/**" to simple "/*". This avoids
sphinx's:
WARNING: Duplicate C declaration
Next, in commit b7b377332b96 ("irqdomain: Fix the kernel-doc and plug it
into Documentation"), I added irqdomain.h's (header) kernel-doc into
core-api/genericirq.rst. But given the amount of irqdomain functions and
structures, move all these to core-api/irq/irq-domain.rst now.
Finally, add these newly fixed irqdomain.c's (source) docs there as
well.
Signed-off-by: Jiri Slaby (SUSE) <jirislaby@kernel.org>
Cc: Jonathan Corbet <corbet@lwn.net>
Cc: linux-doc@vger.kernel.org
Cc: Randy Dunlap <rdunlap@infradead.org>
---
Documentation/core-api/genericirq.rst | 2 --
Documentation/core-api/irq/irq-domain.rst | 20 ++++++++++++++++++++
kernel/irq/irqdomain.c | 4 ++--
3 files changed, 22 insertions(+), 4 deletions(-)
diff --git a/Documentation/core-api/genericirq.rst b/Documentation/core-api/genericirq.rst
index 25f94dfd66fa..582bde9bf5a9 100644
--- a/Documentation/core-api/genericirq.rst
+++ b/Documentation/core-api/genericirq.rst
@@ -410,8 +410,6 @@ which are used in the generic IRQ layer.
.. kernel-doc:: include/linux/interrupt.h
:internal:
-.. kernel-doc:: include/linux/irqdomain.h
-
Public Functions Provided
=========================
diff --git a/Documentation/core-api/irq/irq-domain.rst b/Documentation/core-api/irq/irq-domain.rst
index 7a418b3135de..4226e0bac4f0 100644
--- a/Documentation/core-api/irq/irq-domain.rst
+++ b/Documentation/core-api/irq/irq-domain.rst
@@ -299,3 +299,23 @@ Debugging
Most of the internals of the IRQ subsystem are exposed in debugfs by
turning CONFIG_GENERIC_IRQ_DEBUGFS on.
+
+Structures and Public Functions Provided
+========================================
+
+This chapter contains the autogenerated documentation of the structures
+and exported kernel API functions which are used for IRQ domains.
+
+.. kernel-doc:: include/linux/irqdomain.h
+
+.. kernel-doc:: kernel/irq/irqdomain.c
+ :export:
+
+Internal Functions Provided
+===========================
+
+This chapter contains the autogenerated documentation of the internal
+functions.
+
+.. kernel-doc:: kernel/irq/irqdomain.c
+ :internal:
diff --git a/kernel/irq/irqdomain.c b/kernel/irq/irqdomain.c
index 5bb3d2bbe229..5b21b568155b 100644
--- a/kernel/irq/irqdomain.c
+++ b/kernel/irq/irqdomain.c
@@ -1940,7 +1940,7 @@ static void irq_domain_check_hierarchy(struct irq_domain *domain)
domain->flags |= IRQ_DOMAIN_FLAG_HIERARCHY;
}
#else /* CONFIG_IRQ_DOMAIN_HIERARCHY */
-/**
+/*
* irq_domain_get_irq_data - Get irq_data associated with @virq and @domain
* @domain: domain to match
* @virq: IRQ number to get irq_data
@@ -1954,7 +1954,7 @@ struct irq_data *irq_domain_get_irq_data(struct irq_domain *domain,
}
EXPORT_SYMBOL_GPL(irq_domain_get_irq_data);
-/**
+/*
* irq_domain_set_info - Set the complete data for a @virq in @domain
* @domain: Interrupt domain to match
* @virq: IRQ number
--
2.49.0
^ permalink raw reply related [flat|nested] 20+ messages in thread* Re: [PATCH v2 00/57] irqdomain: Cleanups and Documentation
2025-03-19 9:28 [PATCH v2 00/57] irqdomain: Cleanups and Documentation Jiri Slaby (SUSE)
` (8 preceding siblings ...)
2025-03-19 9:29 ` [PATCH v2 57/57] irqdomain.c: Fix kernel-doc and add it to Documentation Jiri Slaby (SUSE)
@ 2025-03-19 10:21 ` Andy Shevchenko
2025-03-19 10:32 ` Jiri Slaby
2025-03-20 15:18 ` (subset) " Mark Brown
` (2 subsequent siblings)
12 siblings, 1 reply; 20+ messages in thread
From: Andy Shevchenko @ 2025-03-19 10:21 UTC (permalink / raw)
To: Jiri Slaby (SUSE)
Cc: tglx, maz, linux-kernel, Aaro Koskinen, Abhinav Kumar, Albert Ou,
Alexandre Belloni, Alexandre Ghiti, Alexandre Torgue,
Alex Deucher, Alex Shi, Alim Akhtar, Alvin Šipraga,
Alyssa Rosenzweig, amd-gfx, Amit Kucheria, Anatolij Gustschin,
Andi Shyti, Andreas Färber, Andreas Kemnade, Andrew Jeffery,
Andrew Lunn, Andy Shevchenko, AngeloGioacchino Del Regno,
Antoine Tenart, Anton Ivanov, Anup Patel, Arnd Bergmann, asahi,
Bartosz Golaszewski, Baruch Siach, Benjamin Herrenschmidt,
Bharat Kumar Gogada, Bjorn Andersson, Bjorn Helgaas,
Borislav Petkov, Broadcom internal kernel review list,
Claudiu Beznea, Corentin Chary, Daire McNamara, Daniel Golle,
Daniel Lezcano, Daniel Mack, Daniel Palmer, Dave Hansen,
David Airlie, David S. Miller, DENG Qingfang, Dinh Nguyen,
Dmitry Baryshkov, Dongliang Mu, Doug Berger, dri-devel,
Eddie James, Eric Dumazet, Fabio Estevam, Florian Fainelli,
Geoff Levand, Greg Kroah-Hartman, Gregory Clement, Guo Ren,
Hans de Goede, Haojian Zhuang, Haojian Zhuang, Heiko Stuebner,
Herve Codina, Hou Zhiqiang, H. Peter Anvin, Huacai Chen,
Changhuang Liang, Chen-Yu Tsai, Chester A. Unal,
Christian König, Christophe Leroy, Chris Zankel,
Ilpo Järvinen, Imre Kaloz, Ingo Molnar, Jakub Kicinski,
James Morse, Janne Grunau, Janusz Krzysztofik, Jaroslav Kysela,
Jassi Brar, Jernej Skrabec, Jerome Brunet, Jianjun Wang,
Jiawen Wu, Jiaxun Yang, Jim Quinlan, Jingoo Han, Joel Stanley,
Johannes Berg, John Crispin, John Paul Adrian Glaubitz,
Jonas Bonn, Jonathan Cameron, Jonathan Corbet, Jonathan Hunter,
Jonathan Neuschäfer, Joyce Ooi, Karthikeyan Mitran, Keerthy,
Kevin Hilman, Konrad Dybcio, Krzysztof Kozlowski,
Krzysztof Wilczyński, Kunihiko Hayashi, Lakshmi Sowjanya D,
Lars-Peter Clausen, Lee Jones, Liam Girdwood, Linus Walleij,
Linus Walleij, linux-amlogic, linux-arm-kernel, linux-arm-msm,
linux-doc, linux-edac, linux-gpio, linux-iio, linux-i2c,
linux-mediatek, linux-mips, linux-omap, linux-pci, linuxppc-dev,
linux-remoteproc, linux-riscv, linux-rpi-kernel, linux-sh,
linux-snps-arc, linux-sound, linux-stm32, linux-um,
linux-wireless, loongarch, Lorenzo Pieralisi, Ludovic Desroches,
Lukasz Luba, Luke D. Jones, Madhavan Srinivasan,
Manivannan Sadhasivam, Marek Behún, Marijn Suijten,
Mark Brown, Mark-PK Tsai, Martin Blumenstingl, Masami Hiramatsu,
Mathieu Poirier, Matthias Brugger, Mauro Carvalho Chehab,
Max Filippov, Maxime Coquelin, Mengyuan Lou, Michael Buesch,
Michael Ellerman, Michal Simek, Miodrag Dinic, Naveen N Rao,
Neil Armstrong, netdev, Nicolas Ferre, Nicolas Saenz Julienne,
Nicholas Piggin, Nikhil Agarwal, Nipun Gupta, Nishanth Menon,
Pali Rohár, Palmer Dabbelt, Paolo Abeni, Paul Cercueil,
Paul Walmsley, Pengutronix Kernel Team, Peter Rosin,
Philipp Zabel, Piotr Wojtaszczyk, platform-driver-x86,
Prasad Kumpatla, Qiang Zhao, Qin Jian, Rafael J. Wysocki,
Randy Dunlap, Ray Jui, Rengarajan Sundararajan, Richard Cochran,
Richard Weinberger, Rich Felker, Rob Clark, Robert Jarzmik,
Robert Richter, Rob Herring, Roger Quadros, Russell King,
Ryan Chen, Ryder Lee, Samuel Holland, Santosh Shilimkar,
Sascha Hauer, Scott Branden, Scott Wood, Sean Paul, Sean Wang,
Sean Wang, Sebastian Hesselbarth, Sergio Paracuellos, Shawn Guo,
Shawn Lin, Siddharth Vadapalli, Simona Vetter, Stafford Horne,
Stefan Kristiansson, Stephen Boyd, Sven Peter, Takashi Iwai,
Talel Shenhar, Tero Kristo, Thangaraj Samynathan, Thara Gopinath,
Thierry Reding, Thomas Bogendoerfer, Thomas Petazzoni, Toan Le,
Tony Lindgren, Tony Luck, UNGLinuxDriver, Uwe Kleine-König,
Vignesh Raghavendra, Vineet Gupta, Vladimir Oltean,
Vladimir Zapolskiy, WANG Xuerui, Woojung Huh, x86, Yanteng Si,
Yoshinori Sato, Zhang Rui
On Wed, Mar 19, 2025 at 11:30 AM Jiri Slaby (SUSE) <jirislaby@kernel.org> wrote:
>
> Hi,
>
> tl;dr if patches are agreed upon, I ask subsys maintainers to take the
> respective ones via their trees (as they are split per subsys), so that
> the IRQ tree can take only the rest. That would minimize churn/conflicts
> during merges.
>
> ===
>
> While I was reading through the irqdomain code and headers, I found some
> naming and documentation hard to follow or incomplete. Especially the
> naming of _add/_create/_instantiate functions.
>
> I tried to come up with a better state with this patchset:
> * only irq _domain_ (not host),
> * only irq_domain_create*() functions, all taking fwnode uniformly,
>
> Finally, all the irqdomain stuff is now plugged (and generated) into
> Documentation. So that everyone can walk through it at
> https://www.kernel.org/doc/ (once applied, of course).
I am all to support the idea, but in some cases I would think of a bit
more work to be done to get rid of the of_fwnode_handle(np) in favour
of dev_fwnode(dev). Note, this is based on a brief look, I haven't any
example at hand right now.
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 20+ messages in thread* Re: [PATCH v2 00/57] irqdomain: Cleanups and Documentation
2025-03-19 10:21 ` [PATCH v2 00/57] irqdomain: Cleanups and Documentation Andy Shevchenko
@ 2025-03-19 10:32 ` Jiri Slaby
0 siblings, 0 replies; 20+ messages in thread
From: Jiri Slaby @ 2025-03-19 10:32 UTC (permalink / raw)
To: Andy Shevchenko
Cc: tglx, maz, linux-kernel, Aaro Koskinen, Abhinav Kumar, Albert Ou,
Alexandre Belloni, Alexandre Ghiti, Alexandre Torgue,
Alex Deucher, Alex Shi, Alim Akhtar, Alvin Šipraga,
Alyssa Rosenzweig, amd-gfx, Amit Kucheria, Anatolij Gustschin,
Andi Shyti, Andreas Färber, Andreas Kemnade, Andrew Jeffery,
Andrew Lunn, Andy Shevchenko, AngeloGioacchino Del Regno,
Antoine Tenart, Anton Ivanov, Anup Patel, Arnd Bergmann, asahi,
Bartosz Golaszewski, Baruch Siach, Benjamin Herrenschmidt,
Bharat Kumar Gogada, Bjorn Andersson, Bjorn Helgaas,
Borislav Petkov, Broadcom internal kernel review list,
Claudiu Beznea, Corentin Chary, Daire McNamara, Daniel Golle,
Daniel Lezcano, Daniel Mack, Daniel Palmer, Dave Hansen,
David Airlie, David S. Miller, DENG Qingfang, Dinh Nguyen,
Dmitry Baryshkov, Dongliang Mu, Doug Berger, dri-devel,
Eddie James, Eric Dumazet, Fabio Estevam, Florian Fainelli,
Geoff Levand, Greg Kroah-Hartman, Gregory Clement, Guo Ren,
Hans de Goede, Haojian Zhuang, Haojian Zhuang, Heiko Stuebner,
Herve Codina, Hou Zhiqiang, H. Peter Anvin, Huacai Chen,
Changhuang Liang, Chen-Yu Tsai, Chester A. Unal,
Christian König, Christophe Leroy, Chris Zankel,
Ilpo Järvinen, Imre Kaloz, Ingo Molnar, Jakub Kicinski,
James Morse, Janne Grunau, Janusz Krzysztofik, Jaroslav Kysela,
Jassi Brar, Jernej Skrabec, Jerome Brunet, Jianjun Wang,
Jiawen Wu, Jiaxun Yang, Jim Quinlan, Jingoo Han, Joel Stanley,
Johannes Berg, John Crispin, John Paul Adrian Glaubitz,
Jonas Bonn, Jonathan Cameron, Jonathan Corbet, Jonathan Hunter,
Jonathan Neuschäfer, Joyce Ooi, Karthikeyan Mitran, Keerthy,
Kevin Hilman, Konrad Dybcio, Krzysztof Kozlowski,
Krzysztof Wilczyński, Kunihiko Hayashi, Lakshmi Sowjanya D,
Lars-Peter Clausen, Lee Jones, Liam Girdwood, Linus Walleij,
Linus Walleij, linux-amlogic, linux-arm-kernel, linux-arm-msm,
linux-doc, linux-edac, linux-gpio, linux-iio, linux-i2c,
linux-mediatek, linux-mips, linux-omap, linux-pci, linuxppc-dev,
linux-remoteproc, linux-riscv, linux-rpi-kernel, linux-sh,
linux-snps-arc, linux-sound, linux-stm32, linux-um,
linux-wireless, loongarch, Lorenzo Pieralisi, Ludovic Desroches,
Lukasz Luba, Luke D. Jones, Madhavan Srinivasan,
Manivannan Sadhasivam, Marek Behún, Marijn Suijten,
Mark Brown, Mark-PK Tsai, Martin Blumenstingl, Masami Hiramatsu,
Mathieu Poirier, Matthias Brugger, Mauro Carvalho Chehab,
Max Filippov, Maxime Coquelin, Mengyuan Lou, Michael Buesch,
Michael Ellerman, Michal Simek, Miodrag Dinic, Naveen N Rao,
Neil Armstrong, netdev, Nicolas Ferre, Nicolas Saenz Julienne,
Nicholas Piggin, Nikhil Agarwal, Nipun Gupta, Nishanth Menon,
Pali Rohár, Palmer Dabbelt, Paolo Abeni, Paul Cercueil,
Paul Walmsley, Pengutronix Kernel Team, Peter Rosin,
Philipp Zabel, Piotr Wojtaszczyk, platform-driver-x86,
Prasad Kumpatla, Qiang Zhao, Qin Jian, Rafael J. Wysocki,
Randy Dunlap, Ray Jui, Rengarajan Sundararajan, Richard Cochran,
Richard Weinberger, Rich Felker, Rob Clark, Robert Jarzmik,
Robert Richter, Rob Herring, Roger Quadros, Russell King,
Ryan Chen, Ryder Lee, Samuel Holland, Santosh Shilimkar,
Sascha Hauer, Scott Branden, Scott Wood, Sean Paul, Sean Wang,
Sean Wang, Sebastian Hesselbarth, Sergio Paracuellos, Shawn Guo,
Shawn Lin, Siddharth Vadapalli, Simona Vetter, Stafford Horne,
Stefan Kristiansson, Stephen Boyd, Sven Peter, Takashi Iwai,
Talel Shenhar, Tero Kristo, Thangaraj Samynathan, Thara Gopinath,
Thierry Reding, Thomas Bogendoerfer, Thomas Petazzoni, Toan Le,
Tony Lindgren, Tony Luck, UNGLinuxDriver, Uwe Kleine-König,
Vignesh Raghavendra, Vineet Gupta, Vladimir Oltean,
Vladimir Zapolskiy, WANG Xuerui, Woojung Huh, x86, Yanteng Si,
Yoshinori Sato, Zhang Rui
On 19. 03. 25, 11:21, Andy Shevchenko wrote:
> I am all to support the idea, but in some cases I would think of a bit
> more work to be done to get rid of the of_fwnode_handle(np) in favour
> of dev_fwnode(dev). Note, this is based on a brief look, I haven't any
> example at hand right now.
Aah, that's the helper I was looking for!
I was about to use dev->fwnode directly (see the commit log for the
Switch to irq_domain_create_*()), but that is not guaranteed to be
always properly set.
Will use this instead in v3.
thanks,
--
js
suse labs
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: (subset) [PATCH v2 00/57] irqdomain: Cleanups and Documentation
2025-03-19 9:28 [PATCH v2 00/57] irqdomain: Cleanups and Documentation Jiri Slaby (SUSE)
` (9 preceding siblings ...)
2025-03-19 10:21 ` [PATCH v2 00/57] irqdomain: Cleanups and Documentation Andy Shevchenko
@ 2025-03-20 15:18 ` Mark Brown
2025-03-25 7:03 ` Christophe Leroy
2025-05-06 13:41 ` Thomas Gleixner
12 siblings, 0 replies; 20+ messages in thread
From: Mark Brown @ 2025-03-20 15:18 UTC (permalink / raw)
To: tglx, Jiri Slaby (SUSE)
Cc: maz, linux-kernel, Aaro Koskinen, Abhinav Kumar, Albert Ou,
Alexandre Belloni, Alexandre Ghiti, Alexandre Torgue,
Alex Deucher, Alex Shi, Alim Akhtar, Alvin Šipraga,
Alyssa Rosenzweig, amd-gfx, Amit Kucheria, Anatolij Gustschin,
Andi Shyti, Andreas Färber, Andreas Kemnade, Andrew Jeffery,
Andrew Lunn, Andy Shevchenko, AngeloGioacchino Del Regno,
Antoine Tenart, Anton Ivanov, Anup Patel, Arnd Bergmann, asahi,
Bartosz Golaszewski, Baruch Siach, Benjamin Herrenschmidt,
Bharat Kumar Gogada, Bjorn Andersson, Bjorn Helgaas,
Borislav Petkov, Broadcom internal kernel review list,
Claudiu Beznea, Corentin Chary, Daire McNamara, Daniel Golle,
Daniel Lezcano, Daniel Mack, Daniel Palmer, Dave Hansen,
David Airlie, David S. Miller, DENG Qingfang, Dinh Nguyen,
Dmitry Baryshkov, Dongliang Mu, Doug Berger, dri-devel,
Eddie James, Eric Dumazet, Fabio Estevam, Florian Fainelli,
Geoff Levand, Greg Kroah-Hartman, Gregory Clement, Guo Ren,
Hans de Goede, Haojian Zhuang, Haojian Zhuang, Heiko Stuebner,
Herve Codina, Hou Zhiqiang, H. Peter Anvin, Huacai Chen,
Changhuang Liang, Chen-Yu Tsai, Chester A. Unal,
Christian König, Christophe Leroy, Chris Zankel,
Ilpo Järvinen, Imre Kaloz, Ingo Molnar, Jakub Kicinski,
James Morse, Janne Grunau, Janusz Krzysztofik, Jaroslav Kysela,
Jassi Brar, Jernej Skrabec, Jerome Brunet, Jianjun Wang,
Jiawen Wu, Jiaxun Yang, Jim Quinlan, Jingoo Han, Joel Stanley,
Johannes Berg, John Crispin, John Paul Adrian Glaubitz,
Jonas Bonn, Jonathan Cameron, Jonathan Corbet, Jonathan Hunter,
Jonathan Neuschäfer, Joyce Ooi, Karthikeyan Mitran, Keerthy,
Kevin Hilman, Konrad Dybcio, Krzysztof Kozlowski,
Krzysztof Wilczyński, Kunihiko Hayashi, Lakshmi Sowjanya D,
Lars-Peter Clausen, Lee Jones, Liam Girdwood, Linus Walleij,
Linus Walleij, linux-amlogic, linux-arm-kernel, linux-arm-msm,
linux-doc, linux-edac, linux-gpio, linux-iio, linux-i2c,
linux-mediatek, linux-mips, linux-omap, linux-pci, linuxppc-dev,
linux-remoteproc, linux-riscv, linux-rpi-kernel, linux-sh,
linux-snps-arc, linux-sound, linux-stm32, linux-um,
linux-wireless, loongarch, Lorenzo Pieralisi, Ludovic Desroches,
Lukasz Luba, Luke D. Jones, Madhavan Srinivasan,
Manivannan Sadhasivam, Marek Behún, Marijn Suijten,
Mark-PK Tsai, Martin Blumenstingl, Masami Hiramatsu,
Mathieu Poirier, Matthias Brugger, Mauro Carvalho Chehab,
Max Filippov, Maxime Coquelin, Mengyuan Lou, Michael Buesch,
Michael Ellerman, Michal Simek, Miodrag Dinic, Naveen N Rao,
Neil Armstrong, netdev, Nicolas Ferre, Nicolas Saenz Julienne,
Nicholas Piggin, Nikhil Agarwal, Nipun Gupta, Nishanth Menon,
Pali Rohár, Palmer Dabbelt, Paolo Abeni, Paul Cercueil,
Paul Walmsley, Pengutronix Kernel Team, Peter Rosin,
Philipp Zabel, Piotr Wojtaszczyk, platform-driver-x86,
Prasad Kumpatla, Qiang Zhao, Qin Jian, Rafael J. Wysocki,
Randy Dunlap, Ray Jui, Rengarajan Sundararajan, Richard Cochran,
Richard Weinberger, Rich Felker, Rob Clark, Robert Jarzmik,
Robert Richter, Rob Herring, Roger Quadros, Russell King,
Ryan Chen, Ryder Lee, Samuel Holland, Santosh Shilimkar,
Sascha Hauer, Scott Branden, Scott Wood, Sean Paul, Sean Wang,
Sean Wang, Sebastian Hesselbarth, Sergio Paracuellos, Shawn Guo,
Shawn Lin, Siddharth Vadapalli, Simona Vetter, Stafford Horne,
Stefan Kristiansson, Stephen Boyd, Sven Peter, Takashi Iwai,
Talel Shenhar, Tero Kristo, Thangaraj Samynathan, Thara Gopinath,
Thierry Reding, Thomas Bogendoerfer, Thomas Petazzoni, Toan Le,
Tony Lindgren, Tony Luck, UNGLinuxDriver, Uwe Kleine-König,
Vignesh Raghavendra, Vineet Gupta, Vladimir Oltean,
Vladimir Zapolskiy, WANG Xuerui, Woojung Huh, x86, Yanteng Si,
Yoshinori Sato, Zhang Rui
On Wed, 19 Mar 2025 10:28:53 +0100, Jiri Slaby (SUSE) wrote:
> tl;dr if patches are agreed upon, I ask subsys maintainers to take the
> respective ones via their trees (as they are split per subsys), so that
> the IRQ tree can take only the rest. That would minimize churn/conflicts
> during merges.
>
> ===
>
> [...]
Applied to
https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-next
Thanks!
[35/57] irqdomain: sound: Switch to irq_domain_create_linear()
commit: 83eddf0116b09186f909bc643f2093f266f204ea
All being well this means that it will be integrated into the linux-next
tree (usually sometime in the next 24 hours) and sent to Linus during
the next merge window (or sooner if it is a bug fix), however if
problems are discovered then the patch may be dropped or reverted.
You may get further e-mails resulting from automated or manual testing
and review of the tree, please engage with people reporting problems and
send followup patches addressing any issues that are reported if needed.
If any updates are required or you are submitting further changes they
should be sent as incremental updates against current git, existing
patches will not be replaced.
Please add any relevant lists and maintainers to the CCs when replying
to this mail.
Thanks,
Mark
^ permalink raw reply [flat|nested] 20+ messages in thread* Re: (subset) [PATCH v2 00/57] irqdomain: Cleanups and Documentation
2025-03-19 9:28 [PATCH v2 00/57] irqdomain: Cleanups and Documentation Jiri Slaby (SUSE)
` (10 preceding siblings ...)
2025-03-20 15:18 ` (subset) " Mark Brown
@ 2025-03-25 7:03 ` Christophe Leroy
2025-05-06 13:41 ` Thomas Gleixner
12 siblings, 0 replies; 20+ messages in thread
From: Christophe Leroy @ 2025-03-25 7:03 UTC (permalink / raw)
To: tglx, Jiri Slaby (SUSE)
Cc: Christophe Leroy, maz, linux-kernel, Aaro Koskinen, Abhinav Kumar,
Albert Ou, Alexandre Belloni, Alexandre Ghiti, Alexandre Torgue,
Alex Deucher, Alex Shi, Alim Akhtar, Alvin Šipraga,
Alyssa Rosenzweig, amd-gfx, Amit Kucheria, Anatolij Gustschin,
Andi Shyti, Andreas Färber, Andreas Kemnade, Andrew Jeffery,
Andrew Lunn, Andy Shevchenko, AngeloGioacchino Del Regno,
Antoine Tenart, Anton Ivanov, Anup Patel, Arnd Bergmann, asahi,
Bartosz Golaszewski, Baruch Siach, Benjamin Herrenschmidt,
Bharat Kumar Gogada, Bjorn Andersson, Bjorn Helgaas,
Borislav Petkov, Broadcom internal kernel review list,
Claudiu Beznea, Corentin Chary, Daire McNamara, Daniel Golle,
Daniel Lezcano, Daniel Mack, Daniel Palmer, Dave Hansen,
David Airlie, David S. Miller, DENG Qingfang, Dinh Nguyen,
Dmitry Baryshkov, Dongliang Mu, Doug Berger, dri-devel,
Eddie James, Eric Dumazet, Fabio Estevam, Florian Fainelli,
Geoff Levand, Greg Kroah-Hartman, Gregory Clement, Guo Ren,
Hans de Goede, Haojian Zhuang, Haojian Zhuang, Heiko Stuebner,
Herve Codina, Hou Zhiqiang, H. Peter Anvin, Huacai Chen,
Changhuang Liang, Chen-Yu Tsai, Chester A. Unal,
Christian König, Chris Zankel, Ilpo Järvinen,
Imre Kaloz, Ingo Molnar, Jakub Kicinski, James Morse,
Janne Grunau, Janusz Krzysztofik, Jaroslav Kysela, Jassi Brar,
Jernej Skrabec, Jerome Brunet, Jianjun Wang, Jiawen Wu,
Jiaxun Yang, Jim Quinlan, Jingoo Han, Joel Stanley, Johannes Berg,
John Crispin, John Paul Adrian Glaubitz, Jonas Bonn,
Jonathan Cameron, Jonathan Corbet, Jonathan Hunter,
Jonathan Neuschäfer, Joyce Ooi, Karthikeyan Mitran, Keerthy,
Kevin Hilman, Konrad Dybcio, Krzysztof Kozlowski,
Krzysztof Wilczyński, Kunihiko Hayashi, Lakshmi Sowjanya D,
Lars-Peter Clausen, Lee Jones, Liam Girdwood, Linus Walleij,
Linus Walleij, linux-amlogic, linux-arm-kernel, linux-arm-msm,
linux-doc, linux-edac, linux-gpio, linux-iio, linux-i2c,
linux-mediatek, linux-mips, linux-omap, linux-pci, linuxppc-dev,
linux-remoteproc, linux-riscv, linux-rpi-kernel, linux-sh,
linux-snps-arc, linux-sound, linux-stm32, linux-um,
linux-wireless, loongarch, Lorenzo Pieralisi, Ludovic Desroches,
Lukasz Luba, Luke D. Jones, Madhavan Srinivasan,
Manivannan Sadhasivam, Marek Behún, Marijn Suijten,
Mark Brown, Mark-PK Tsai, Martin Blumenstingl, Masami Hiramatsu,
Mathieu Poirier, Matthias Brugger, Mauro Carvalho Chehab,
Max Filippov, Maxime Coquelin, Mengyuan Lou, Michael Buesch,
Michael Ellerman, Michal Simek, Miodrag Dinic, Naveen N Rao,
Neil Armstrong, netdev, Nicolas Ferre, Nicolas Saenz Julienne,
Nicholas Piggin, Nikhil Agarwal, Nipun Gupta, Nishanth Menon,
Pali Rohár, Palmer Dabbelt, Paolo Abeni, Paul Cercueil,
Paul Walmsley, Pengutronix Kernel Team, Peter Rosin,
Philipp Zabel, Piotr Wojtaszczyk, platform-driver-x86,
Prasad Kumpatla, Qiang Zhao, Qin Jian, Rafael J. Wysocki,
Randy Dunlap, Ray Jui, Rengarajan Sundararajan, Richard Cochran,
Richard Weinberger, Rich Felker, Rob Clark, Robert Jarzmik,
Robert Richter, Rob Herring, Roger Quadros, Russell King,
Ryan Chen, Ryder Lee, Samuel Holland, Santosh Shilimkar,
Sascha Hauer, Scott Branden, Scott Wood, Sean Paul, Sean Wang,
Sean Wang, Sebastian Hesselbarth, Sergio Paracuellos, Shawn Guo,
Shawn Lin, Siddharth Vadapalli, Simona Vetter, Stafford Horne,
Stefan Kristiansson, Stephen Boyd, Sven Peter, Takashi Iwai,
Talel Shenhar, Tero Kristo, Thangaraj Samynathan, Thara Gopinath,
Thierry Reding, Thomas Bogendoerfer, Thomas Petazzoni, Toan Le,
Tony Lindgren, Tony Luck, UNGLinuxDriver, Uwe Kleine-König,
Vignesh Raghavendra, Vineet Gupta, Vladimir Oltean,
Vladimir Zapolskiy, WANG Xuerui, Woojung Huh, x86, Yanteng Si,
Yoshinori Sato, Zhang Rui
On Wed, 19 Mar 2025 10:28:53 +0100, Jiri Slaby (SUSE) wrote:
> tl;dr if patches are agreed upon, I ask subsys maintainers to take the
> respective ones via their trees (as they are split per subsys), so that
> the IRQ tree can take only the rest. That would minimize churn/conflicts
> during merges.
>
> ===
>
> [...]
Applied, thanks!
[48/57] irqdomain: soc: Switch to irq_find_mapping()
commit: a70a3a6322131632cc6cf71e9d2fa6409a029fd7
Best regards,
--
Christophe Leroy <christophe.leroy@csgroup.eu>
^ permalink raw reply [flat|nested] 20+ messages in thread* Re: [PATCH v2 00/57] irqdomain: Cleanups and Documentation
2025-03-19 9:28 [PATCH v2 00/57] irqdomain: Cleanups and Documentation Jiri Slaby (SUSE)
` (11 preceding siblings ...)
2025-03-25 7:03 ` Christophe Leroy
@ 2025-05-06 13:41 ` Thomas Gleixner
2025-05-12 9:55 ` Jiri Slaby
12 siblings, 1 reply; 20+ messages in thread
From: Thomas Gleixner @ 2025-05-06 13:41 UTC (permalink / raw)
To: Jiri Slaby (SUSE)
Cc: maz, linux-kernel, Jiri Slaby (SUSE), Aaro Koskinen,
Abhinav Kumar, Albert Ou, Alexandre Belloni, Alexandre Ghiti,
Alexandre Torgue, Alex Deucher, Alex Shi, Alim Akhtar,
Alvin Šipraga, Alyssa Rosenzweig, amd-gfx, Amit Kucheria,
Anatolij Gustschin, Andi Shyti, Andreas Färber,
Andreas Kemnade, Andrew Jeffery, Andrew Lunn, Andy Shevchenko,
AngeloGioacchino Del Regno, Antoine Tenart, Anton Ivanov,
Anup Patel, Arnd Bergmann, asahi, Bartosz Golaszewski,
Baruch Siach, Benjamin Herrenschmidt, Bharat Kumar Gogada,
Bjorn Andersson, Bjorn Helgaas, Borislav Petkov,
Broadcom internal kernel review list, Claudiu Beznea,
Corentin Chary, Daire McNamara, Daniel Golle, Daniel Lezcano,
Daniel Mack, Daniel Palmer, Dave Hansen, David Airlie,
David S. Miller, DENG Qingfang, Dinh Nguyen, Dmitry Baryshkov,
Dongliang Mu, Doug Berger, dri-devel, Eddie James, Eric Dumazet,
Fabio Estevam, Florian Fainelli, Geoff Levand, Greg Kroah-Hartman,
Gregory Clement, Guo Ren, Hans de Goede, Haojian Zhuang,
Haojian Zhuang, Heiko Stuebner, Herve Codina, Hou Zhiqiang,
H. Peter Anvin, Huacai Chen, Changhuang Liang, Chen-Yu Tsai,
Chester A. Unal, Christian König, Christophe Leroy,
Chris Zankel, Ilpo Järvinen, Imre Kaloz, Ingo Molnar,
Jakub Kicinski, James Morse, Janne Grunau, Janusz Krzysztofik,
Jaroslav Kysela, Jassi Brar, Jernej Skrabec, Jerome Brunet,
Jianjun Wang, Jiawen Wu, Jiaxun Yang, Jim Quinlan, Jingoo Han,
Joel Stanley, Johannes Berg, John Crispin,
John Paul Adrian Glaubitz, Jonas Bonn, Jonathan Cameron,
Jonathan Corbet, Jonathan Hunter, Jonathan Neuschäfer,
Joyce Ooi, Karthikeyan Mitran, Keerthy, Kevin Hilman,
Konrad Dybcio, Krzysztof Kozlowski, Krzysztof Wilczyński,
Kunihiko Hayashi, Lakshmi Sowjanya D, Lars-Peter Clausen,
Lee Jones, Liam Girdwood, Linus Walleij, Linus Walleij,
linux-amlogic, linux-arm-kernel, linux-arm-msm, linux-doc,
linux-edac, linux-gpio, linux-iio, linux-i2c, linux-mediatek,
linux-mips, linux-omap, linux-pci, linuxppc-dev, linux-remoteproc,
linux-riscv, linux-rpi-kernel, linux-sh, linux-snps-arc,
linux-sound, linux-stm32, linux-um, linux-wireless, loongarch,
Lorenzo Pieralisi, Ludovic Desroches, Lukasz Luba, Luke D. Jones,
Madhavan Srinivasan, Manivannan Sadhasivam, Marek Behún,
Marijn Suijten, Mark Brown, Mark-PK Tsai, Martin Blumenstingl,
Masami Hiramatsu, Mathieu Poirier, Matthias Brugger,
Mauro Carvalho Chehab, Max Filippov, Maxime Coquelin,
Mengyuan Lou, Michael Buesch, Michael Ellerman, Michal Simek,
Miodrag Dinic, Naveen N Rao, Neil Armstrong, netdev,
Nicolas Ferre, Nicolas Saenz Julienne, Nicholas Piggin,
Nikhil Agarwal, Nipun Gupta, Nishanth Menon, Pali Rohár,
Palmer Dabbelt, Paolo Abeni, Paul Cercueil, Paul Walmsley,
Pengutronix Kernel Team, Peter Rosin, Philipp Zabel,
Piotr Wojtaszczyk, platform-driver-x86, Prasad Kumpatla,
Qiang Zhao, Qin Jian, Rafael J. Wysocki, Randy Dunlap, Ray Jui,
Rengarajan Sundararajan, Richard Cochran, Richard Weinberger,
Rich Felker, Rob Clark, Robert Jarzmik, Robert Richter,
Rob Herring, Roger Quadros, Russell King, Ryan Chen, Ryder Lee,
Samuel Holland, Santosh Shilimkar, Sascha Hauer, Scott Branden,
Scott Wood, Sean Paul, Sean Wang, Sean Wang,
Sebastian Hesselbarth, Sergio Paracuellos, Shawn Guo, Shawn Lin,
Siddharth Vadapalli, Simona Vetter, Stafford Horne,
Stefan Kristiansson, Stephen Boyd, Sven Peter, Takashi Iwai,
Talel Shenhar, Tero Kristo, Thangaraj Samynathan, Thara Gopinath,
Thierry Reding, Thomas Bogendoerfer, Thomas Petazzoni, Toan Le,
Tony Lindgren, Tony Luck, UNGLinuxDriver, Uwe Kleine-König,
Vignesh Raghavendra, Vineet Gupta, Vladimir Oltean,
Vladimir Zapolskiy, WANG Xuerui, Woojung Huh, x86, Yanteng Si,
Yoshinori Sato, Zhang Rui
On Wed, Mar 19 2025 at 10:28, Jiri Slaby wrote:
> Hi,
>
> tl;dr if patches are agreed upon, I ask subsys maintainers to take the
> respective ones via their trees (as they are split per subsys), so that
> the IRQ tree can take only the rest. That would minimize churn/conflicts
> during merges.
So. It's rc5 by now and I picked up everything which did not show up in
next yet. As there are some patches in next, I delayed the removal of
functions for the merge window so that we don't end up with merge
dependencies.
To reducde conflicts, I grabbed the irq branch from the PCI tree under
the assumption that this branch is stable.
The series sits now in
git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git irq/cleanups
and will be in next soon. If there are duplicates showing up in next,
I'm going to remove them from my branch, so the branch is not for basing
development on.
@Jiri, I fixed up all your subject prefixes as
'irqdomain: subsys: Switch to foo()'
does not make any sense at all. These subsystems have their regular
prefixes and these changes do not justify made up irqdomain special
prefixes at all.
Thanks,
tglx
^ permalink raw reply [flat|nested] 20+ messages in thread* Re: [PATCH v2 00/57] irqdomain: Cleanups and Documentation
2025-05-06 13:41 ` Thomas Gleixner
@ 2025-05-12 9:55 ` Jiri Slaby
0 siblings, 0 replies; 20+ messages in thread
From: Jiri Slaby @ 2025-05-12 9:55 UTC (permalink / raw)
To: Thomas Gleixner
Cc: maz, linux-kernel, Aaro Koskinen, Abhinav Kumar, Albert Ou,
Alexandre Belloni, Alexandre Ghiti, Alexandre Torgue,
Alex Deucher, Alex Shi, Alim Akhtar, Alvin Šipraga,
Alyssa Rosenzweig, amd-gfx, Amit Kucheria, Anatolij Gustschin,
Andi Shyti, Andreas Färber, Andreas Kemnade, Andrew Jeffery,
Andrew Lunn, Andy Shevchenko, AngeloGioacchino Del Regno,
Antoine Tenart, Anton Ivanov, Anup Patel, Arnd Bergmann, asahi,
Bartosz Golaszewski, Baruch Siach, Benjamin Herrenschmidt,
Bharat Kumar Gogada, Bjorn Andersson, Bjorn Helgaas,
Borislav Petkov, Broadcom internal kernel review list,
Claudiu Beznea, Corentin Chary, Daire McNamara, Daniel Golle,
Daniel Lezcano, Daniel Mack, Daniel Palmer, Dave Hansen,
David Airlie, David S. Miller, DENG Qingfang, Dinh Nguyen,
Dmitry Baryshkov, Dongliang Mu, Doug Berger, dri-devel,
Eddie James, Eric Dumazet, Fabio Estevam, Florian Fainelli,
Geoff Levand, Greg Kroah-Hartman, Gregory Clement, Guo Ren,
Hans de Goede, Haojian Zhuang, Haojian Zhuang, Heiko Stuebner,
Herve Codina, Hou Zhiqiang, H. Peter Anvin, Huacai Chen,
Changhuang Liang, Chen-Yu Tsai, Chester A. Unal,
Christian König, Christophe Leroy, Chris Zankel,
Ilpo Järvinen, Imre Kaloz, Ingo Molnar, Jakub Kicinski,
James Morse, Janne Grunau, Janusz Krzysztofik, Jaroslav Kysela,
Jassi Brar, Jernej Skrabec, Jerome Brunet, Jianjun Wang,
Jiawen Wu, Jiaxun Yang, Jim Quinlan, Jingoo Han, Joel Stanley,
Johannes Berg, John Crispin, John Paul Adrian Glaubitz,
Jonas Bonn, Jonathan Cameron, Jonathan Corbet, Jonathan Hunter,
Jonathan Neuschäfer, Joyce Ooi, Karthikeyan Mitran, Keerthy,
Kevin Hilman, Konrad Dybcio, Krzysztof Kozlowski,
Krzysztof Wilczyński, Kunihiko Hayashi, Lakshmi Sowjanya D,
Lars-Peter Clausen, Lee Jones, Liam Girdwood, Linus Walleij,
Linus Walleij, linux-amlogic, linux-arm-kernel, linux-arm-msm,
linux-doc, linux-edac, linux-gpio, linux-iio, linux-i2c,
linux-mediatek, linux-mips, linux-omap, linux-pci, linuxppc-dev,
linux-remoteproc, linux-riscv, linux-rpi-kernel, linux-sh,
linux-snps-arc, linux-sound, linux-stm32, linux-um,
linux-wireless, loongarch, Lorenzo Pieralisi, Ludovic Desroches,
Lukasz Luba, Luke D. Jones, Madhavan Srinivasan,
Manivannan Sadhasivam, Marek Behún, Marijn Suijten,
Mark Brown, Mark-PK Tsai, Martin Blumenstingl, Masami Hiramatsu,
Mathieu Poirier, Matthias Brugger, Mauro Carvalho Chehab,
Max Filippov, Maxime Coquelin, Mengyuan Lou, Michael Buesch,
Michael Ellerman, Michal Simek, Miodrag Dinic, Naveen N Rao,
Neil Armstrong, netdev, Nicolas Ferre, Nicolas Saenz Julienne,
Nicholas Piggin, Nikhil Agarwal, Nipun Gupta, Nishanth Menon,
Pali Rohár, Palmer Dabbelt, Paolo Abeni, Paul Cercueil,
Paul Walmsley, Pengutronix Kernel Team, Peter Rosin,
Philipp Zabel, Piotr Wojtaszczyk, platform-driver-x86,
Prasad Kumpatla, Qiang Zhao, Qin Jian, Rafael J. Wysocki,
Randy Dunlap, Ray Jui, Rengarajan Sundararajan, Richard Cochran,
Richard Weinberger, Rich Felker, Rob Clark, Robert Jarzmik,
Robert Richter, Rob Herring, Roger Quadros, Russell King,
Ryan Chen, Ryder Lee, Samuel Holland, Santosh Shilimkar,
Sascha Hauer, Scott Branden, Scott Wood, Sean Paul, Sean Wang,
Sean Wang, Sebastian Hesselbarth, Sergio Paracuellos, Shawn Guo,
Shawn Lin, Siddharth Vadapalli, Simona Vetter, Stafford Horne,
Stefan Kristiansson, Stephen Boyd, Sven Peter, Takashi Iwai,
Talel Shenhar, Tero Kristo, Thangaraj Samynathan, Thara Gopinath,
Thierry Reding, Thomas Bogendoerfer, Thomas Petazzoni, Toan Le,
Tony Lindgren, Tony Luck, UNGLinuxDriver, Uwe Kleine-König,
Vignesh Raghavendra, Vineet Gupta, Vladimir Oltean,
Vladimir Zapolskiy, WANG Xuerui, Woojung Huh, x86, Yanteng Si,
Yoshinori Sato, Zhang Rui
On 06. 05. 25, 15:41, Thomas Gleixner wrote:
> On Wed, Mar 19 2025 at 10:28, Jiri Slaby wrote:
>
>> Hi,
>>
>> tl;dr if patches are agreed upon, I ask subsys maintainers to take the
>> respective ones via their trees (as they are split per subsys), so that
>> the IRQ tree can take only the rest. That would minimize churn/conflicts
>> during merges.
>
> So. It's rc5 by now and I picked up everything
Good, thanks.
> which did not show up in next yet.
Which is the majority -- routing through subsystems didn't work as well
as I anticipated.
I planned to retry with v3 after the next merge window, but you were faster.
V3 contains a switch from nodes to dev_fwnode() in some cases. It
simplifies the code there. This did not get lost, I will send this
separately to maintainers once everything from this series settles in
the tree. I.e. likely after the next merge window.
> @Jiri, I fixed up all your subject prefixes as
>
> 'irqdomain: subsys: Switch to foo()'
>
> does not make any sense at all. These subsystems have their regular
> prefixes and these changes do not justify made up irqdomain special
> prefixes at all.
Yes.
thanks,
--
js
suse labs
^ permalink raw reply [flat|nested] 20+ messages in thread