[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: Michael Ellerman <michael@ellerman.id.au> Signed-off-by: Paul Mackerras <paulus@samba.org>
This commit is contained in:
committed by
Paul Mackerras
parent
52964f87c6
commit
8528ab84eb
@@ -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,
|
|||||||
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,
|
|||||||
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,
|
|||||||
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)
|
||||||
|
Reference in New Issue
Block a user