Skip to content

Commit db01301

Browse files
committed
Merge tag 'irq-urgent-2025-12-12' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull irq fixes from Ingo Molnar: - Fix error code in the irqchip/mchp-eic driver - Fix setup_percpu_irq() affinity assumptions - Remove the unused irq_domain_add_tree() function * tag 'irq-urgent-2025-12-12' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: irqchip/mchp-eic: Fix error code in mchp_eic_domain_alloc() irqdomain: Delete irq_domain_add_tree() genirq: Allow NULL affinity for setup_percpu_irq()
2 parents edbe407 + 7dbc0d4 commit db01301

4 files changed

Lines changed: 4 additions & 21 deletions

File tree

Documentation/translations/zh_CN/core-api/irq/irq-domain.rst

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -109,10 +109,6 @@ irq_domain维护着从hwirq号到Linux IRQ的radix的树状映射。 当一个hw
109109
如果hwirq号可以非常大,树状映射是一个很好的选择,因为它不需要分配一个和最大hwirq
110110
号一样大的表。 缺点是,hwirq到IRQ号的查找取决于表中有多少条目。
111111

112-
irq_domain_add_tree()和irq_domain_create_tree()在功能上是等价的,除了第一
113-
个参数不同——前者接受一个Open Firmware特定的 'struct device_node' ,而后者接受
114-
一个更通用的抽象 'struct fwnode_handle' 。
115-
116112
很少有驱动应该需要这个映射。
117113

118114
无映射

drivers/irqchip/irq-mchp-eic.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@ static int mchp_eic_domain_alloc(struct irq_domain *domain, unsigned int virq,
170170

171171
ret = irq_domain_translate_twocell(domain, fwspec, &hwirq, &type);
172172
if (ret || hwirq >= MCHP_EIC_NIRQ)
173-
return ret;
173+
return ret ?: -EINVAL;
174174

175175
switch (type) {
176176
case IRQ_TYPE_EDGE_RISING:

include/linux/irqdomain.h

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -730,22 +730,6 @@ static inline void msi_device_domain_free_wired(struct irq_domain *domain, unsig
730730
}
731731
#endif
732732

733-
static inline struct irq_domain *irq_domain_add_tree(struct device_node *of_node,
734-
const struct irq_domain_ops *ops,
735-
void *host_data)
736-
{
737-
struct irq_domain_info info = {
738-
.fwnode = of_fwnode_handle(of_node),
739-
.hwirq_max = ~0U,
740-
.ops = ops,
741-
.host_data = host_data,
742-
};
743-
struct irq_domain *d;
744-
745-
d = irq_domain_instantiate(&info);
746-
return IS_ERR(d) ? NULL : d;
747-
}
748-
749733
static inline struct irq_domain *irq_domain_add_linear(struct device_node *of_node,
750734
unsigned int size,
751735
const struct irq_domain_ops *ops,

kernel/irq/manage.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2470,6 +2470,9 @@ int setup_percpu_irq(unsigned int irq, struct irqaction *act)
24702470
if (retval < 0)
24712471
return retval;
24722472

2473+
if (!act->affinity)
2474+
act->affinity = cpu_online_mask;
2475+
24732476
retval = __setup_irq(irq, desc, act);
24742477

24752478
if (retval)

0 commit comments

Comments
 (0)