Subject: Re: The i386 pmap_zero_page_uncached() problem
To: Manuel Bouyer <bouyer@antioche.lip6.fr>
From: Patrick Welche <prlw1@newn.cam.ac.uk>
List: port-i386
Date: 07/03/2000 16:36:42
On Mon, Jul 03, 2000 at 04:25:15PM +0200, Manuel Bouyer wrote:
> Hi,
> this week end I tried installing NetBSD on an old cyrix 133Mhz.
> The install kernel worked just fine, but the GENERIC one paniced very
> quickly (before init was run I think) with a trap in pmap_zero_page().
> Disabling the CPU cache allowed me to rebuild a kernel with the
> PMAP_PAGEIDLEZERO thing disabled, and it works without problems with the
> internal cache enabled.
> We should really solve this before 1.5. Is there an easy way to make the use
> of PMAP_PAGEIDLEZERO conditional on the CPU type ?

Believe it or not I just logged in to wibble about precisely this. I have
yet another cyrix (they are however all of the same type)
cpu0: family 6 model 0 step 0
cpu0: Cyrix 6x86MX (686-class)
and forgot to get rid of the PMAP_PAGEIDLEZERO thing
(invented a
#options        NOPAGEIDLEZERO  # because unstable on our cyrix
) and with this morning's source had a:
reboot
syncing disks... panic: pmap_zero_page: lock botch
...
panic(c0207483,c0326958,c0326968,c52cfcf0,c01a675a) at panic+0x64
pmap_zero_page(1990000,0,52f6000,c0237300,8) at pmap_zero_page+0x1e
uvm_pagealloc_strat(c0237300,52f6000,0,0,2) at uvm_pagealloc_strat+0x2c2
uao_get(c0237300,52f6000,0,c52cfdf0,c52cfde8) at uao_get+0x101
uvm_fault(c0237360,c52f6000,2,7,c52f6000) at uvm_fault+0x830
uvm_fault_wire(c0237360,c52f6000,c52f8000,3) at uvm_fault_wire+0x20
uvm_fork(c52c9194,c52c9af4,0,0,0,c01b47ac,c52c9af4) at uvm_fork+0x47
fork1(c52c9194,0,14,0,0) at fork1+0x52b
sys_fork(c52c9194,c52cff88,c52cff80,0,bfbfdd30) at sys_fork+0x1c
syscall() at syscall+0x10d
--- syscall (number 2) ---
0x480d6a67:


Cheers,

Patrick