From mboxrd@z Thu Jan 1 00:00:00 1970 From: erik quanstrom Date: Thu, 12 Nov 2009 16:34:17 -0500 To: 9fans@9fans.net Message-ID: In-Reply-To: <<8a361ea78b8d25f710617b31c2eaf1ec@hamnavoe.com>> References: <<8a361ea78b8d25f710617b31c2eaf1ec@hamnavoe.com>> MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit Subject: Re: [9fans] mmu fix? Topicbox-Message-UUID: 9a464646-ead5-11e9-9d60-3106f5b1d025 On Thu Nov 12 16:20:39 EST 2009, 9fans@hamnavoe.com wrote: > The two cases are: > > /sys/src/9/pc/mmu.c:510,513 > if(didmmuinit) > map = xspanalloc(BY2PG, BY2PG, 0); > else > map = rampage(); > > xspanalloc returns zeroed memory. rampage is only called early > in startup, and returns virgin memory which in the olden days > would have been zeroed at boot time. But nowadays: > > /sys/src/9/pc/memory.c:443 > /* memset(va, 0, MB); so damn slow to memset all of memory */ > > So I think you want to clear the page only for the rampage case. > thanks, richard. since rampage() doesn't zero memory but xspanalloc does, it makes sense to me to put the change in rampage instead of mmuwalk. /n/dump/2009/1112/sys/src/9/pc/memory.c:223,233 - memory.c:223,236 rampage(void) { ulong m; - + void *p; + m = mapalloc(&rmapram, 0, BY2PG, BY2PG); if(m == 0) return nil; - return KADDR(m); + p = KADDR(m); + memset(p, 0, BY2PG); + return p; } - erik