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>