Fix recent bugs seen on Performa 4400 macppc's by
Makoto Fujiwara <makoto@ki.nu> and Manuel Bouyer <bouyer@netbsd.org>. Help from Allen Briggs, Jason Thorpe, and Matt Thomas. We need to call cpu_cache_probe() early in boot (machdep.c). Add 603 info for completeness, and use NBPG not PAGESIZE, as the latter relies on uvm being setup (cpu_subr.c). Let uvm_page_recolor() be called before uvm has been set up; just note the page coloring value (uvm_page.c).
This commit is contained in:
parent
9be14081f9
commit
2eb3dc82d8
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: machdep.c,v 1.113 2002/05/13 06:05:33 matt Exp $ */
|
||||
/* $NetBSD: machdep.c,v 1.114 2002/06/19 17:01:20 wrstuden Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (C) 1995, 1996 Wolfgang Solfrank.
|
||||
@ -306,6 +306,7 @@ initppc(startkernel, endkernel, args)
|
||||
#endif /* DDB || IPKDB || KGDB */
|
||||
}
|
||||
|
||||
cpu_probe_cache();
|
||||
/*
|
||||
* external interrupt handler install
|
||||
*/
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: cpu_subr.c,v 1.18 2002/06/17 21:28:48 matt Exp $ */
|
||||
/* $NetBSD: cpu_subr.c,v 1.19 2002/06/19 17:01:20 wrstuden Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 2001 Matt Thomas.
|
||||
@ -87,6 +87,11 @@ cpu_probe_cache(void)
|
||||
curcpu()->ci_ci.icache_size = 32 K;
|
||||
assoc = 8;
|
||||
break;
|
||||
case MPC603:
|
||||
curcpu()->ci_ci.dcache_size = 8 K;
|
||||
curcpu()->ci_ci.icache_size = 8 K;
|
||||
assoc = 2;
|
||||
break;
|
||||
case MPC603e:
|
||||
case MPC603ev:
|
||||
case MPC604:
|
||||
@ -100,8 +105,8 @@ cpu_probe_cache(void)
|
||||
assoc = 4;
|
||||
break;
|
||||
default:
|
||||
curcpu()->ci_ci.dcache_size = PAGE_SIZE;
|
||||
curcpu()->ci_ci.icache_size = PAGE_SIZE;
|
||||
curcpu()->ci_ci.dcache_size = NBPG;
|
||||
curcpu()->ci_ci.icache_size = NBPG;
|
||||
assoc = 1;
|
||||
#undef K
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: uvm_page.c,v 1.76 2002/05/29 11:04:39 enami Exp $ */
|
||||
/* $NetBSD: uvm_page.c,v 1.77 2002/06/19 17:01:18 wrstuden Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1997 Charles D. Cranor and Washington University.
|
||||
@ -71,7 +71,7 @@
|
||||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__KERNEL_RCSID(0, "$NetBSD: uvm_page.c,v 1.76 2002/05/29 11:04:39 enami Exp $");
|
||||
__KERNEL_RCSID(0, "$NetBSD: uvm_page.c,v 1.77 2002/06/19 17:01:18 wrstuden Exp $");
|
||||
|
||||
#include "opt_uvmhist.h"
|
||||
|
||||
@ -866,6 +866,11 @@ uvm_page_recolor(int newncolors)
|
||||
if (newncolors <= uvmexp.ncolors)
|
||||
return;
|
||||
|
||||
if (uvm.page_init_done == FALSE) {
|
||||
uvmexp.ncolors = newncolors;
|
||||
return;
|
||||
}
|
||||
|
||||
bucketcount = newncolors * VM_NFREELIST;
|
||||
bucketarray = malloc(bucketcount * sizeof(struct pgflbucket),
|
||||
M_VMPAGE, M_NOWAIT);
|
||||
|
Loading…
Reference in New Issue
Block a user