unsigned int            isu_size;
        unsigned int            isu_shift;
        unsigned int            isu_mask;
-       unsigned int            irq_count;
        /* Number of sources */
        unsigned int            num_sources;
        /* default senses array */
 #define MPIC_ENABLE_MCK                        0x00000200
 /* Disable bias among target selection, spread interrupts evenly */
 #define MPIC_NO_BIAS                   0x00000400
-/* Ignore NIRQS as reported by FRR */
-#define MPIC_BROKEN_FRR_NIRQS          0x00000800
 /* Destination only supports a single CPU at a time */
 #define MPIC_SINGLE_DEST_CPU           0x00001000
 /* Enable CoreInt delivery of interrupts */
 
 void __init corenet_ds_pic_init(void)
 {
        struct mpic *mpic;
-       unsigned int flags = MPIC_BIG_ENDIAN |
-                               MPIC_BROKEN_FRR_NIRQS | MPIC_SINGLE_DEST_CPU;
+       unsigned int flags = MPIC_BIG_ENDIAN | MPIC_SINGLE_DEST_CPU;
 
        if (ppc_md.get_irq == mpic_get_coreint_irq)
                flags |= MPIC_ENABLE_COREINT;
 
 {
        struct mpic *mpic = mpic_alloc(NULL, 0,
                          MPIC_WANTS_RESET |
-                         MPIC_BIG_ENDIAN | MPIC_BROKEN_FRR_NIRQS,
+                         MPIC_BIG_ENDIAN,
                        0, 256, " OpenPIC  ");
        BUG_ON(mpic == NULL);
        mpic_init(mpic);
 
 
        if (of_flat_dt_is_compatible(root, "fsl,MPC8572DS-CAMP")) {
                mpic = mpic_alloc(NULL, 0,
-                       MPIC_BIG_ENDIAN | MPIC_BROKEN_FRR_NIRQS |
+                       MPIC_BIG_ENDIAN |
                        MPIC_SINGLE_DEST_CPU,
                        0, 256, " OpenPIC  ");
        } else {
                mpic = mpic_alloc(NULL, 0,
                          MPIC_WANTS_RESET |
-                         MPIC_BIG_ENDIAN | MPIC_BROKEN_FRR_NIRQS |
+                         MPIC_BIG_ENDIAN |
                          MPIC_SINGLE_DEST_CPU,
                        0, 256, " OpenPIC  ");
        }
 
 {
        struct mpic *mpic = mpic_alloc(NULL, 0,
                        MPIC_WANTS_RESET | MPIC_BIG_ENDIAN |
-                       MPIC_BROKEN_FRR_NIRQS | MPIC_SINGLE_DEST_CPU,
+                       MPIC_SINGLE_DEST_CPU,
                        0, 256, " OpenPIC  ");
        BUG_ON(mpic == NULL);
 
 
 
        if (of_flat_dt_is_compatible(root, "fsl,MPC85XXRDB-CAMP")) {
                mpic = mpic_alloc(NULL, 0,
-                       MPIC_BIG_ENDIAN | MPIC_BROKEN_FRR_NIRQS |
+                       MPIC_BIG_ENDIAN |
                        MPIC_SINGLE_DEST_CPU,
                        0, 256, " OpenPIC  ");
        } else {
                mpic = mpic_alloc(NULL, 0,
                  MPIC_WANTS_RESET |
-                 MPIC_BIG_ENDIAN | MPIC_BROKEN_FRR_NIRQS |
+                 MPIC_BIG_ENDIAN |
                  MPIC_SINGLE_DEST_CPU,
                  0, 256, " OpenPIC  ");
        }
 
 {
        struct mpic *mpic = mpic_alloc(NULL, 0,
          MPIC_WANTS_RESET | MPIC_BIG_ENDIAN |
-         MPIC_BROKEN_FRR_NIRQS | MPIC_SINGLE_DEST_CPU,
+         MPIC_SINGLE_DEST_CPU,
          0, 256, " OpenPIC  ");
 
        BUG_ON(mpic == NULL);
 
 {
        struct mpic *mpic = mpic_alloc(NULL, 0,
                MPIC_WANTS_RESET |
-               MPIC_BIG_ENDIAN | MPIC_BROKEN_FRR_NIRQS |
+               MPIC_BIG_ENDIAN |
                MPIC_SINGLE_DEST_CPU,
                0, 256, " OpenPIC  ");
        BUG_ON(mpic == NULL);
 
 {
        struct mpic *mpic = mpic_alloc(NULL, 0,
                MPIC_WANTS_RESET | MPIC_BIG_ENDIAN |
-               MPIC_BROKEN_FRR_NIRQS | MPIC_SINGLE_DEST_CPU,
+               MPIC_SINGLE_DEST_CPU,
                0, 256, " OpenPIC  ");
 
        BUG_ON(mpic == NULL);
 
 {
        struct mpic *mpic = mpic_alloc(NULL, 0,
                          MPIC_WANTS_RESET |
-                         MPIC_BIG_ENDIAN | MPIC_BROKEN_FRR_NIRQS,
+                         MPIC_BIG_ENDIAN,
                        0, 256, " OpenPIC  ");
        BUG_ON(mpic == NULL);
        mpic_init(mpic);
 
 
        struct mpic *mpic = mpic_alloc(NULL, 0,
                        MPIC_WANTS_RESET | MPIC_BIG_ENDIAN |
-                       MPIC_BROKEN_FRR_NIRQS | MPIC_SINGLE_DEST_CPU,
+                       MPIC_SINGLE_DEST_CPU,
                        0, 256, " MPIC     ");
        BUG_ON(mpic == NULL);
 
 
        mpic = mpic_alloc(NULL, 0,
                        MPIC_BIG_ENDIAN | MPIC_WANTS_RESET |
                        MPIC_SPV_EOI | MPIC_NO_PTHROU_DIS | MPIC_REGSET_TSI108,
-                       24,
-                       NR_IRQS-4, /* num_sources used */
+                       24, 0,
                        "Tsi108_PIC");
 
        BUG_ON(mpic == NULL);
 
        struct mpic *mpic;
 
        mpic = mpic_alloc(NULL, 0, MPIC_WANTS_RESET,
-                       4, 32, " EPIC     ");
+                       4, 0, " EPIC     ");
        BUG_ON(mpic == NULL);
 
        /* PCI IRQs */
 
        mpic = mpic_alloc(NULL, 0,
                        MPIC_BIG_ENDIAN | MPIC_WANTS_RESET |
                        MPIC_SPV_EOI | MPIC_NO_PTHROU_DIS | MPIC_REGSET_TSI108,
-                       24,
-                       NR_IRQS-4, /* num_sources used */
+                       24, 0,
                        "Tsi108_PIC");
 
        BUG_ON(mpic == NULL);
 
        struct mpic *mpic;
 
        mpic = mpic_alloc(NULL, 0, MPIC_WANTS_RESET,
-                       16, 32, " OpenPIC  ");
+                       16, 0, " OpenPIC  ");
        BUG_ON(mpic == NULL);
 
        /*
 
        BUG_ON(openpic_addr == 0);
 
        /* Setup the openpic driver */
-       mpic = mpic_alloc(pSeries_mpic_node, openpic_addr, 0,
-                         16, 250, /* isu size, irq count */
-                         " MPIC     ");
+       mpic = mpic_alloc(pSeries_mpic_node, openpic_addr, 0, 16, 0, " MPIC     ");
        BUG_ON(mpic == NULL);
 
        /* Add ISUs */
 
        DBG("mpic: set_irq_type(mpic:@%p,virq:%d,src:0x%x,type:0x%x)\n",
            mpic, d->irq, src, flow_type);
 
-       if (src >= mpic->irq_count)
+       if (src >= mpic->num_sources)
                return -EINVAL;
 
        if (flow_type == IRQ_TYPE_NONE)
        DBG("mpic: set_vector(mpic:@%p,virq:%d,src:%d,vector:0x%x)\n",
            mpic, virq, src, vector);
 
-       if (src >= mpic->irq_count)
+       if (src >= mpic->num_sources)
                return;
 
        vecpri = mpic_irq_read(src, MPIC_INFO(IRQ_VECTOR_PRI));
        DBG("mpic: set_destination(mpic:@%p,virq:%d,src:%d,cpuid:0x%x)\n",
            mpic, virq, src, cpuid);
 
-       if (src >= mpic->irq_count)
+       if (src >= mpic->num_sources)
                return;
 
        mpic_irq_write(src, MPIC_INFO(IRQ_DESTINATION), 1 << cpuid);
                return 0;
        }
 
-       if (hw >= mpic->irq_count)
+       if (hw >= mpic->num_sources)
                return -EINVAL;
 
        mpic_msi_reserve_hwirq(mpic, hw);
        mpic->hc_tm.name = name;
 
        mpic->isu_size = isu_size;
-       mpic->irq_count = irq_count;
        mpic->num_sources = 0; /* so far */
 
        if (mpic->flags & MPIC_LARGE_VECTORS)
         */
        greg_feature = mpic_read(mpic->gregs, MPIC_INFO(GREG_FEATURE_0));
        if (isu_size == 0) {
-               if (mpic->flags & MPIC_BROKEN_FRR_NIRQS)
-                       mpic->num_sources = mpic->irq_count;
+               if (irq_count)
+                       mpic->num_sources = irq_count;
                else
                        mpic->num_sources =
                                ((greg_feature & MPIC_GREG_FEATURE_LAST_SRC_MASK)
                               (mpic->ipi_vecs[0] + i));
        }
 
-       /* Initialize interrupt sources */
-       if (mpic->irq_count == 0)
-               mpic->irq_count = mpic->num_sources;
-
        /* Do the HT PIC fixups on U3 broken mpic */
        DBG("MPIC flags: %x\n", mpic->flags);
        if ((mpic->flags & MPIC_U3_HT_IRQS) && !(mpic->flags & MPIC_SECONDARY)) {
 
        for (i = 100; i < 105; i++)
                msi_bitmap_reserve_hwirq(&mpic->msi_bitmap, i);
 
-       for (i = 124; i < mpic->irq_count; i++)
+       for (i = 124; i < mpic->num_sources; i++)
                msi_bitmap_reserve_hwirq(&mpic->msi_bitmap, i);
 
 
 {
        int rc;
 
-       rc = msi_bitmap_alloc(&mpic->msi_bitmap, mpic->irq_count,
+       rc = msi_bitmap_alloc(&mpic->msi_bitmap, mpic->num_sources,
                              mpic->irqhost->of_node);
        if (rc)
                return rc;