Re: [PATCH v2 12/57] irqdomain: Make irq_domain_create_hierarchy() an inline

Ilpo Järvinen
2025-03-19T09:44:45Z

On Wed, 19 Mar 2025, Jiri Slaby (SUSE) wrote:

> There is no reason to export the function as an extra symbol. It is
> simple enough and is just a wrapper to already exported functions.
>
> Therefore, switch the exported function to an inline.
>
> Signed-off-by: Jiri Slaby (SUSE) <jirislaby@kernel.org>
> ---
> include/linux/irqdomain.h | 45 +++++++++++++++++++++++++++++++++------
> kernel/irq/irqdomain.c | 41 -----------------------------------
> 2 files changed, 39 insertions(+), 47 deletions(-)
>
> diff --git a/include/linux/irqdomain.h b/include/linux/irqdomain.h
> index 5eaaf74647ed..1480951a690b 100644
> --- a/include/linux/irqdomain.h
> +++ b/include/linux/irqdomain.h
> @@ -591,12 +591,45 @@ void irq_domain_set_info(struct irq_domain *domain, unsigned int virq,
> void *handler_data, const char *handler_name);
> void irq_domain_reset_irq_data(struct irq_data *irq_data);
> #ifdef CONFIG_IRQ_DOMAIN_HIERARCHY
> -struct irq_domain *irq_domain_create_hierarchy(struct irq_domain *parent,
> - unsigned int flags,
> - unsigned int size,
> - struct fwnode_handle *fwnode,
> - const struct irq_domain_ops *ops,
> - void *host_data);
> +/**
> + * irq_domain_create_hierarchy - Add a irqdomain into the hierarchy
> + * @parent: Parent irq domain to associate with the new domain
> + * @flags: Irq domain flags associated to the domain
> + * @size: Size of the domain. See below
> + * @fwnode: Optional fwnode of the interrupt controller
> + * @ops: Pointer to the interrupt domain callbacks
> + * @host_data: Controller private data pointer
> + *
> + * If @size is 0 a tree domain is created, otherwise a linear domain.
> + *
> + * 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.

*
* Return: ...

...is what kerneldoc documentation suggest is the right formatting.

(I know that was just copied form the original comment.)

> + */
> +static inline struct irq_domain *irq_domain_create_hierarchy(struct irq_domain *parent,
> + unsigned int flags,
> + unsigned int size,
> + struct fwnode_handle *fwnode,
> + const struct irq_domain_ops *ops,
> + void *host_data)
> +{
> + struct irq_domain_info info = {
> + .fwnode = fwnode,
> + .size = size,
> + .hwirq_max = size,
> + .ops = ops,
> + .host_data = host_data,
> + .domain_flags = flags,
> + .parent = parent,
> + };
> + struct irq_domain *d;
> +
> + if (!info.size)
> + info.hwirq_max = ~0U;
> +
> + d = irq_domain_instantiate(&info);
> + return IS_ERR(d) ? NULL : d;
> +}
>
> static inline struct irq_domain *irq_domain_add_hierarchy(struct irq_domain *parent,
> unsigned int flags,
> diff --git a/kernel/irq/irqdomain.c b/kernel/irq/irqdomain.c
> index abed179737c2..b5e111776285 100644
> --- a/kernel/irq/irqdomain.c
> +++ b/kernel/irq/irqdomain.c
> @@ -1252,47 +1252,6 @@ void irq_domain_reset_irq_data(struct irq_data *irq_data)
> EXPORT_SYMBOL_GPL(irq_domain_reset_irq_data);
>
> #ifdef CONFIG_IRQ_DOMAIN_HIERARCHY
> -/**
> - * irq_domain_create_hierarchy - Add a irqdomain into the hierarchy
> - * @parent: Parent irq domain to associate with the new domain
> - * @flags: Irq domain flags associated to the domain
> - * @size: Size of the domain. See below
> - * @fwnode: Optional fwnode of the interrupt controller
> - * @ops: Pointer to the interrupt domain callbacks
> - * @host_data: Controller private data pointer
> - *
> - * If @size is 0 a tree domain is created, otherwise a linear domain.
> - *
> - * 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.
> - */
> -struct irq_domain *irq_domain_create_hierarchy(struct irq_domain *parent,
> - unsigned int flags,
> - unsigned int size,
> - struct fwnode_handle *fwnode,
> - const struct irq_domain_ops *ops,
> - void *host_data)
> -{
> - struct irq_domain_info info = {
> - .fwnode = fwnode,
> - .size = size,
> - .hwirq_max = size,
> - .ops = ops,
> - .host_data = host_data,
> - .domain_flags = flags,
> - .parent = parent,
> - };
> - struct irq_domain *d;
> -
> - if (!info.size)
> - info.hwirq_max = ~0U;
> -
> - d = irq_domain_instantiate(&info);
> - return IS_ERR(d) ? NULL : d;
> -}
> -EXPORT_SYMBOL_GPL(irq_domain_create_hierarchy);
> -
> static void irq_domain_insert_irq(int virq)
> {
> struct irq_data *data;
>

--
i.