[PATCH] mm: tlb_finish_mmu forget rss
authorHugh Dickins <hugh@veritas.com>
Sun, 30 Oct 2005 01:16:03 +0000 (18:16 -0700)
committerLinus Torvalds <torvalds@g5.osdl.org>
Sun, 30 Oct 2005 04:40:37 +0000 (21:40 -0700)
commitfc2acab31be8e869b2d5f6de12f557f6f054f19c
tree60cf419f5e88c3c46d39675a14649ea1e5849f03
parent4d6ddfa9242bc3d27fb0f7248f6fdee0299c731f
[PATCH] mm: tlb_finish_mmu forget rss

zap_pte_range has been counting the pages it frees in tlb->freed, then
tlb_finish_mmu has used that to update the mm's rss.  That got stranger when I
added anon_rss, yet updated it by a different route; and stranger when rss and
anon_rss became mm_counters with special access macros.  And it would no
longer be viable if we're relying on page_table_lock to stabilize the
mm_counter, but calling tlb_finish_mmu outside that lock.

Remove the mmu_gather's freed field, let tlb_finish_mmu stick to its own
business, just decrement the rss mm_counter in zap_pte_range (yes, there was
some point to batching the update, and a subsequent patch restores that).  And
forget the anal paranoia of first reading the counter to avoid going negative
- if rss does go negative, just fix that bug.

Remove the mmu_gather's flushes and avoided_flushes from arm and arm26: no use
was being made of them.  But arm26 alone was actually using the freed, in the
way some others use need_flush: give it a need_flush.  arm26 seems to prefer
spaces to tabs here: respect that.

Signed-off-by: Hugh Dickins <hugh@veritas.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
arch/sparc64/mm/tlb.c
include/asm-arm/tlb.h
include/asm-arm26/tlb.h
include/asm-generic/tlb.h
include/asm-ia64/tlb.h
include/asm-sparc64/tlb.h
mm/memory.c