Fwd: Re: buildworld panics with yesterday's kernel ...
    Matthew Dillon 
    dillon at apollo.backplane.com
       
    Wed May  5 15:14:25 PDT 2004
    
    
  
    Andrew, I fixed it.  I was calling pmap_qremove() with a bad argument
    in pmap_unmapdev().  It was totally my fault.  Damn. :-)
    I've committed an update to i386/i386/pmap.c, also included below.
    Note that the filesystem corruption you were getting prior to this
    commit was related to the same pmap_unmapdev code... the original
    FBsd code failed to remove the pte's that had been installed, which
    can corrupt kernel_map.  The older incarnation of the FP code could
    also cause corruption.  Since ACPICA and ACPICA5 are the only ones
    that actually call pmap_unmapdev(), this tended to result in corruption
    for people running acpica which is why it was so hard to track down.
    I had added the qremove to remove the pte's and fix the corruption,
    but I got the arguments wrong :-(.
						-Matt
Index: i386/i386/pmap.c
===================================================================
RCS file: /cvs/src/sys/i386/i386/pmap.c,v
retrieving revision 1.37
diff -u -r1.37 pmap.c
--- i386/i386/pmap.c	5 May 2004 19:26:38 -0000	1.37
+++ i386/i386/pmap.c	5 May 2004 22:03:45 -0000
@@ -3220,10 +3220,10 @@
 {
 	vm_offset_t base, offset;
 
-	pmap_qremove(va, size);
 	base = va & PG_FRAME;
 	offset = va & PAGE_MASK;
 	size = roundup(offset + size, PAGE_SIZE);
+	pmap_qremove(va, size >> PAGE_SHIFT);
 	kmem_free(kernel_map, base, size);
 }
 
    
    
More information about the Bugs
mailing list