On Thu Nov 12 16:20:39 EST 2009, [email protected] 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

Reply via email to