diff options
author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-07-22 14:17:35 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-07-22 14:17:35 -0400 |
commit | dc79747019b43c28d1f50aad69b8039f8d8db301 (patch) | |
tree | 4e85f1e41a6df5e5ab0866901d29d2d08efdf426 /arch/powerpc/mm | |
parent | 0f760f13012322c81714812d852429fe23b16dcf (diff) | |
parent | 7bd02a20d5fcb69e1623c3bf2b68959fe7a77fa4 (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] Clean up duplicate includes in drivers/macintosh/
[POWERPC] Quiet section mismatch warning on pcibios_setup
[POWERPC] init and exit markings for hvc_iseries
[POWERPC] Quiet section mismatch in hvc_rtas.c
[POWERPC] Constify of_platform_driver match_table
[POWERPC] hvcs: Make some things static and const
[POWERPC] Constify of_platform_driver name
[POWERPC] MPIC protected sources
[POWERPC] of_detach_node()'s device node argument cannot be const
[POWERPC] Fix ARCH=ppc builds
[POWERPC] mv64x60: Use mutex instead of semaphore
[POWERPC] Allow smp_call_function_single() to current cpu
[POWERPC] Allow exec faults on readable areas on classic 32-bit PowerPC
[POWERPC] Fix future firmware feature fixups function failure
[POWERPC] fix showing xmon help
[POWERPC] Make xmon_write accept a const buffer
[POWERPC] Fix misspelled "CONFIG_CHECK_CACHE_COHERENCY" Kconfig option.
[POWERPC] cell: CONFIG_SPE_BASE is a typo
Diffstat (limited to 'arch/powerpc/mm')
-rw-r--r-- | arch/powerpc/mm/fault.c | 8 | ||||
-rw-r--r-- | arch/powerpc/mm/hash_utils_64.c | 4 |
2 files changed, 9 insertions, 3 deletions
diff --git a/arch/powerpc/mm/fault.c b/arch/powerpc/mm/fault.c index 3767211b3d0f..ab3546c5ac3a 100644 --- a/arch/powerpc/mm/fault.c +++ b/arch/powerpc/mm/fault.c | |||
@@ -283,7 +283,13 @@ good_area: | |||
283 | /* protection fault */ | 283 | /* protection fault */ |
284 | if (error_code & DSISR_PROTFAULT) | 284 | if (error_code & DSISR_PROTFAULT) |
285 | goto bad_area; | 285 | goto bad_area; |
286 | if (!(vma->vm_flags & VM_EXEC)) | 286 | /* |
287 | * Allow execution from readable areas if the MMU does not | ||
288 | * provide separate controls over reading and executing. | ||
289 | */ | ||
290 | if (!(vma->vm_flags & VM_EXEC) && | ||
291 | (cpu_has_feature(CPU_FTR_NOEXECUTE) || | ||
292 | !(vma->vm_flags & (VM_READ | VM_WRITE)))) | ||
287 | goto bad_area; | 293 | goto bad_area; |
288 | #else | 294 | #else |
289 | pte_t *ptep; | 295 | pte_t *ptep; |
diff --git a/arch/powerpc/mm/hash_utils_64.c b/arch/powerpc/mm/hash_utils_64.c index 2ce9491b48d4..bc7b0cedae5e 100644 --- a/arch/powerpc/mm/hash_utils_64.c +++ b/arch/powerpc/mm/hash_utils_64.c | |||
@@ -609,7 +609,7 @@ static void demote_segment_4k(struct mm_struct *mm, unsigned long addr) | |||
609 | mm->context.sllp = SLB_VSID_USER | mmu_psize_defs[MMU_PAGE_4K].sllp; | 609 | mm->context.sllp = SLB_VSID_USER | mmu_psize_defs[MMU_PAGE_4K].sllp; |
610 | #endif /* CONFIG_PPC_MM_SLICES */ | 610 | #endif /* CONFIG_PPC_MM_SLICES */ |
611 | 611 | ||
612 | #ifdef CONFIG_SPE_BASE | 612 | #ifdef CONFIG_SPU_BASE |
613 | spu_flush_all_slbs(mm); | 613 | spu_flush_all_slbs(mm); |
614 | #endif | 614 | #endif |
615 | } | 615 | } |
@@ -744,7 +744,7 @@ int hash_page(unsigned long ea, unsigned long access, unsigned long trap) | |||
744 | "to 4kB pages because of " | 744 | "to 4kB pages because of " |
745 | "non-cacheable mapping\n"); | 745 | "non-cacheable mapping\n"); |
746 | psize = mmu_vmalloc_psize = MMU_PAGE_4K; | 746 | psize = mmu_vmalloc_psize = MMU_PAGE_4K; |
747 | #ifdef CONFIG_SPE_BASE | 747 | #ifdef CONFIG_SPU_BASE |
748 | spu_flush_all_slbs(mm); | 748 | spu_flush_all_slbs(mm); |
749 | #endif | 749 | #endif |
750 | } | 750 | } |