DragonFly bugs List (threaded) for 2004-05
Re: Fwd: Re: buildworld panics with yesterday's kernel ...
I'll give it a try tomorrow morning and report back ...
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 :-(.
>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);