Subject: Re: 1.5 ALPHA on Cyrix
To: Jared D. McNeill <jmcneill@invisible.yi.org>
From: Bill Sommerfeld <sommerfeld@orchard.arlington.ma.us>
List: port-i386
Date: 07/15/2000 09:32:27
> from pmap.c:
> #ifdef DIAGNOSTIC
> if (*zero_ptr)
> panic("pmap_zero_page_uncached: lock botch");
> #endif
uhh, at least in my copy, it's:
if (*zero_pte)
panic("pmap_zero_page: lock botch");
"pte" as in "page table entry"
>
> If I'm wrong, please somebody correct me, but from what I understand
> this checks to see if the page was actually zero'd. If not (*zero_ptr is
> non-zero), then it panics. This doesn't get checked unless DIAGNOSTIC is
> defined.
This checks to see if another page-zero is already in progress or was
interrupted while in progress.
*zero_pte = (pa & PG_FRAME) | PG_V | PG_RW; /* map in */
memset(zerop, 0, NBPG); /* zero */
*zero_pte = 0; /* zap! */
Hmm. I wonder..
Could you change the panic code to:
if (*zero_pte)
panic("pmap_zero_page: lock botch, pte %x", *zero_pte);
Maybe the "dirty" and/or "referenced" bits of the pte will be set and
the rest will be zero..
- Bill