Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 07 Nov 2002 08:55:25 -0500 (EST)
From:      John Baldwin <jhb@FreeBSD.org>
To:        David Xu <davidxu@FreeBSD.org>
Cc:        cvs-all@FreeBSD.org, cvs-committers@FreeBSD.org
Subject:   RE: cvs commit: src/sys/i386/i386 exception.s genassym.c trap.c
Message-ID:  <XFMail.20021107085525.jhb@FreeBSD.org>
In-Reply-To: <200211070134.gA71YNn0045906@repoman.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help

On 07-Nov-2002 David Xu wrote:
> davidxu     2002/11/06 17:34:23 PST
> 
>   Modified files:
>     sys/i386/i386        exception.s genassym.c trap.c vm86.c 
>                          vm86bios.s 
>     sys/i386/include     pcb.h vm86.h 
>   Log:
>   1.Fix smp race between kernel vm86 BIOS calling and userland vm86 mode code,
>     remove global variable in_vm86call, set vm86 calling flag in PCB flags.
>   
>   2.Fix vm86 BIOS calling preempted problem by changing vm86_lock mutex type
>     from MTX_DEF to MTX_SPIN. vm86pcb is not remembered in thread struct,
>     when the thread calling vm86 BIOS is preempted by interrupt thread,
>     and later switching back to the thread would cause incorrect context be
>     loaded into CPU registers, this leads to kernel crash.

You could have left the mutex as MTX_DEF and just added a critical section
(critical_enter/exit) around the actual BIOS call.  This would be preferred.
Especially since you broke witness by not adding the vm86 mutex to the spin
lock list.  Which also means you didn't test this with WITNESS which is highly
recommended when changing locks.

-- 

John Baldwin <jhb@FreeBSD.org>  <><  http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve!"  -  http://www.FreeBSD.org/

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?XFMail.20021107085525.jhb>