Date: Tue, 17 Sep 2002 10:42:14 -0700 From: Terry Lambert <tlambert2@mindspring.com> To: Nate Lawson <nate@root.org> Cc: Martin Blapp <mb@imp.ch>, current@freebsd.org, peter@freebsd.org Subject: Re: Crashdumps available for download ... please help Message-ID: <3D876976.3126945A@mindspring.com> References: <Pine.BSF.4.21.0209171014370.40800-100000@root.org>
next in thread | previous in thread | raw e-mail | index | archive | help
Nate Lawson wrote:
> > 0xc02fd315 is in pmap_remove_pages (/usr/src/sys/i386/i386/pmap.c:2941).
> > 2936 #ifdef PMAP_REMOVE_PAGES_CURPROC_ONLY
> > 2937 pte = vtopte(pv->pv_va);
> > 2938 #else
> > 2939 pte = pmap_pte_quick(pv->pv_pmap, pv->pv_va);
> > 2940 #endif
> > 2941 tpte = *pte;
> > 2942
> > 2943 if (tpte == 0) {
> > 2944 printf("TPTE at %p IS ZERO @ VA %08x\n",
> > 2945 pte, pv->pv_va);
>
> Try building your kernel with "options PMAP_REMOVE_PAGES_CURPROC_ONLY" and
> see if the panic goes away. If that works, the problem is
> pmap_pte_quick().
>
> In looking at pmap_pte_quick, either it is wrong or line 2941 is wrong in
> always dereferencing pte. pmap_pte_quick can return NULL (well 0). It
> seems like pmap_pte_quick is wrong because vtopte() never returns NULL,
> just (PTmap + i386_btop(va)) i.e. a valid base plus some offset.
Obvious fix?
#ifndef PMAP_REMOVE_PAGES_CURPROC_ONLY
pte = pmap_pte_quick(pv->pv_pmap, pv->pv_va);
if (pte == NULL)
#endif
pte = vtopte(pv->pv_va);
-- Terry
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3D876976.3126945A>
