Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 16 Mar 1997 21:34:48 -0800
From:      Sean Eric Fagan <sef@Kithrup.COM>
To:        jlemon@americantv.com
Cc:        current@freebsd.org
Subject:   Re: Gotcha in moving to post 4.4 lite2 merge ``world''.
Message-ID:  <199703170534.VAA10736@kithrup.com>
In-Reply-To: <19970316223415.24505.kithrup.freebsd.current@right.pcs>
References:  <199703161933.LAA09028@kithrup.com>; from Sean Eric Fagan on Mar 03, 1997 at 11:33:52AM -0800

next in thread | previous in thread | raw e-mail | index | archive | help
>What's happening (in the test case I'm working on) is that the vm86() 
>process is going into an infinite loop, and somehow or the other, an AST
>interrupt is not being generated.
>
>Interrupts are enabled, the kernel is getting called, the AST flag in 
>_ipending is set, but when _doreti gets hit, it just jumps back into vm86
>mode instead of calling trap().  Right now, I can recover by writing
>a garbage %ds on the frame, and forcing a call into trap() via a doreti fault.

msmith and I saw this early on, when we were using return_from_vm86()
instead of the normal code path.

For a while, I was hacking around it by calling userret() manually --
however, that shouldn't be an issue now, since you (jlemon) fixed the kernel
stack layout, allowing us to simply return via normal channels.

I've never been able to follow the low-level code through; Bruce is the only
one I know of who knows it as well as I want to.

Obviously, this note doesn't have a suggestion or a solution. :(

Sean.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199703170534.VAA10736>