Author: neel
Date: Wed Apr 14 01:29:31 2010
New Revision: 206582
URL: http://svn.freebsd.org/changeset/base/206582

Log:
  Revert the vm_machdep.c part of r205072.
  
  This causes a panic in vm_thread_dispose() when it tries to add this kstack
  to the kstack cache. This happens only when 'td_kstack' is not (PAGE_SIZE * 2)
  bytes aligned and we have unmapped the page at that address in 
cpu_thread_alloc.
  
  Pointed out by: nwhitehorn@

Modified:
  head/sys/mips/mips/vm_machdep.c

Modified: head/sys/mips/mips/vm_machdep.c
==============================================================================
--- head/sys/mips/mips/vm_machdep.c     Wed Apr 14 01:24:09 2010        
(r206581)
+++ head/sys/mips/mips/vm_machdep.c     Wed Apr 14 01:29:31 2010        
(r206582)
@@ -214,16 +214,6 @@ cpu_thread_swapin(struct thread *td)
 {
        pt_entry_t *pte;
        int i;
-       vm_offset_t unused_kstack_page;
-
-       /*
-        * Unmap the unused kstack page.
-        */
-       unused_kstack_page = td->td_kstack;
-       if (td->td_md.md_realstack == td->td_kstack)
-               unused_kstack_page += (KSTACK_PAGES - 1) * PAGE_SIZE;
-
-       pmap_kremove(unused_kstack_page);
 
        /*
         * The kstack may be at a different physical address now.
@@ -249,19 +239,13 @@ cpu_thread_swapout(struct thread *td)
 void
 cpu_thread_alloc(struct thread *td)
 {
-       vm_offset_t unused_kstack_page;
        pt_entry_t *pte;
        int i;
 
-       if (td->td_kstack & (1 << PAGE_SHIFT)) {
+       if (td->td_kstack & (1 << PAGE_SHIFT))
                td->td_md.md_realstack = td->td_kstack + PAGE_SIZE;
-               unused_kstack_page = td->td_kstack;
-       } else {
+       else
                td->td_md.md_realstack = td->td_kstack;
-               unused_kstack_page = td->td_kstack +
-                                       (KSTACK_PAGES - 1) * PAGE_SIZE;
-       }
-       pmap_kremove(unused_kstack_page);
 
        td->td_pcb = (struct pcb *)(td->td_md.md_realstack +
            (td->td_kstack_pages - 1) * PAGE_SIZE) - 1;
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to