提交 8528ab84 编写于 作者: M Michael Ellerman 提交者: Paul Mackerras

[POWERPC] Invert null match behaviour for irq_hosts

Currently if you don't specify a match callback for your irq_host it's
assumed you match everything. This is a kind of opt-out approach, and
turns out to be the exception rather than the rule.

So change the semantics to be opt-in, ie. you don't match anything unless
you provide a match callback.  This in itself isn't very useful, but will
allow us to provide a default match implementation in a subsequent patch.
Signed-off-by: NMichael Ellerman <michael@ellerman.id.au>
Signed-off-by: NPaul Mackerras <paulus@samba.org>
上级 52964f87
...@@ -523,7 +523,7 @@ struct irq_host *irq_find_host(struct device_node *node) ...@@ -523,7 +523,7 @@ struct irq_host *irq_find_host(struct device_node *node)
*/ */
spin_lock_irqsave(&irq_big_lock, flags); spin_lock_irqsave(&irq_big_lock, flags);
list_for_each_entry(h, &irq_hosts, link) list_for_each_entry(h, &irq_hosts, link)
if (h->ops->match == NULL || h->ops->match(h, node)) { if (h->ops->match != NULL && h->ops->match(h, node)) {
found = h; found = h;
break; break;
} }
......
...@@ -175,11 +175,18 @@ static int beatic_pic_host_xlate(struct irq_host *h, struct device_node *ct, ...@@ -175,11 +175,18 @@ static int beatic_pic_host_xlate(struct irq_host *h, struct device_node *ct,
return 0; return 0;
} }
static int beatic_pic_host_match(struct irq_host *h, struct device_node *np)
{
/* Match all */
return 1;
}
static struct irq_host_ops beatic_pic_host_ops = { static struct irq_host_ops beatic_pic_host_ops = {
.map = beatic_pic_host_map, .map = beatic_pic_host_map,
.remap = beatic_pic_host_remap, .remap = beatic_pic_host_remap,
.unmap = beatic_pic_host_unmap, .unmap = beatic_pic_host_unmap,
.xlate = beatic_pic_host_xlate, .xlate = beatic_pic_host_xlate,
.match = beatic_pic_host_match,
}; };
/* /*
......
...@@ -346,8 +346,15 @@ static int iseries_irq_host_map(struct irq_host *h, unsigned int virq, ...@@ -346,8 +346,15 @@ static int iseries_irq_host_map(struct irq_host *h, unsigned int virq,
return 0; return 0;
} }
static int iseries_irq_host_match(struct irq_host *h, struct device_node *np)
{
/* Match all */
return 1;
}
static struct irq_host_ops iseries_irq_host_ops = { static struct irq_host_ops iseries_irq_host_ops = {
.map = iseries_irq_host_map, .map = iseries_irq_host_map,
.match = iseries_irq_host_match,
}; };
/* /*
......
...@@ -673,9 +673,16 @@ static int ps3_host_map(struct irq_host *h, unsigned int virq, ...@@ -673,9 +673,16 @@ static int ps3_host_map(struct irq_host *h, unsigned int virq,
return 0; return 0;
} }
static int ps3_host_match(struct irq_host *h, struct device_node *np)
{
/* Match all */
return 1;
}
static struct irq_host_ops ps3_host_ops = { static struct irq_host_ops ps3_host_ops = {
.map = ps3_host_map, .map = ps3_host_map,
.unmap = ps3_host_unmap, .unmap = ps3_host_unmap,
.match = ps3_host_match,
}; };
void __init ps3_register_ipi_debug_brk(unsigned int cpu, unsigned int virq) void __init ps3_register_ipi_debug_brk(unsigned int cpu, unsigned int virq)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册