Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc
authorLinus Torvalds <torvalds@linux-foundation.org>
Mon, 24 Mar 2008 20:09:34 +0000 (13:09 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Mon, 24 Mar 2008 20:09:34 +0000 (13:09 -0700)
* 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc:
  [POWERPC] Fix Oops with TQM5200 on TQM5200
  [POWERPC] mpc5200: Fix null dereference if bestcomm fails to initialize
  [POWERPC] mpc5200-fec: Fix possible NULL dereference in mdio driver
  [POWERPC] Fix crash in init_ipic_sysfs on efika
  [POWERPC] Don't use 64k pages for ioremap on pSeries

arch/powerpc/mm/hash_utils_64.c
arch/powerpc/sysdev/bestcomm/bestcomm.c
arch/powerpc/sysdev/ipic.c
drivers/net/fec_mpc52xx_phy.c

index 590f1f67c87403df6db3f878c800a7c37bf992b4..a83dfa3cf40c562cd8d0218c0efb903d60303a47 100644 (file)
@@ -351,9 +351,14 @@ static void __init htab_init_page_sizes(void)
                mmu_vmalloc_psize = MMU_PAGE_64K;
                if (mmu_linear_psize == MMU_PAGE_4K)
                        mmu_linear_psize = MMU_PAGE_64K;
-               if (cpu_has_feature(CPU_FTR_CI_LARGE_PAGE))
-                       mmu_io_psize = MMU_PAGE_64K;
-               else
+               if (cpu_has_feature(CPU_FTR_CI_LARGE_PAGE)) {
+                       /*
+                        * Don't use 64k pages for ioremap on pSeries, since
+                        * that would stop us accessing the HEA ethernet.
+                        */
+                       if (!machine_is(pseries))
+                               mmu_io_psize = MMU_PAGE_64K;
+               } else
                        mmu_ci_restrictions = 1;
        }
 #endif /* CONFIG_PPC_64K_PAGES */
index f589999361e060958c145ac199eec85ae466f24a..64ec7d6293633822f8c8afd000068d73a4160442 100644 (file)
@@ -52,6 +52,10 @@ bcom_task_alloc(int bd_count, int bd_size, int priv_size)
        int i, tasknum = -1;
        struct bcom_task *tsk;
 
+       /* Don't try to do anything if bestcomm init failed */
+       if (!bcom_eng)
+               return NULL;
+
        /* Get and reserve a task num */
        spin_lock(&bcom_eng->lock);
 
@@ -484,8 +488,8 @@ mpc52xx_bcom_remove(struct of_device *op)
 }
 
 static struct of_device_id mpc52xx_bcom_of_match[] = {
-       { .type = "dma-controller", .compatible = "fsl,mpc5200-bestcomm", },
-       { .type = "dma-controller", .compatible = "mpc5200-bestcomm", },
+       { .compatible = "fsl,mpc5200-bestcomm", },
+       { .compatible = "mpc5200-bestcomm", },
        {},
 };
 
index ae0dbf4c1d66499b6b64f8f31f7b711062ca13ea..0f2dfb0aaa6adaa77e6e1232d1951a4fe3d7382d 100644 (file)
@@ -906,7 +906,7 @@ static int __init init_ipic_sysfs(void)
 {
        int rc;
 
-       if (!primary_ipic->regs)
+       if (!primary_ipic || !primary_ipic->regs)
                return -ENODEV;
        printk(KERN_DEBUG "Registering ipic with sysfs...\n");
 
index 1837584c4504dd82f56db27d9326d9763b3ffe83..6a3ac4ea97e90af21bc7ab0cb0cea66dad7cf7cd 100644 (file)
@@ -109,7 +109,8 @@ static int mpc52xx_fec_mdio_probe(struct of_device *of, const struct of_device_i
                int irq = irq_of_parse_and_map(child, 0);
                if (irq != NO_IRQ) {
                        const u32 *id = of_get_property(child, "reg", NULL);
-                       bus->irq[*id] = irq;
+                       if (id)
+                               bus->irq[*id] = irq;
                }
        }