powerpc/mpic: Remove duplicate MPIC_WANTS_RESET flag
authorKyle Moffett <Kyle.D.Moffett@boeing.com>
Thu, 22 Dec 2011 10:19:14 +0000 (10:19 +0000)
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>
Wed, 22 Feb 2012 23:50:00 +0000 (10:50 +1100)
There are two separate flags controlling whether or not the MPIC is
reset during initialization, which is completely unnecessary, and only
one of them can be specified in the device tree.

Also, most platforms in-tree right now do actually want to reset the
MPIC during initialization anyways, which means lots of duplicate code
passing the MPIC_WANTS_RESET flag.

Fix all of the callers which currently do not pass the MPIC_WANTS_RESET
flag to pass the MPIC_NO_RESET flag, then remove the MPIC_WANTS_RESET
flag and make the code reset the MPIC by default.

Signed-off-by: Kyle Moffett <Kyle.D.Moffett@boeing.com>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
32 files changed:
arch/powerpc/include/asm/mpic.h
arch/powerpc/platforms/44x/currituck.c
arch/powerpc/platforms/44x/iss4xx.c
arch/powerpc/platforms/85xx/corenet_ds.c
arch/powerpc/platforms/85xx/ksi8560.c
arch/powerpc/platforms/85xx/mpc8536_ds.c
arch/powerpc/platforms/85xx/mpc85xx_ads.c
arch/powerpc/platforms/85xx/mpc85xx_cds.c
arch/powerpc/platforms/85xx/mpc85xx_ds.c
arch/powerpc/platforms/85xx/mpc85xx_mds.c
arch/powerpc/platforms/85xx/mpc85xx_rdb.c
arch/powerpc/platforms/85xx/p1010rdb.c
arch/powerpc/platforms/85xx/p1022_ds.c
arch/powerpc/platforms/85xx/p1023_rds.c
arch/powerpc/platforms/85xx/sbc8548.c
arch/powerpc/platforms/85xx/sbc8560.c
arch/powerpc/platforms/85xx/socrates.c
arch/powerpc/platforms/85xx/stx_gp3.c
arch/powerpc/platforms/85xx/tqm85xx.c
arch/powerpc/platforms/85xx/xes_mpc85xx.c
arch/powerpc/platforms/86xx/pic.c
arch/powerpc/platforms/cell/setup.c
arch/powerpc/platforms/chrp/setup.c
arch/powerpc/platforms/embedded6xx/holly.c
arch/powerpc/platforms/embedded6xx/linkstation.c
arch/powerpc/platforms/embedded6xx/mpc7448_hpc2.c
arch/powerpc/platforms/embedded6xx/storcenter.c
arch/powerpc/platforms/maple/setup.c
arch/powerpc/platforms/pasemi/setup.c
arch/powerpc/platforms/powermac/pic.c
arch/powerpc/platforms/pseries/setup.c
arch/powerpc/sysdev/mpic.c

index 2ebac31d1bbdeb5eb728a624d101b4aba4f1a5f1..d7e3fec343d8b3e3eb4d46c5e7109c31c4f4c651 100644 (file)
@@ -348,8 +348,6 @@ struct mpic
 #define MPIC_U3_HT_IRQS                        0x00000004
 /* Broken IPI registers (autodetected) */
 #define MPIC_BROKEN_IPI                        0x00000008
-/* MPIC wants a reset */
-#define MPIC_WANTS_RESET               0x00000010
 /* Spurious vector requires EOI */
 #define MPIC_SPV_EOI                   0x00000020
 /* No passthrough disable */
@@ -366,9 +364,7 @@ struct mpic
 #define MPIC_SINGLE_DEST_CPU           0x00001000
 /* Enable CoreInt delivery of interrupts */
 #define MPIC_ENABLE_COREINT            0x00002000
-/* Disable resetting of the MPIC.
- * NOTE: This flag trumps MPIC_WANTS_RESET.
- */
+/* Do not reset the MPIC during initialization */
 #define MPIC_NO_RESET                  0x00004000
 /* Freescale MPIC (compatible includes "fsl,mpic") */
 #define MPIC_FSL                       0x00008000
