ralf@uni-koblenz.de writes:
> I think I know why we're catching VCE exceptions even though we try to
> avoid them at any price - the reason spells ``empty_zero_page''. This
> page is filled with zeros and is being mapped to arbitrary addresses
> at the same time. Arbitrary addresses means also bits 14:12 of the
> virtual address may be different, welcome VCED. This also means that
> at least sane code should never cause VCEI exceptions. The text of
> the panic message ``should not happend'' is therefore wrong as well ...
>
> Whatever, the fact that the hardware causes VCE exceptions which don't
> help us at all forces us to handle them somehow. How handy, they'll
> fit quite well in the revamped interface for board caches :-)
>
> Another way to finally eleminate the virtual coherency problem from
> KSEG0's landscape would be to actually use 8 pages as an array of
> empty_zero_pages[], so we would be able to map one wherever we want
> such that we never run into virtual coherency trouble.
For an always-zero page, this is the best solution. At a small
cost in memory, you get far less overhead.
|