DragonFly BSD
DragonFly bugs List (threaded) for 2004-05
[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]

Re: Fwd: Re: buildworld panics with yesterday's kernel ...


From: Andrew Atrens <atrens@xxxxxxxxxxxxxxxxxx>
Date: Thu, 06 May 2004 00:43:07 -0400

Thanks Matt!

I'll give it a try tomorrow morning and report back ...

Cheers,

Andrew.


Matthew Dillon wrote:

>    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);
> }
> 
>  
>





[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]