On Sun, Nov 04, 2012 at 01:35:04PM +1100, matthew green wrote: > > > Module Name: src > > Committed By: chs > > Date: Sun Nov 4 00:32:47 UTC 2012 > > > > Modified Files: > > src/sys/arch/sparc/sparc: locore.s pmap.c > > > > Log Message: > > in cpu_switchto(), remove the MP-unsafe code to mark a pmap active on a CPU, > > pmap_activate() already does this. add MP locking to pmap_activate() > > and pmap_deactivate(). move flushing of user windows and virtual caches > > from pamp_activate() to pmap_deactivate(). > > > hmm. this makes pmap_deactivate() do things in UP that weren't being > done before at all. switching to/from kernel/lwp for the same lwp will > now be flushing the ctx every time. that seems suboptimal?
do you just mean that I should have left the #ifdef MULTIPROCESSOR around the sp_tlb_flush()? or something more than that? > we should really update PMAP_LOCK() to not be kernel lock. agreed. beyond that, there's still plenty of room for improvement on most platforms. I think the best example in our tree at this point is the x86 scheme of deferring the MMU-switch work to points where we're actually about to reference user mappings, eg. returning to user mode, copyin/copyout, etc. -Chuck