Subject: Re: Possible fix for resets under heavy load
To: Christopher SEKIYA <wileyc@rezrov.net>
From: Frank van der Linden <fvdl@netbsd.org>
List: port-amd64
Date: 06/03/2004 12:35:43
On Thu, Jun 03, 2004 at 11:07:00AM +0900, Christopher SEKIYA wrote:
> 
> For those who were experiencing spontaneous reboots under heavy load, please
> try the appended patch.  It brings the amd64 pmap into closer alignment with
> the i386 pmap; namely, the use of splay tree macros and more cpu locking.
> (Also, it removes i386-specific cruft).
> 
> It seems to do the right thing on my machine.
> 
> If there is no objection, I'll commit it over the weekend and request a
> pullup.

Don't remove the "if (lidx != 0)" code.. it's needed to avoid a recursive
lock, since pm_lock is equal to pm_obj[0].vmobjlock.

A cleaner solution is to make pm_lock seperate, init it seperately too,
and use that for global pmap locking.

Make sure to test any changes with LOCKDEBUG.

Also, there is no such thing as i386-specific cruft, since the idea
is to keep the pmaps in sync, and eventually use the same pmap for
both platforms. When I committed the amd64 port, the pmap did work
on i386 too (with modified pmap.h and pte.h files), but I haven't
tested that in a long time, it has probably bitrotted. However,
it is still my intention to merge them.

A pullup isn't a good idea for changes like this without more thorough
testing and making sure it actually fixes the reset problem.

- Frank