Haris wrote:
Hi -
Concerning the MMU's primary context register. I know that this represents the
active context on the processor and is used to find mappings in the TLB. My
understanding is that context should be different for each OS process. However,
in Ultrasparc for instance, the context is 13bits which means up to 8k
contexts. I know that in Solaris the limit of processes is 32k. So, what
happens if there are more active processes than 8k? Is there any kind of
wrapping; does the OS shootdowns TLB entries for a context that is going to be
used by another use process space? I looked at the assembly code in swtch.s
that performs the space switch, but it seems to me that it only has calls to
HAT routines which load MMU context register. I couldn't find any code that
handles the case I am mentioning above.
thanks,
-Haris
This message posted from opensolaris.org
_______________________________________________
opensolaris-code mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/opensolaris-code
In previous releases, Solaris on SPARC would use a single set
of context ids for all the processes. Once there were more than
8K active processes, context stealing would occur with attendant
shoot downs, etc. This was made worse by the shared TSBs; when
a context was stolen the TSBs would need to be cleared as well,
causing subsequent faults to get resolved by the segment code...
Today Solaris uses per-process TSBs, so walking a TSB to clear
out entries for a stolen context is never necessary. In addition,
we now use grouped assignment of mmu contexts; this means that
if a context needs to be stolen we only need to cross-call
other cpus in its mmu context domain instead of every cpu in the box.
Take a look here for details:
http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/uts/sfmmu/vm/hat_sfmmu.h#289
- Bart
--
Bart Smaalders Solaris Kernel Performance
[EMAIL PROTECTED] http://blogs.sun.com/barts
_______________________________________________
opensolaris-code mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/opensolaris-code