Subject: Re: NEW_PIPE problems with -current on sparc: ... are gone!
To: None <kilbi@rad.rwth-aachen.de>
From: Paul Kranenburg <pk@cs.few.eur.nl>
List: port-sparc
Date: 01/27/2002 18:43:01
> Any short explanation for the 'small' change?
We're mapping kernel memory; the PG_S bit makes it inaccessable from
user mode. It also has an effect on how cache flush operations work.
The `system bit' is copied into the cache tag when one is allocated,
where, if it's set, it will cause a miss if the cache entry is accessed
from user mode (to enforce the access check). In addition, the cache
flush operations will invalidate a cache entry with `system bit' on
no matter what context is currently set in the MMU. This is convenient,
since it allows kernel memory mappings to be manipulated from any
MMU context without incurring extra cost to invalidate cache entries.
The omission in pmap_kenter() thus caused stale entries to remain
in cache which were produced by accessing the kernel mapping from
different contexts, which is how the pipe code uses it.