From 3707e4c729f689ce826bae73b39bc24be41460a8 Mon Sep 17 00:00:00 2001 From: peter Date: Fri, 5 Jul 2002 00:42:09 +0000 Subject: Copy from sparc64/pmap.c rev 1.64 (Retrofit changes from i386/pmap.c rev 1.328-1.331.) but for uarea only. We still have our own broken kstack code here. --- sys/ia64/ia64/pmap.c | 32 +++++++++----------------------- 1 file changed, 9 insertions(+), 23 deletions(-) (limited to 'sys') diff --git a/sys/ia64/ia64/pmap.c b/sys/ia64/ia64/pmap.c index 543f2ed..3c824d6 100644 --- a/sys/ia64/ia64/pmap.c +++ b/sys/ia64/ia64/pmap.c @@ -720,24 +720,18 @@ pmap_new_proc(struct proc *p) u_int i; /* - * Allocate object for the upages. + * Allocate object for the upage. */ - upobj = p->p_upages_obj; - if (upobj == NULL) { - upobj = vm_object_allocate(OBJT_DEFAULT, UAREA_PAGES); - p->p_upages_obj = upobj; - } + upobj = vm_object_allocate(OBJT_DEFAULT, UAREA_PAGES); + p->p_upages_obj = upobj; /* * Get a kernel virtual address for the U area for this process. */ - up = (vm_offset_t)p->p_uarea; - if (up == 0) { - up = kmem_alloc_nofault(kernel_map, UAREA_PAGES * PAGE_SIZE); - if (up == 0) - panic("pmap_new_proc: upage allocation failed"); - p->p_uarea = (struct user *)up; - } + up = kmem_alloc_nofault(kernel_map, UAREA_PAGES * PAGE_SIZE); + if (up == 0) + panic("pmap_new_proc: upage allocation failed"); + p->p_uarea = (struct user *)up; for (i = 0; i < UAREA_PAGES; i++) { /* @@ -787,16 +781,8 @@ pmap_dispose_proc(struct proc *p) vm_page_free(m); } pmap_qremove(up, UAREA_PAGES); - - /* - * If the process got swapped out some of its UPAGES might have gotten - * swapped. Just get rid of the object to clean up the swap use - * proactively. NOTE! might block waiting for paging I/O to complete. - */ - if (upobj->type == OBJT_SWAP) { - p->p_upages_obj = NULL; - vm_object_deallocate(upobj); - } + kmem_free(kernel_map, up, UAREA_PAGES * PAGE_SIZE); + vm_object_deallocate(upobj); } /* -- cgit v1.1