On Mon, Jan 12, 2015 at 07:25:58PM +0100, Paolo Bonzini wrote:
On 12/01/2015 19:19, Kevin O'Connor wrote:
I was able to reproduce this locally with 16bit skifree on Windows Vista. (Interestingly, the problem doesn't occur on winxp.)
I put "there is a 16-bit freely downloadable version of skifree" on my personal list of trivia that ended up becoming useful. :D
5 - Like 4, but know that SeaBIOS doesn't use the bottom half of the first 1K of EBDA and use that. Same problems as 4.
The 1K EBDA has been around for 15 years now, hasn't it?
Way longer than that. Not sure when it was introduced, but my Phoenix "CBIOS" book from 1989 has it. So, at least 25 years.
6 - Try to detect if the code is called in VM86 mode and don't use the extra stack then - see patch below. The patch does make skifree work, but I'm uncertain if it would catch other users (eg, kvm on some intel chipsets?, some old dos program if dos is using emm386 mode).
No, KVM hides the fact that you are in protected mode. EMM386 would be affected, but then it is not impossible for old programs to require disabling it.
I was under the vague impression that kvm uses VM86 mode to run 16bit code on some Intel chipsets. The SMSW instruction isn't privileged so I didn't think it could be hidden.
All in all (5) or (6) both sound good.