On Mon, 2013-02-18 at 14:00 -0500, Kevin O'Connor wrote:
On Mon, Feb 18, 2013 at 08:31:01PM +0200, Gleb Natapov wrote:
Laszlo explained to me that the problem is that after reset we end up in SeaBIOS reset code instead of OVMF one. This is because kvm starts to execute from ffff0 instead of fffffff0 after reset and this memory location is modifying during CSM loading. Seabios solves this problem by detecting reset condition and copying pristine image of itself from the end of 4G to the end of 1M. OVMF should do the same, but with CSM it does not get control back after reset since Seabios reset vector is executed instead. Why not put OVMF reset code at reset vector in CSM built SeaBIOS to solve the problem?
Why not fix KVM so that it runs at fffffff0 after reset?
The only thing SeaBIOS could do is setup the segment registers and then jump to fffffff0, which is a bit of work for the same end result.
Well, what SeaBIOS already *does* is bash on the keyboard controller to cause a reset. Which *ought* to work too; I have a patch to at least fix *that*, by resetting the PAM setup in the i440.
But yes, KVM definitely ought to be running at 0xfffffff0. This is the *vm86* code that's broken, not the native KVM version.