index 3f6229b5dee027df0e8b33e7f42827f3dd77918a..583e67fee37ee1fd4daddc84ea3064fc4178ed6c 100644 (file)
@@ -83,7 +83,7 @@ static void __init ppc47x_init_irq(void)
                 * device-tree, just pass 0 to all arguments
                 */
                struct mpic *mpic =
-                       mpic_alloc(np, 0, 0, 0, 0, " MPIC     ");
+                       mpic_alloc(np, 0, MPIC_NO_RESET, 0, 0, " MPIC     ");
                BUG_ON(mpic == NULL);
                mpic_init(mpic);
                ppc_md.get_irq = mpic_get_irq;
index 5b8cdbb82f80f486733149ddaca8d03012c28d06..a28a8629727eed875133f168a7951b9337e58802 100644 (file)
@@ -71,8 +71,7 @@ static void __init iss4xx_init_irq(void)
                /* The MPIC driver will get everything it needs from the
                 * device-tree, just pass 0 to all arguments
                 */
-               struct mpic *mpic = mpic_alloc(np, 0, 0, 0, 0,
-                                              " MPIC     ");
+               struct mpic *mpic = mpic_alloc(np, 0, MPIC_NO_RESET, 0, 0, " MPIC     ");
                BUG_ON(mpic == NULL);
                mpic_init(mpic);
                ppc_md.get_irq = mpic_get_irq;
