aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2008-03-24 16:09:34 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2008-03-24 16:09:34 -0400
commitcc7feea39bed2951cc29af3ad642f39a99dfe8d3 (patch)
treed11b9f40044951128c9151b0fd88c13066dfec31
parent6f58d79598c184dc4f18ceddfaa5fa7483bce0a5 (diff)
parent7ea6fd7e2df041297298b5feb5b7b78a2b1a5310 (diff)
Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc
* '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
-rw-r--r--arch/powerpc/mm/hash_utils_64.c11
-rw-r--r--arch/powerpc/sysdev/bestcomm/bestcomm.c8
-rw-r--r--arch/powerpc/sysdev/ipic.c2
-rw-r--r--drivers/net/fec_mpc52xx_phy.c3
4 files changed, 17 insertions, 7 deletions
diff --git a/arch/powerpc/mm/hash_utils_64.c b/arch/powerpc/mm/hash_utils_64.c
index 590f1f67c874..a83dfa3cf40c 100644
--- a/arch/powerpc/mm/hash_utils_64.c
+++ b/arch/powerpc/mm/hash_utils_64.c
@@ -351,9 +351,14 @@ static void __init htab_init_page_sizes(void)
351 mmu_vmalloc_psize = MMU_PAGE_64K; 351 mmu_vmalloc_psize = MMU_PAGE_64K;
352 if (mmu_linear_psize == MMU_PAGE_4K) 352 if (mmu_linear_psize == MMU_PAGE_4K)
353 mmu_linear_psize = MMU_PAGE_64K; 353 mmu_linear_psize = MMU_PAGE_64K;
354 if (cpu_has_feature(CPU_FTR_CI_LARGE_PAGE)) 354 if (cpu_has_feature(CPU_FTR_CI_LARGE_PAGE)) {
355 mmu_io_psize = MMU_PAGE_64K; 355 /*
356 else 356 * Don't use 64k pages for ioremap on pSeries, since
357 * that would stop us accessing the HEA ethernet.
358 */
359 if (!machine_is(pseries))
360 mmu_io_psize = MMU_PAGE_64K;
361 } else
357 mmu_ci_restrictions = 1; 362 mmu_ci_restrictions = 1;
358 } 363 }
359#endif /* CONFIG_PPC_64K_PAGES */ 364#endif /* CONFIG_PPC_64K_PAGES */
diff --git a/arch/powerpc/sysdev/bestcomm/bestcomm.c b/arch/powerpc/sysdev/bestcomm/bestcomm.c
index f589999361e0..64ec7d629363 100644
--- a/arch/powerpc/sysdev/bestcomm/bestcomm.c
+++ b/arch/powerpc/sysdev/bestcomm/bestcomm.c
@@ -52,6 +52,10 @@ bcom_task_alloc(int bd_count, int bd_size, int priv_size)
52 int i, tasknum = -1; 52 int i, tasknum = -1;
53 struct bcom_task *tsk; 53 struct bcom_task *tsk;
54 54
55 /* Don't try to do anything if bestcomm init failed */
56 if (!bcom_eng)
57 return NULL;
58
55 /* Get and reserve a task num */ 59 /* Get and reserve a task num */
56 spin_lock(&bcom_eng->lock); 60 spin_lock(&bcom_eng->lock);
57 61
@@ -484,8 +488,8 @@ mpc52xx_bcom_remove(struct of_device *op)
484} 488}
485 489
486static struct of_device_id mpc52xx_bcom_of_match[] = { 490static struct of_device_id mpc52xx_bcom_of_match[] = {
487 { .type = "dma-controller", .compatible = "fsl,mpc5200-bestcomm", }, 491 { .compatible = "fsl,mpc5200-bestcomm", },
488 { .type = "dma-controller", .compatible = "mpc5200-bestcomm", }, 492 { .compatible = "mpc5200-bestcomm", },
489 {}, 493 {},
490}; 494};
491 495
diff --git a/arch/powerpc/sysdev/ipic.c b/arch/powerpc/sysdev/ipic.c
index ae0dbf4c1d66..0f2dfb0aaa6a 100644
--- a/arch/powerpc/sysdev/ipic.c
+++ b/arch/powerpc/sysdev/ipic.c
@@ -906,7 +906,7 @@ static int __init init_ipic_sysfs(void)
906{ 906{
907 int rc; 907 int rc;
908 908
909 if (!primary_ipic->regs) 909 if (!primary_ipic || !primary_ipic->regs)
910 return -ENODEV; 910 return -ENODEV;
911 printk(KERN_DEBUG "Registering ipic with sysfs...\n"); 911 printk(KERN_DEBUG "Registering ipic with sysfs...\n");
912 912
diff --git a/drivers/net/fec_mpc52xx_phy.c b/drivers/net/fec_mpc52xx_phy.c
index 1837584c4504..6a3ac4ea97e9 100644
--- a/drivers/net/fec_mpc52xx_phy.c
+++ b/drivers/net/fec_mpc52xx_phy.c
@@ -109,7 +109,8 @@ static int mpc52xx_fec_mdio_probe(struct of_device *of, const struct of_device_i
109 int irq = irq_of_parse_and_map(child, 0); 109 int irq = irq_of_parse_and_map(child, 0);
110 if (irq != NO_IRQ) { 110 if (irq != NO_IRQ) {
111 const u32 *id = of_get_property(child, "reg", NULL); 111 const u32 *id = of_get_property(child, "reg", NULL);
112 bus->irq[*id] = irq; 112 if (id)
113 bus->irq[*id] = irq;
113 } 114 }
114 } 115 }
115 116