Subject: Re: Extreme slowdown
To: None <Richard.Earnshaw@arm.com>
From: Reinoud Zandijk <imago@kabel065011.kabel.utwente.nl>
List: port-arm32
Date: 02/24/2001 21:29:45
Hi Richard,

On Sat, 24 Feb 2001, Richard Earnshaw wrote:
> There are some nasty diagnostics in pmap.c, which should probably be moved
> to DEBUG.
>
> arm32/pmap.c:
> #ifdef DIAGNOSTIC
>                 for (npv = pv; npv; npv = npv->pv_next)
>                         if (pmap == npv->pv_pmap && va == npv->pv_va)
>                                 panic("pmap_enter_pv: already in pv_tab pv
> %p: %
> 08lx/%p/%p",
>                                     pv, pv->pv_va, pv->pv_pmap, pv->
> pv_next);
> #endif

've moved this one to PMAP_DEBUG since this is one of the things that
really slow down the machine ... without this few likes the system time
usage is again within limits and is about 0.5-1% again running top =)

> [there seem to be 3 cases like this one, note it uses vm_physseg_find,
> which is horrendously expensive (does a binary search)!]
> #ifdef DIAGNOSTIC
>         int bank, off;
>
>         if ((bank = vm_physseg_find(atop(pa), &off)) != -1) {
>                 struct pv_entry *pv;
>
>                 pv = &vm_physmem[bank].pmseg.pvent[off];
>                 if (pv->pv_pmap != NULL)
>                         panic("pmap_kenter_pa: %08lx multiply mapped\n",
> pa);
>         }
> #endif

Well Richard, can you point out where these parts are? I cant find them !!
:(( wierd eh?

Cheers,
Reinoud