index 768479b986d47bba04bfaa6c6a8edd87f5ab8ca9..df69e99e511c2d04232850900116a2be84503755 100644 (file)
@@ -36,7 +36,8 @@
 void __init corenet_ds_pic_init(void)
 {
        struct mpic *mpic;
-       unsigned int flags = MPIC_BIG_ENDIAN | MPIC_SINGLE_DEST_CPU;
+       unsigned int flags = MPIC_BIG_ENDIAN | MPIC_SINGLE_DEST_CPU |
+               MPIC_NO_RESET;
 
        if (ppc_md.get_irq == mpic_get_coreint_irq)
                flags |= MPIC_ENABLE_COREINT;
index 20f75d7819c6776b390a90d0d0689d3f8d9bd201..60120e55da41190d9a1d5a776a7d14e09019229e 100644 (file)
@@ -57,8 +57,7 @@ static void machine_restart(char *cmd)
 
 static void __init ksi8560_pic_init(void)
 {
-       struct mpic *mpic = mpic_alloc(NULL, 0,
-                       MPIC_WANTS_RESET | MPIC_BIG_ENDIAN,
+       struct mpic *mpic = mpic_alloc(NULL, 0, MPIC_BIG_ENDIAN,
                        0, 256, " OpenPIC  ");
        BUG_ON(mpic == NULL);
        mpic_init(mpic);
index d5373e0c0f7d7daf91b34ed28e11bfa3c8b69ec3..f58872688d8f99a01d59094eeec93d66501b8d1a 100644 (file)
@@ -36,9 +36,7 @@
 
 void __init mpc8536_ds_pic_init(void)
 {
-       struct mpic *mpic = mpic_alloc(NULL, 0,
-                         MPIC_WANTS_RESET |
-                         MPIC_BIG_ENDIAN,
+       struct mpic *mpic = mpic_alloc(NULL, 0, MPIC_BIG_ENDIAN,
                        0, 256, " OpenPIC  ");
        BUG_ON(mpic == NULL);
        mpic_init(mpic);
index 3bebb5173bfcb87f98022d675a911d7c33110975..d19f675cb369f886978e0763ff891aa7f1474f9d 100644 (file)
@@ -50,8 +50,7 @@ static int mpc85xx_exclude_device(struct pci_controller *hose,
 
 static void __init mpc85xx_ads_pic_init(void)
 {
-       struct mpic *mpic = mpic_alloc(NULL, 0,
-                       MPIC_WANTS_RESET | MPIC_BIG_ENDIAN,
+       struct mpic *mpic = mpic_alloc(NULL, 0, MPIC_BIG_ENDIAN,
                        0, 256, " OpenPIC  ");
        BUG_ON(mpic == NULL);
        mpic_init(mpic);
index 40f03da616a9e8c38884f359f12a58c390f115ae..02d97e31c18c2b27eaffe9da5506937158d4b161 100644 (file)
@@ -188,8 +188,7 @@ static struct irqaction mpc85xxcds_8259_irqaction = {
 static void __init mpc85xx_cds_pic_init(void)
 {
        struct mpic *mpic;
-       mpic = mpic_alloc(NULL, 0,
-                       MPIC_WANTS_RESET | MPIC_BIG_ENDIAN,
+       mpic = mpic_alloc(NULL, 0, MPIC_BIG_ENDIAN,
                        0, 256, " OpenPIC  ");
        BUG_ON(mpic == NULL);
        mpic_init(mpic);
index 528b9a09e149a6406d28042985afce96eeed3be2..6e23e3e34bd94bf4bc501c6d6ec0ec2a142c3dd2 100644 (file)
@@ -72,12 +72,12 @@ void __init mpc85xx_ds_pic_init(void)
 
        if (of_flat_dt_is_compatible(root, "fsl,MPC8572DS-CAMP")) {
                mpic = mpic_alloc(NULL, 0,
+                       MPIC_NO_RESET |
                        MPIC_BIG_ENDIAN |
                        MPIC_SINGLE_DEST_CPU,
                        0, 256, " OpenPIC  ");
        } else {
                mpic = mpic_alloc(NULL, 0,
-                         MPIC_WANTS_RESET |
                          MPIC_BIG_ENDIAN |
                          MPIC_SINGLE_DEST_CPU,
                        0, 256, " OpenPIC  ");
index a0cb7707c5b24097b83db7ea410e5b23cb0fd0d5..57aceb5d273e4607f11cb67f09d6a5091db460d1 100644 (file)
@@ -434,8 +434,7 @@ machine_arch_initcall(p1021_mds, swiotlb_setup_bus_notifier);
 
 static void __init mpc85xx_mds_pic_init(void)
 {
-       struct mpic *mpic = mpic_alloc(NULL, 0,
-                       MPIC_WANTS_RESET | MPIC_BIG_ENDIAN |
+       struct mpic *mpic = mpic_alloc(NULL, 0, MPIC_BIG_ENDIAN |
                        MPIC_SINGLE_DEST_CPU,
                        0, 256, " OpenPIC  ");
        BUG_ON(mpic == NULL);
index a23f6f30993c3a6184f3284b660079276cdb1d3c..407c7391e360c3fe8be36df9d9c33a715999b047 100644 (file)
@@ -48,13 +48,12 @@ void __init mpc85xx_rdb_pic_init(void)
        unsigned long root = of_get_flat_dt_root();
 
        if (of_flat_dt_is_compatible(root, "fsl,MPC85XXRDB-CAMP")) {
-               mpic = mpic_alloc(NULL, 0,
+               mpic = mpic_alloc(NULL, 0, MPIC_NO_RESET |
                        MPIC_BIG_ENDIAN |
                        MPIC_SINGLE_DEST_CPU,
                        0, 256, " OpenPIC  ");
        } else {
                mpic = mpic_alloc(NULL, 0,
-                 MPIC_WANTS_RESET |
                  MPIC_BIG_ENDIAN |
                  MPIC_SINGLE_DEST_CPU,
                  0, 256, " OpenPIC  ");
index 8650773c839024336448e21b554c778d9170dc75..d8bd6563d9cac92a01d9bc7edc2236242a617787 100644 (file)
@@ -32,8 +32,7 @@
 
 void __init p1010_rdb_pic_init(void)
 {
-       struct mpic *mpic = mpic_alloc(NULL, 0,
-         MPIC_WANTS_RESET | MPIC_BIG_ENDIAN |
+       struct mpic *mpic = mpic_alloc(NULL, 0, MPIC_BIG_ENDIAN |
          MPIC_SINGLE_DEST_CPU,
          0, 256, " OpenPIC  ");
 
index 28266ab619db095bcf590b30a1ed85fb1643b498..63ba79053960a87dce0556f3798a398bf292605b 100644 (file)
@@ -242,9 +242,7 @@ p1022ds_valid_monitor_port(enum fsl_diu_monitor_port port)
 
 void __init p1022_ds_pic_init(void)
 {
-       struct mpic *mpic = mpic_alloc(NULL, 0,
-               MPIC_WANTS_RESET |
-               MPIC_BIG_ENDIAN |
+       struct mpic *mpic = mpic_alloc(NULL, 0, MPIC_BIG_ENDIAN |
                MPIC_SINGLE_DEST_CPU,
                0, 256, " OpenPIC  ");
        BUG_ON(mpic == NULL);
index b1cd6a28901f6b5f5292340de8b99b001112b50a..6b07398e4369f9ce7f1c690d3bdbc0168bfb350c 100644 (file)
@@ -93,8 +93,7 @@ machine_device_initcall(p1023_rds, mpc85xx_common_publish_devices);
 
 static void __init mpc85xx_rds_pic_init(void)
 {
-       struct mpic *mpic = mpic_alloc(NULL, 0,
-               MPIC_WANTS_RESET | MPIC_BIG_ENDIAN |
+       struct mpic *mpic = mpic_alloc(NULL, 0, MPIC_BIG_ENDIAN |
                MPIC_SINGLE_DEST_CPU,
                0, 256, " OpenPIC  ");
 
index 184a50784617fdf1b869138edb6cc72c745a407f..1677b8a22677ffe8e1d50a9497520c7babfb8823 100644 (file)
@@ -54,8 +54,7 @@ static int sbc_rev;
 
 static void __init sbc8548_pic_init(void)
 {
-       struct mpic *mpic = mpic_alloc(NULL, 0,
-                       MPIC_WANTS_RESET | MPIC_BIG_ENDIAN,
+       struct mpic *mpic = mpic_alloc(NULL, 0, MPIC_BIG_ENDIAN,
                        0, 256, " OpenPIC  ");
        BUG_ON(mpic == NULL);
        mpic_init(mpic);
index 940752e93051718b789772450949d0c25c67a80e..3c3bbcc275669b45a79c4d85cd4928a9b88b7285 100644 (file)
@@ -41,8 +41,7 @@
 
 static void __init sbc8560_pic_init(void)
 {
-       struct mpic *mpic = mpic_alloc(NULL, 0,
-                       MPIC_WANTS_RESET | MPIC_BIG_ENDIAN,
+       struct mpic *mpic = mpic_alloc(NULL, 0, MPIC_BIG_ENDIAN,
                        0, 256, " OpenPIC  ");
        BUG_ON(mpic == NULL);
        mpic_init(mpic);
index 18f635906b2762f8e0a9af23247bdf4c848458f9..b719192177560da2fcc5fb6f8cafebb0ae283729 100644 (file)
@@ -48,8 +48,7 @@ static void __init socrates_pic_init(void)
 {
        struct device_node *np;
 
-       struct mpic *mpic = mpic_alloc(NULL, 0,
-                       MPIC_WANTS_RESET | MPIC_BIG_ENDIAN,
+       struct mpic *mpic = mpic_alloc(NULL, 0, MPIC_BIG_ENDIAN,
                        0, 256, " OpenPIC  ");
        BUG_ON(mpic == NULL);
        mpic_init(mpic);
index e9e5234b4e76992ddca5121bf418583f406e5f35..27ca3a7b04abb1fafa8d3346bb0d0b3378b3e2c1 100644 (file)
@@ -48,8 +48,7 @@
 
 static void __init stx_gp3_pic_init(void)
 {
-       struct mpic *mpic = mpic_alloc(NULL, 0,
-                       MPIC_WANTS_RESET | MPIC_BIG_ENDIAN,
+       struct mpic *mpic = mpic_alloc(NULL, 0, MPIC_BIG_ENDIAN,
                        0, 256, " OpenPIC  ");
        BUG_ON(mpic == NULL);
        mpic_init(mpic);
index bf7c89fb75bbf92ebd4eb9efcd707f7fe5c315a1..d7504cefe016f57912d19244f883bdf426a3b11b 100644 (file)
@@ -47,7 +47,7 @@
 static void __init tqm85xx_pic_init(void)
 {
        struct mpic *mpic = mpic_alloc(NULL, 0,
-                       MPIC_WANTS_RESET | MPIC_BIG_ENDIAN,
+                       MPIC_BIG_ENDIAN,
                        0, 256, " OpenPIC  ");
        BUG_ON(mpic == NULL);
        mpic_init(mpic);
index 1ab4e026006d729b59dcc7edb1806955f66e013f..503c21596c6328035f3799f75adc7dcd8df434f1 100644 (file)
@@ -43,9 +43,7 @@
 
 void __init xes_mpc85xx_pic_init(void)
 {
-       struct mpic *mpic = mpic_alloc(NULL, 0,
-                         MPIC_WANTS_RESET |
-                         MPIC_BIG_ENDIAN,
+       struct mpic *mpic = mpic_alloc(NULL, 0, MPIC_BIG_ENDIAN,
                        0, 256, " OpenPIC  ");
        BUG_ON(mpic == NULL);
        mpic_init(mpic);
index 27959d63a0799aeb9095deeff08997a3235c9bc0..22cc3571ae192ea714bdc719fc4e04641ef8d595 100644 (file)
@@ -37,8 +37,7 @@ void __init mpc86xx_init_irq(void)
        int cascade_irq;
 #endif
 
-       struct mpic *mpic = mpic_alloc(NULL, 0,
-                       MPIC_WANTS_RESET | MPIC_BIG_ENDIAN |
+       struct mpic *mpic = mpic_alloc(NULL, 0, MPIC_BIG_ENDIAN |
                        MPIC_SINGLE_DEST_CPU,
                        0, 256, " MPIC     ");
        BUG_ON(mpic == NULL);
index 62002a7edfedd8bdf77bb82060e96c943b17321e..fa3e294fd34305c17fb9932a45d5439c1e006042 100644 (file)
@@ -197,7 +197,8 @@ static void __init mpic_init_IRQ(void)
                /* The MPIC driver will get everything it needs from the
                 * device-tree, just pass 0 to all arguments
                 */
-               mpic = mpic_alloc(dn, 0, MPIC_SECONDARY, 0, 0, " MPIC     ");
+               mpic = mpic_alloc(dn, 0, MPIC_SECONDARY | MPIC_NO_RESET,
+                               0, 0, " MPIC     ");
                if (mpic == NULL)
                        continue;
                mpic_init(mpic);
index f1f17bb2c33cf355b7eed3f6a35d497f99bc7731..c665d7de6c9985f5dcb7fe5ae83728369652bc8e 100644 (file)
@@ -435,7 +435,8 @@ static void __init chrp_find_openpic(void)
        if (len > 1)
                isu_size = iranges[3];
 
-       chrp_mpic = mpic_alloc(np, opaddr, 0, isu_size, 0, " MPIC    ");
+       chrp_mpic = mpic_alloc(np, opaddr, MPIC_NO_RESET,
+                       isu_size, 0, " MPIC    ");
        if (chrp_mpic == NULL) {
                printk(KERN_ERR "Failed to allocate MPIC structure\n");
                goto bail;
index d7727de85d57a414b78889f28730ed5cacb31704..ab51b21b4bd75bd4aea1ebef19f452cb8ab50a56 100644 (file)
@@ -154,8 +154,7 @@ static void __init holly_init_IRQ(void)
        struct device_node *cascade_node = NULL;
 #endif
 
-       mpic = mpic_alloc(NULL, 0,
-                       MPIC_BIG_ENDIAN | MPIC_WANTS_RESET |
+       mpic = mpic_alloc(NULL, 0, MPIC_BIG_ENDIAN |
                        MPIC_SPV_EOI | MPIC_NO_PTHROU_DIS | MPIC_REGSET_TSI108,
                        24, 0,
                        "Tsi108_PIC");
index 9479f4ebe1bcb163a5342dc8429443fd3c3cbd37..455e7c08742290a6bfb175dc3f3d730829c5545b 100644 (file)
@@ -82,8 +82,7 @@ static void __init linkstation_init_IRQ(void)
 {
        struct mpic *mpic;
 
-       mpic = mpic_alloc(NULL, 0, MPIC_WANTS_RESET,
-                       4, 0, " EPIC     ");
+       mpic = mpic_alloc(NULL, 0, 0, 4, 0, " EPIC     ");
        BUG_ON(mpic == NULL);
 
        /* PCI IRQs */
index 90acb5449163b7124e5a8c20ada12465fd59c82a..74ccce36baedc8039570c6153b3b73c5a607780a 100644 (file)
@@ -108,8 +108,7 @@ static void __init mpc7448_hpc2_init_IRQ(void)
        struct device_node *cascade_node = NULL;
 #endif
 
-       mpic = mpic_alloc(NULL, 0,
-                       MPIC_BIG_ENDIAN | MPIC_WANTS_RESET |
+       mpic = mpic_alloc(NULL, 0, MPIC_BIG_ENDIAN |
                        MPIC_SPV_EOI | MPIC_NO_PTHROU_DIS | MPIC_REGSET_TSI108,
                        24, 0,
                        "Tsi108_PIC");
index 451dce4edccd55cdcf5ef7219dac1b0570cbef3b..e0ed3c71d69b8d5896fcdef23d5bc84e6fb753d0 100644 (file)
@@ -84,8 +84,7 @@ static void __init storcenter_init_IRQ(void)
 {
        struct mpic *mpic;
 
-       mpic = mpic_alloc(NULL, 0, MPIC_WANTS_RESET,
-                       16, 0, " OpenPIC  ");
+       mpic = mpic_alloc(NULL, 0, 0, 16, 0, " OpenPIC  ");
        BUG_ON(mpic == NULL);
 
        /*
index 0bcbfe7b2c55ac53a9c638f1aab86757f4e85081..3b7545a51aa9af5fd4d5d450c5e2e694f8395e3e 100644 (file)
@@ -262,7 +262,7 @@ static void __init maple_init_IRQ(void)
                flags |= MPIC_BIG_ENDIAN;
 
        /* XXX Maple specific bits */
-       flags |= MPIC_U3_HT_IRQS | MPIC_WANTS_RESET;
+       flags |= MPIC_U3_HT_IRQS;
        /* All U3/U4 are big-endian, older SLOF firmware doesn't encode this */
        flags |= MPIC_BIG_ENDIAN;
 
index 98b7a7c1317600f33c75ed5969f5113b77231966..e777ad471a48797f2cabd24969afaaee09e1c1f5 100644 (file)
@@ -224,7 +224,7 @@ static __init void pas_init_IRQ(void)
        openpic_addr = of_read_number(opprop, naddr);
        printk(KERN_DEBUG "OpenPIC addr: %lx\n", openpic_addr);
 
-       mpic_flags = MPIC_LARGE_VECTORS | MPIC_NO_BIAS;
+       mpic_flags = MPIC_LARGE_VECTORS | MPIC_NO_BIAS | MPIC_NO_RESET;
 
        nmiprop = of_get_property(mpic_node, "nmi-source", NULL);
        if (nmiprop)
index 7761aabfc29348b99d97eeafcead1f3b17471e7b..0293d7a258c31a86b3b569cfa6b118027c822ecd 100644 (file)
@@ -469,7 +469,6 @@ static struct mpic * __init pmac_setup_one_mpic(struct device_node *np,
 
        pmac_call_feature(PMAC_FTR_ENABLE_MPIC, np, 0, 0);
 
-       flags |= MPIC_WANTS_RESET;
        if (of_get_property(np, "big-endian", NULL))
                flags |= MPIC_BIG_ENDIAN;
 
index 6d0a5dfbb9fc0d172bae7efe1f9ca144cc27e770..d928412cfb327ad92165a0dda6662182f2627744 100644 (file)
@@ -190,7 +190,8 @@ static void __init pseries_mpic_init_IRQ(void)
        BUG_ON(openpic_addr == 0);
 
        /* Setup the openpic driver */
-       mpic = mpic_alloc(pSeries_mpic_node, openpic_addr, 0, 16, 0, " MPIC     ");
+       mpic = mpic_alloc(pSeries_mpic_node, openpic_addr,
+                       MPIC_NO_RESET, 16, 0, " MPIC     ");
        BUG_ON(mpic == NULL);
 
        /* Add ISUs */
index 90171d447c3d482b30bd8eaeaa40fdb696a632cb..b9b989d305ddf25ca6df773582b11a33c66f386e 100644 (file)
@@ -1286,7 +1286,7 @@ struct mpic * __init mpic_alloc(struct device_node *node,
        /* When using a device-node, reset requests are only honored if the MPIC
         * is allowed to reset.
         */
-       if ((mpic->flags & MPIC_WANTS_RESET) && !(mpic->flags & MPIC_NO_RESET)) {
+       if (!(mpic->flags & MPIC_NO_RESET)) {
                printk(KERN_DEBUG "mpic: Resetting\n");
                mpic_write(mpic->gregs, MPIC_INFO(GREG_GLOBAL_CONF_0),
                           mpic_read(mpic->gregs, MPIC_INFO(GREG_GLOBAL_CONF_0))