==== //depot/projects/sparc64/sys/sparc64/conf/SUN4U#25 - /usr/p4/sparc64/sys/sparc64/conf/SUN4U ==== --- /tmp/tmp.80268.0 Mon Mar 11 23:57:41 2002 +++ /usr/p4/sparc64/sys/sparc64/conf/SUN4U Sat Mar 9 17:45:04 2002 @@ -8,7 +8,7 @@ hints "SUN4U.hints" option KTRACE -option SMP +#option SMP device apb device ebus ==== //depot/projects/sparc64/sys/sparc64/include/pv.h#5 - /usr/p4/sparc64/sys/sparc64/include/pv.h ==== --- /tmp/tmp.80268.1 Mon Mar 11 23:57:41 2002 +++ /usr/p4/sparc64/sys/sparc64/include/pv.h Mon Mar 11 22:31:06 2002 @@ -48,6 +48,7 @@ extern int pv_entry_high_water; extern struct pv_entry *pvinit; +void *pv_allocf(uma_zone_t zone, int bytes, u_int8_t *flags, int wait); pv_entry_t pv_alloc(void); void pv_free(pv_entry_t pv); ==== //depot/projects/sparc64/sys/sparc64/sparc64/pmap.c#74 - /usr/p4/sparc64/sys/sparc64/sparc64/pmap.c ==== --- /tmp/tmp.80268.2 Mon Mar 11 23:57:42 2002 +++ /usr/p4/sparc64/sys/sparc64/sparc64/pmap.c Mon Mar 11 22:30:10 2002 @@ -542,11 +542,17 @@ panic("pmap_init: vm_map_find"); } +#if 0 pvzone = &pvzone_store; pvinit = (struct pv_entry *)kmem_alloc(kernel_map, vm_page_array_size * sizeof (struct pv_entry)); zbootinit(pvzone, "PV ENTRY", sizeof (struct pv_entry), pvinit, vm_page_array_size); +#else + pvzone = zinit("PV ENTRY", sizeof (struct pv_entry), 0, 0, 0); + uma_zone_set_allocf(pvzone, pv_allocf); + uma_prealloc(pvzone, vm_page_array_size); +#endif pmap_initialized = TRUE; } @@ -564,7 +570,11 @@ TUNABLE_INT_FETCH("vm.pmap.shpgperproc", &shpgperproc); pv_entry_max = shpgperproc * maxproc + vm_page_array_size; pv_entry_high_water = 9 * (pv_entry_max / 10); +#if 0 zinitna(pvzone, &pvzone_obj, NULL, 0, pv_entry_max, ZONE_INTERRUPT, 1); +#else + uma_zone_set_obj(pvzone, &pvzone_obj, pv_entry_max); +#endif } /* ==== //depot/projects/sparc64/sys/sparc64/sparc64/pv.c#25 - /usr/p4/sparc64/sys/sparc64/sparc64/pv.c ==== --- /tmp/tmp.80268.3 Mon Mar 11 23:57:42 2002 +++ /usr/p4/sparc64/sys/sparc64/sparc64/pv.c Mon Mar 11 22:27:42 2002 @@ -61,7 +61,9 @@ #include vm_zone_t pvzone; +#if 0 struct vm_zone pvzone_store; +#endif struct vm_object pvzone_obj; int pv_entry_count; int pv_entry_max; @@ -79,6 +81,14 @@ wakeup(&vm_pages_needed); } return (zalloc(pvzone)); +} + +void * +pv_allocf(uma_zone_t zone, int bytes, u_int8_t *flags, int wait) +{ + + *flags = UMA_SLAB_PRIV; + return (void *)kmem_alloc(kernel_map, bytes); } void