Date: Sat, 09 Jan 1999 17:30:03 +0300 From: Dmitrij Tejblum <dima@tejblum.dnttm.rssi.ru> To: Stephen McKay <syssgm@dtir.qld.gov.au> Cc: Dmitrij Tejblum <dt@FreeBSD.ORG>, cvs-committers@FreeBSD.ORG Subject: Re: cvs commit: src/sys/i386/i386 pmap.c Message-ID: <199901091430.RAA00524@tejblum.dnttm.rssi.ru> In-Reply-To: Your message of "Sat, 09 Jan 1999 23:59:13 %2B1000." <199901091359.XAA22824@nymph.dtir.qld.gov.au>
next in thread | previous in thread | raw e-mail | index | archive | help
Stephen McKay wrote:
> On Thursday, 7th January 1999, Dmitrij Tejblum wrote:
>
> >dt 1999/01/07 14:15:52 PST
> >
> > Modified files:
> > sys/i386/i386 pmap.c
> > Log:
> > Make pmap_ts_referenced check more than 1 pv_entry. (One should be carefull
> > when move elements to the tail of a list in a loop...)
> >
> > Revision Changes Path
> > 1.216 +5 -5 src/sys/i386/i386/pmap.c
>
> So it's now a big NOP instead of executing the loop once.
Ahh! That is because I made the patch month or two ago, and "simplified"
it before commit, when already forgot it ;-/ My original patch appears
to be more correct: (btw, I run it on 4 production servers all the
time, and didn't notice degradation...)
--- pmap.c Sat Dec 12 12:58:24 1998
+++ pmap.c Sat Dec 12 13:38:40 1998
@@ -3205,7 +3205,7 @@
int
pmap_ts_referenced(vm_offset_t pa)
{
- register pv_entry_t pv;
+ register pv_entry_t pv, pvf, pvn;
pv_table_t *ppv;
unsigned *pte;
int s;
@@ -3226,9 +3226,11 @@
/*
* Not found, check current mappings returning immediately if found.
*/
- for (pv = TAILQ_FIRST(&ppv->pv_list);
- pv;
- pv = TAILQ_NEXT(pv, pv_list)) {
+ pvf = 0;
+ for (pv = TAILQ_FIRST(&ppv->pv_list); pv && pv != pvf; pv = pvn) {
+ if (!pvf)
+ pvf = pv;
+ pvn = TAILQ_NEXT(pv, pv_list);
TAILQ_REMOVE(&ppv->pv_list, pv, pv_list);
/*
Thanks for pointiong it out!
> There's no need for all that removing and inserting anyway. Zap it and
> the bugs will depart for other dark parts of the code.
Well, I think since the code was added in March 1998 or so as an optimization,
it should make some sense, right?
Dima
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe cvs-all" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199901091430.RAA00524>
