Subject: Re: CVS commit: syssrc/sys/arch/arm/arm32
To: Richard Earnshaw <rearnsha@netbsd.org>
From: Jason R Thorpe <thorpej@wasabisystems.com>
List: tech-kern
Date: 10/18/2001 10:15:14
On Thu, Oct 18, 2001 at 07:50:31PM +0300, Richard Earnshaw wrote:

 > However, even with this step having more than a small number of
 > processes searching for a L1 pt can still be enough to bring the system
 > down, since they all run at high priority and sleep for very little time,
 > thus blocking out user code from completing.  So implement an exponential
 > backoff when waiting for a page table, so that we don't hog the CPU when
 > memory is scarce.

This is a good improvement, but...

The pmap isn't really supposed to be sleeping -- there could be locks
held by the caller (UVM).  The fact that other pmaps currently sleep
is not meant to suggest that such behavior is correct :-) I should
probably clarify this in the pmap(9) manual page.

The right thing to do is to return an error to the caller of pmap_enter()
if PMAP_CANFAIL is set in the flags argument.  The caller will then unlock
and wait for more memory.

-- 
        -- Jason R. Thorpe <thorpej@wasabisystems.com>