powerpc/mm: Rework context management for CPUs with no hash table
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>
Thu, 18 Dec 2008 19:13:29 +0000 (19:13 +0000)
committerPaul Mackerras <paulus@samba.org>
Sun, 21 Dec 2008 03:21:15 +0000 (14:21 +1100)
commit2ca8cf738907180e7fbda90f25f32b86feda609f
tree60d8af9b53a78ae9300ef7e68f222b02fe3be542
parent5e696617c425eb97bd943d781f3941fb1e8f0e5b
powerpc/mm: Rework context management for CPUs with no hash table

This reworks the context management code used by 4xx,8xx and
freescale BookE.  It adds support for SMP by implementing a
concept of stale context map to lazily flush the TLB on
processors where a context may have been invalidated.  This
also contains the ground work for generalizing such lazy TLB
flushing by just picking up a new PID and marking the old one
stale.  This will be implemented later.

This is a first implementation that uses a global spinlock.

Ideally, we should try to get at least the fast path (context ID
already assigned) lockless or limited to a per context lock,
but for now this will do.

I tried to keep the UP case reasonably simple to avoid adding
too much overhead to 8xx which does a lot of context stealing
since it effectively has only 16 PIDs available.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Acked-by: Kumar Gala <galak@kernel.crashing.org>
Signed-off-by: Paul Mackerras <paulus@samba.org>
arch/powerpc/include/asm/mmu-40x.h
arch/powerpc/include/asm/mmu-44x.h
arch/powerpc/include/asm/mmu-8xx.h
arch/powerpc/include/asm/mmu-fsl-booke.h
arch/powerpc/include/asm/tlbflush.h
arch/powerpc/mm/mmu_context_nohash.c