I'm not sure I understand the above. Unless I've misunderstood, the
TLB isn't an issue on a simple system call.
The border I'm talking about is the user<->kernel border. We don't do
_anything_ to the TLB when crossing that border. At least not on
decent RISC chips with block translation capabilities (maybe you have
to do some weird things to accomodatestupid caches like the
MIPS). It's not a virtual address switch as you call it. All memory
accesses to in-kernel datastructures go through one of the block
translation entries in the CPU, bypassing the TLB. Accesses to
user-space will go through the TLB but probably with a 99.9% chance of
a TLB hit.
Kernel memory (or physical memory) is always "mapped in", even in
user-space. But you're not allowed to access it unless you're in
supervisor mode (or some ring < user-level ring on intel/HP).
So this leaves the TLB unchanged from entry to exit from a system call
provided we didn't do a schedule() in the kernel.
astor
-- Alexander Kjeldaas, Guardian Networks AS, Trondheim, Norway http://www.guardian.no/- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu