diff options
author | Jens Axboe <jens.axboe@oracle.com> | 2010-02-22 07:48:51 -0500 |
---|---|---|
committer | Jens Axboe <jens.axboe@oracle.com> | 2010-02-22 07:48:51 -0500 |
commit | f11cbd74c5ff3614f6390b4de67a6ffdc614c378 (patch) | |
tree | 6a30920ade9eeaac5bf6d6263b5d09712e882eb0 /arch/powerpc/mm | |
parent | 429c42c9d246f5bda868495c09974312a0177328 (diff) | |
parent | aea187c46f7d03ce985e55eb1398d0776a15b928 (diff) |
Merge branch 'master' into for-2.6.34
Diffstat (limited to 'arch/powerpc/mm')
-rw-r--r-- | arch/powerpc/mm/mmap_64.c | 4 | ||||
-rw-r--r-- | arch/powerpc/mm/tlb_hash64.c | 12 |
2 files changed, 11 insertions, 5 deletions
diff --git a/arch/powerpc/mm/mmap_64.c b/arch/powerpc/mm/mmap_64.c index 0d957a4c70fe..5a783d8e8e8e 100644 --- a/arch/powerpc/mm/mmap_64.c +++ b/arch/powerpc/mm/mmap_64.c | |||
@@ -47,7 +47,7 @@ static inline int mmap_is_legacy(void) | |||
47 | if (current->personality & ADDR_COMPAT_LAYOUT) | 47 | if (current->personality & ADDR_COMPAT_LAYOUT) |
48 | return 1; | 48 | return 1; |
49 | 49 | ||
50 | if (current->signal->rlim[RLIMIT_STACK].rlim_cur == RLIM_INFINITY) | 50 | if (rlimit(RLIMIT_STACK) == RLIM_INFINITY) |
51 | return 1; | 51 | return 1; |
52 | 52 | ||
53 | return sysctl_legacy_va_layout; | 53 | return sysctl_legacy_va_layout; |
@@ -77,7 +77,7 @@ static unsigned long mmap_rnd(void) | |||
77 | 77 | ||
78 | static inline unsigned long mmap_base(void) | 78 | static inline unsigned long mmap_base(void) |
79 | { | 79 | { |
80 | unsigned long gap = current->signal->rlim[RLIMIT_STACK].rlim_cur; | 80 | unsigned long gap = rlimit(RLIMIT_STACK); |
81 | 81 | ||
82 | if (gap < MIN_GAP) | 82 | if (gap < MIN_GAP) |
83 | gap = MIN_GAP; | 83 | gap = MIN_GAP; |
diff --git a/arch/powerpc/mm/tlb_hash64.c b/arch/powerpc/mm/tlb_hash64.c index 282d9306361f..1ec06576f619 100644 --- a/arch/powerpc/mm/tlb_hash64.c +++ b/arch/powerpc/mm/tlb_hash64.c | |||
@@ -63,15 +63,21 @@ void hpte_need_flush(struct mm_struct *mm, unsigned long addr, | |||
63 | if (huge) { | 63 | if (huge) { |
64 | #ifdef CONFIG_HUGETLB_PAGE | 64 | #ifdef CONFIG_HUGETLB_PAGE |
65 | psize = get_slice_psize(mm, addr); | 65 | psize = get_slice_psize(mm, addr); |
66 | /* Mask the address for the correct page size */ | ||
67 | addr &= ~((1UL << mmu_psize_defs[psize].shift) - 1); | ||
66 | #else | 68 | #else |
67 | BUG(); | 69 | BUG(); |
68 | psize = pte_pagesize_index(mm, addr, pte); /* shutup gcc */ | 70 | psize = pte_pagesize_index(mm, addr, pte); /* shutup gcc */ |
69 | #endif | 71 | #endif |
70 | } else | 72 | } else { |
71 | psize = pte_pagesize_index(mm, addr, pte); | 73 | psize = pte_pagesize_index(mm, addr, pte); |
74 | /* Mask the address for the standard page size. If we | ||
75 | * have a 64k page kernel, but the hardware does not | ||
76 | * support 64k pages, this might be different from the | ||
77 | * hardware page size encoded in the slice table. */ | ||
78 | addr &= PAGE_MASK; | ||
79 | } | ||
72 | 80 | ||
73 | /* Mask the address for the correct page size */ | ||
74 | addr &= ~((1UL << mmu_psize_defs[psize].shift) - 1); | ||
75 | 81 | ||
76 | /* Build full vaddr */ | 82 | /* Build full vaddr */ |
77 | if (!is_kernel_addr(addr)) { | 83 | if (!is_kernel_addr(addr)) { |