Subject: Re: CVS commit: src/sys/arch/i386/i386
To: Frank van der Linden <fvdl@netbsd.org>
From: Valeriy E. Ushakov <uwe@ptc.spbu.ru>
List: port-i386
Date: 08/12/2005 19:44:24
On Fri, Aug 12, 2005 at 17:43:29 +0200, Frank van der Linden wrote:
> On Fri, Aug 12, 2005 at 10:04:24AM +0000, YAMAMOTO Takashi wrote:
> >
> > Module Name: src
> > Committed By: yamt
> > Date: Fri Aug 12 10:04:24 UTC 2005
> >
> > Modified Files:
> > src/sys/arch/i386/i386: pmap.c
> >
> > Log Message:
> > pmap_enter: fix an uninitialized variable bug which can cause
> > "TLB IPI rendezvous failed".
>
> This change has no effect. The diff is:
>
> ==========
>
> Index: src/sys/arch/i386/i386/pmap.c
> diff -c src/sys/arch/i386/i386/pmap.c:1.183 src/sys/arch/i386/i386/pmap.c:1.184
> *** src/sys/arch/i386/i386/pmap.c:1.183 Sun May 29 15:58:33 2005
> --- src/sys/arch/i386/i386/pmap.c Fri Aug 12 10:04:24 2005
> ***************
> *** 3421,3430 ****
> /* Update page attributes if needed */
> if ((opte & (PG_V | PG_U)) == (PG_V | PG_U)) {
> #if defined(MULTIPROCESSOR)
> ! int32_t cpumask = 0;
> #endif
> shootdown_now:
> #if defined(MULTIPROCESSOR)
> pmap_tlb_shootdown(pmap, va, opte, &cpumask);
> pmap_tlb_shootnow(cpumask);
> #else
> --- 3421,3432 ----
> /* Update page attributes if needed */
> if ((opte & (PG_V | PG_U)) == (PG_V | PG_U)) {
> #if defined(MULTIPROCESSOR)
> ! int32_t cpumask;
> #endif
> shootdown_now:
> #if defined(MULTIPROCESSOR)
> + cpumask = 0;
> +
> pmap_tlb_shootdown(pmap, va, opte, &cpumask);
> pmap_tlb_shootnow(cpumask);
> #else
>
> ==========
>
> As you can see, the code still does the same thing. Just to make sure that it
> wasn't a compiler bug, I compared the assembly output (with stabs and labels
> stripped):
What about the case when we arrive there via goto shootdown_now; ?
SY, Uwe
--
uwe@ptc.spbu.ru | Zu Grunde kommen
http://www.ptc.spbu.ru/~uwe/ | Ist zu Grunde gehen