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