aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIngo Molnar <mingo@kernel.org>2025-12-11 08:06:44 +0100
committerIngo Molnar <mingo@kernel.org>2025-12-11 08:06:45 +0100
commitb9f4c59a0a5153b0a802f3e1a92e16b96d767cf0 (patch)
tree3ce88a9957aec998552672bd0ae04600193c3e97
parent79fa9f2c1ee5f901ca6b96605a774e70d531200d (diff)
parent7dbc0d40d8347bd9de55c904f59ea44bcc8dedb7 (diff)
downloadtip-b9f4c59a0a5153b0a802f3e1a92e16b96d767cf0.tar.gz
Merge branch into tip/master: 'irq/urgent'
# New commits in irq/urgent: 7dbc0d40d834 ("irqchip/mchp-eic: Fix error code in mchp_eic_domain_alloc()") 55026a9670ce ("irqdomain: Delete irq_domain_add_tree()") 89acaa5537a2 ("genirq: Allow NULL affinity for setup_percpu_irq()") Signed-off-by: Ingo Molnar <mingo@kernel.org>
-rw-r--r--Documentation/translations/zh_CN/core-api/irq/irq-domain.rst4
-rw-r--r--drivers/irqchip/irq-mchp-eic.c2
-rw-r--r--include/linux/irqdomain.h16
-rw-r--r--kernel/irq/manage.c3
4 files changed, 4 insertions, 21 deletions
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 4a2d3b27aa4d21..aaefeda0e16444 100644
--- a/Documentation/translations/zh_CN/core-api/irq/irq-domain.rst
+++ b/Documentation/translations/zh_CN/core-api/irq/irq-domain.rst
@@ -109,10 +109,6 @@ irq_domain维护着从hwirq号到Linux IRQ的radix的树状映射。 当一个hw
如果hwirq号可以非常大,树状映射是一个很好的选择,因为它不需要分配一个和最大hwirq
号一样大的表。 缺点是,hwirq到IRQ号的查找取决于表中有多少条目。
-irq_domain_add_tree()和irq_domain_create_tree()在功能上是等价的,除了第一
-个参数不同——前者接受一个Open Firmware特定的 'struct device_node' ,而后者接受
-一个更通用的抽象 'struct fwnode_handle' 。
-
很少有驱动应该需要这个映射。
无映射
diff --git a/drivers/irqchip/irq-mchp-eic.c b/drivers/irqchip/irq-mchp-eic.c
index 2474fa467a059e..31093a8ab67c3a 100644
--- a/drivers/irqchip/irq-mchp-eic.c
+++ b/drivers/irqchip/irq-mchp-eic.c
@@ -170,7 +170,7 @@ static int mchp_eic_domain_alloc(struct irq_domain *domain, unsigned int virq,
ret = irq_domain_translate_twocell(domain, fwspec, &hwirq, &type);
if (ret || hwirq >= MCHP_EIC_NIRQ)
- return ret;
+ return ret ?: -EINVAL;
switch (type) {
case IRQ_TYPE_EDGE_RISING:
diff --git a/include/linux/irqdomain.h b/include/linux/irqdomain.h
index 952d3c8dd6b7a2..62f81bbeb4906b 100644
--- a/include/linux/irqdomain.h
+++ b/include/linux/irqdomain.h
@@ -730,22 +730,6 @@ static inline void msi_device_domain_free_wired(struct irq_domain *domain, unsig
}
#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_add_linear(struct device_node *of_node,
unsigned int size,
const struct irq_domain_ops *ops,
diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c
index 0bb29316b4362c..8b1b4c8a4f54c5 100644
--- a/kernel/irq/manage.c
+++ b/kernel/irq/manage.c
@@ -2470,6 +2470,9 @@ int setup_percpu_irq(unsigned int irq, struct irqaction *act)
if (retval < 0)
return retval;
+ if (!act->affinity)
+ act->affinity = cpu_online_mask;
+
retval = __setup_irq(irq, desc, act);
if (retval)