diff options
| author | Paul Mackerras <paulus@samba.org> | 2008-03-24 22:31:46 -0400 |
|---|---|---|
| committer | Paul Mackerras <paulus@samba.org> | 2008-03-24 22:31:46 -0400 |
| commit | 16fddf5457d2a7eb5e96ceb016a8f722eca97af6 (patch) | |
| tree | ae3083a50c55f1e1a2c83f475d0e8bb2da8d7196 | |
| parent | 5492a7e4cba8e38419d489f0865de0a67c737e8a (diff) | |
| parent | cc7feea39bed2951cc29af3ad642f39a99dfe8d3 (diff) | |
Merge branch 'linux-2.6' into merge
32 files changed, 171 insertions, 245 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 | ||
| 486 | static struct of_device_id mpc52xx_bcom_of_match[] = { | 490 | static 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/arch/sparc64/kernel/ds.c b/arch/sparc64/kernel/ds.c index bd76482077be..edb74f5a1186 100644 --- a/arch/sparc64/kernel/ds.c +++ b/arch/sparc64/kernel/ds.c | |||
| @@ -972,8 +972,7 @@ static void process_ds_work(void) | |||
| 972 | LIST_HEAD(todo); | 972 | LIST_HEAD(todo); |
| 973 | 973 | ||
| 974 | spin_lock_irqsave(&ds_lock, flags); | 974 | spin_lock_irqsave(&ds_lock, flags); |
| 975 | list_splice(&ds_work_list, &todo); | 975 | list_splice_init(&ds_work_list, &todo); |
| 976 | INIT_LIST_HEAD(&ds_work_list); | ||
| 977 | spin_unlock_irqrestore(&ds_lock, flags); | 976 | spin_unlock_irqrestore(&ds_lock, flags); |
| 978 | 977 | ||
| 979 | list_for_each_entry_safe(qp, tmp, &todo, list) { | 978 | list_for_each_entry_safe(qp, tmp, &todo, list) { |
diff --git a/arch/sparc64/kernel/head.S b/arch/sparc64/kernel/head.S index 44b105c04dd3..34f8ff57c56b 100644 --- a/arch/sparc64/kernel/head.S +++ b/arch/sparc64/kernel/head.S | |||
| @@ -288,8 +288,12 @@ sun4v_chip_type: | |||
| 288 | /* Leave arg2 as-is, prom_mmu_ihandle_cache */ | 288 | /* Leave arg2 as-is, prom_mmu_ihandle_cache */ |
| 289 | mov -1, %l3 | 289 | mov -1, %l3 |
| 290 | stx %l3, [%sp + 2047 + 128 + 0x28] ! arg3: mode (-1 default) | 290 | stx %l3, [%sp + 2047 + 128 + 0x28] ! arg3: mode (-1 default) |
| 291 | sethi %hi(8 * 1024 * 1024), %l3 | 291 | /* 4MB align the kernel image size. */ |
| 292 | stx %l3, [%sp + 2047 + 128 + 0x30] ! arg4: size (8MB) | 292 | set (_end - KERNBASE), %l3 |
| 293 | set ((4 * 1024 * 1024) - 1), %l4 | ||
| 294 | add %l3, %l4, %l3 | ||
| 295 | andn %l3, %l4, %l3 | ||
| 296 | stx %l3, [%sp + 2047 + 128 + 0x30] ! arg4: roundup(ksize, 4MB) | ||
| 293 | sethi %hi(KERNBASE), %l3 | 297 | sethi %hi(KERNBASE), %l3 |
| 294 | stx %l3, [%sp + 2047 + 128 + 0x38] ! arg5: vaddr (KERNBASE) | 298 | stx %l3, [%sp + 2047 + 128 + 0x38] ! arg5: vaddr (KERNBASE) |
| 295 | stx %g0, [%sp + 2047 + 128 + 0x40] ! arg6: empty | 299 | stx %g0, [%sp + 2047 + 128 + 0x40] ! arg6: empty |
diff --git a/arch/sparc64/kernel/process.c b/arch/sparc64/kernel/process.c index e116e38b160e..acf8c5250aa9 100644 --- a/arch/sparc64/kernel/process.c +++ b/arch/sparc64/kernel/process.c | |||
| @@ -731,9 +731,6 @@ asmlinkage int sparc_execve(struct pt_regs *regs) | |||
| 731 | current_thread_info()->xfsr[0] = 0; | 731 | current_thread_info()->xfsr[0] = 0; |
| 732 | current_thread_info()->fpsaved[0] = 0; | 732 | current_thread_info()->fpsaved[0] = 0; |
| 733 | regs->tstate &= ~TSTATE_PEF; | 733 | regs->tstate &= ~TSTATE_PEF; |
| 734 | task_lock(current); | ||
| 735 | current->ptrace &= ~PT_DTRACE; | ||
| 736 | task_unlock(current); | ||
| 737 | } | 734 | } |
| 738 | out: | 735 | out: |
| 739 | return error; | 736 | return error; |
diff --git a/arch/sparc64/kernel/smp.c b/arch/sparc64/kernel/smp.c index cc454731d879..5a1126b363a4 100644 --- a/arch/sparc64/kernel/smp.c +++ b/arch/sparc64/kernel/smp.c | |||
| @@ -284,14 +284,17 @@ static void ldom_startcpu_cpuid(unsigned int cpu, unsigned long thread_reg) | |||
| 284 | { | 284 | { |
| 285 | extern unsigned long sparc64_ttable_tl0; | 285 | extern unsigned long sparc64_ttable_tl0; |
| 286 | extern unsigned long kern_locked_tte_data; | 286 | extern unsigned long kern_locked_tte_data; |
| 287 | extern int bigkernel; | ||
| 288 | struct hvtramp_descr *hdesc; | 287 | struct hvtramp_descr *hdesc; |
| 289 | unsigned long trampoline_ra; | 288 | unsigned long trampoline_ra; |
| 290 | struct trap_per_cpu *tb; | 289 | struct trap_per_cpu *tb; |
| 291 | u64 tte_vaddr, tte_data; | 290 | u64 tte_vaddr, tte_data; |
| 292 | unsigned long hv_err; | 291 | unsigned long hv_err; |
| 292 | int i; | ||
| 293 | 293 | ||
| 294 | hdesc = kzalloc(sizeof(*hdesc), GFP_KERNEL); | 294 | hdesc = kzalloc(sizeof(*hdesc) + |
| 295 | (sizeof(struct hvtramp_mapping) * | ||
| 296 | num_kernel_image_mappings - 1), | ||
| 297 | GFP_KERNEL); | ||
| 295 | if (!hdesc) { | 298 | if (!hdesc) { |
| 296 | printk(KERN_ERR "ldom_startcpu_cpuid: Cannot allocate " | 299 | printk(KERN_ERR "ldom_startcpu_cpuid: Cannot allocate " |
| 297 | "hvtramp_descr.\n"); | 300 | "hvtramp_descr.\n"); |
| @@ -299,7 +302,7 @@ static void ldom_startcpu_cpuid(unsigned int cpu, unsigned long thread_reg) | |||
| 299 | } | 302 | } |
| 300 | 303 | ||
