*/
        spin_lock_irqsave(&irq_big_lock, flags);
        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;
                        break;
                }
 
        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 = {
        .map = beatic_pic_host_map,
        .remap = beatic_pic_host_remap,
        .unmap = beatic_pic_host_unmap,
        .xlate = beatic_pic_host_xlate,
+       .match = beatic_pic_host_match,
 };
 
 /*
 
        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 = {
        .map = iseries_irq_host_map,
+       .match = iseries_irq_host_match,
 };
 
 /*
 
        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 = {
        .map = ps3_host_map,
        .unmap = ps3_host_unmap,
+       .match = ps3_host_match,
 };
 
 void __init ps3_register_ipi_debug_brk(unsigned int cpu, unsigned int virq)