diff options
Diffstat (limited to 'arch/sparc64/mm/init.c')
-rw-r--r-- | arch/sparc64/mm/init.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/arch/sparc64/mm/init.c b/arch/sparc64/mm/init.c index 7c456afaa9a5..a8119cb4fa32 100644 --- a/arch/sparc64/mm/init.c +++ b/arch/sparc64/mm/init.c | |||
@@ -246,9 +246,11 @@ static __inline__ void clear_dcache_dirty_cpu(struct page *page, unsigned long c | |||
246 | 246 | ||
247 | void update_mmu_cache(struct vm_area_struct *vma, unsigned long address, pte_t pte) | 247 | void update_mmu_cache(struct vm_area_struct *vma, unsigned long address, pte_t pte) |
248 | { | 248 | { |
249 | struct mm_struct *mm; | ||
249 | struct page *page; | 250 | struct page *page; |
250 | unsigned long pfn; | 251 | unsigned long pfn; |
251 | unsigned long pg_flags; | 252 | unsigned long pg_flags; |
253 | unsigned long mm_rss; | ||
252 | 254 | ||
253 | pfn = pte_pfn(pte); | 255 | pfn = pte_pfn(pte); |
254 | if (pfn_valid(pfn) && | 256 | if (pfn_valid(pfn) && |
@@ -270,6 +272,11 @@ void update_mmu_cache(struct vm_area_struct *vma, unsigned long address, pte_t p | |||
270 | 272 | ||
271 | put_cpu(); | 273 | put_cpu(); |
272 | } | 274 | } |
275 | |||
276 | mm = vma->vm_mm; | ||
277 | mm_rss = get_mm_rss(mm); | ||
278 | if (mm_rss >= mm->context.tsb_rss_limit) | ||
279 | tsb_grow(mm, mm_rss, GFP_ATOMIC); | ||
273 | } | 280 | } |
274 | 281 | ||
275 | void flush_dcache_page(struct page *page) | 282 | void flush_dcache_page(struct page *page) |